rv35buro
le 17 novembre 2008 à 15h45
Bonjour, Etant novice je fais appel à vos lumières. Je n'arrive pas à faire marcher cette macro. En fait j'ai un classeurs de 50 feuilles et la 1ère me
sert de sommaire avec une selection totale ou partielle par case à cocher d'une
croix pour imprimer toutes les feuilles ou les feuilles selectionnée.
voilà ma macro :
Sub Imprim_feuille()
'Déclaration des variables-----------------
Dim X As Long
With Sheets("menu")
'avec le préfixe
'début de boucle -------------------------
For X = 2 To .Range("B65536").End(xlUp).Row
'Pour X = 2 jusqu'à la dernière cellule non-vide de B de menu
'le "." devant Range veut dire qu'il faut associé le préfixe défini par with
'ce qui revient à écrire Sheets("menu").Range("B65536").End(xlUp).Row
If .Range("B" & X) = "X" Then
'si Bx="X" alors
Sheets(F.Range("F1" & X).Value).Select
'sélectionner la feuille du nom dans Ax de menu
ActiveWindow.SelectedSheets.PrintPreview
'Imprimer les feuilles sélectionnées
F.Range("B" & X).ClearContents
'effacer le "X" de la colonne B
End If
'Fin de test
Next X
'Fin de boucle ----------------------------
End With
'fin préfixe
End Sub
Merci de votre réponse.
RV35BURO
-->Message édité par totoftotof le 17/11/2008 15:55:35<--
michel_m
le 17 novembre 2008 à 16h51
Bonjour,
lorsqu'une macro ne marche pas , ce qu'on sait tous bien faire, la macro s'atrête sur la ligne et envoie un message d'erreur: ce serait utile et sympa que tu nous décrives tout çà!....
En attedant, cette ligne m'a paru bizarre
Sheets(
F.Range("F1" & X).Value).Select
F, c'est quoi ? : je n'ai pas vu de déclarations ni d'affectation de valeur...
si F est une feuille( ? pas de boule de cristal sur moi), j'écrirais plutôt
Sheets(F). range...
d'autre part,il y a une contradiction apparente entre "value" qui renvoie la valeur dans la cellule (mais il n'y a pas de variable en début de ligne pour affecter cette valeur) et la méthode "select" qui rend la cellule active...
-->Message édité par michel_m le 17/11/2008 16:54:32<--
-------
Amicalement
Michel
rv35buro
le 17 novembre 2008 à 17h24
Merci mais j'y comprends rien.
J'ai un classeur de 50 feuilles de F1 à F50
la F1 s'appelle MENU
dans ce menu en colonne C à partir de la ligne 14 est de 2 en 2 soit sur chaque ligne pair je mets une croix pour selectionner la page f1 à f50 que je veux imprimer. une fois l'impression effectuée la macro supprime les croix de cette colonne E.
On m'avait écrit cette macro, mais je n'y arrive pas à la faire marcher d'autan que j'ai modifié les lettres avec différents TEST.
Merci de venir à mon secours.
A bientôt
RV35BURO
michel_m
le 17 novembre 2008 à 18h17
Excuses moi de t'avoir dérangé!
-->Message édité par michel_m le 17/11/2008 18:18:25<--
Gorfael
le 17 novembre 2008 à 23h20
Salut rv35buro et le forum
Sub Imprim_feuille()
'Déclaration des variables-----------------
Dim X As Long
With Sheets("menu")
'avec le préfixe
'début de boucle -------------------------
For X = 2 To .Range("B65536").End(xlUp).Row
'Pour X = 2 jusqu'à la dernière cellule non-vide de B de menu
'le "." devant Range veut dire qu'il faut associé le préfixe défini par with
'ce qui revient à écrire Sheets("menu").Range("B65536").End(xlUp).Row
If .Range("B" & X) = "X" Then
'si Bx="X" alors
Sheets(F.Range("F1" & X).Value).Select
'sélectionner la feuille du nom dans Ax de menu
ActiveWindow.SelectedSheets.PrintPreview
'Imprimer les feuilles sélectionnées
F.Range("B" & X).ClearContents
'effacer le "X" de la colonne B
End If
'Fin de test
Next X
'Fin de boucle ----------------------------
End With
'fin préfixe
End Sub
Merci de votre réponse.
RV35BURO
ça ne sert à rien de recopier
une macro en la modifiant sans comprendre le code! Pour chaque ligne que tu ne comprend pas, demande des explications, n'essaies jamais de modifier sans comprendre, sauf si tu travailles sur un fichier d'essais. Le code me rappelle quelque chose, mais...
Si quelqu'un fait l'effort de te répondre, essaies de comprendre ce qu'il dit et d'y répondre. Si tu ne comprends pas, demandes-lui des précisions, mais ne réponds pas comme si tu t'en foutais!
michel_m te demande la ligne en erreur et le message retourné par excel.
Tu lances ta macro par Menu Outils>>Macro>>Macros
tu sélectionnes la macro Imprim_feuille et tu utilises le bouton "MODIFIER"
tu exécute la ligne surlignée par la touche F8
On n'est ni dans ta tête, ni dans ton écran. On ne connaît que ce qui apparaît sur les postes.
dans ce menu en colonne C à partir de la ligne 14 est de 2 en 2 soit sur chaque ligne pair je mets une croix pour selectionner la page f1 à f50 que je veux imprimer. une fois l'impression effectuée la macro supprime les croix de cette colonne E.
Fais-le lire à quelqu'un qui ne connaît pas le problème sans rien essayer de lui expliquer et demande lui ce qu'il comprend.
Parce que moi, je ne comprends rien n'ayant pas le décodeur, ni une boule de cristal en état!!!
D'après la macro, tu mets en aperçu (avec des erreurs de code) les feuilles dont le nom est en colonne A si il y a "X" en B (ça on sait faire).
Mais sur tes explications c'est les "X" en C que tu effaces en E et pas de noms

???
si x=9 => ("F1" & X)="F19"
si x=10=> ("F1" & X)="F110"
Je nage dans le potage. Sans compter F, variable fantôme
Donne une explication
cohérente du but de ta macro et on t'aidera à la faire!
A+
-->Message édité par Gorfael le 17/11/2008 23:22:24<--
-------
Plus tu es moins précis, moins les réponses sont plus adaptées!
La qualité et la précision de la réponse sont proportionnelles à celles de la question, et la conditionne.