Impression en fonction de la valeur d'une cellule
Bonjour,
J'ai recherché sur plusieurs sites et je ne trouve pas de solution à mon problème.
Je suis novice avec Excel mais j'essai quand même d'améliorer les fichiers avec lesquels je travaille.
J'ai donc besoin de vous.
Pour créer des étiquettes de traçabilité j'utilise Excel et selon les valeurs présentent sur une feuille j'imprime 2 ou 3 feuilles.
Pour l'instant je vais cela à la main (j'ai environ 40 feuilles à imprimer par semaine..)
Il me faudrait une macro qui regarde la valeur d'une cellule dans mon cas (1, 2 ou 3) et qui en fonction de la valeur de cette cellule va imprimer la deuxième feuille 3 fois et la troisième feuille 1 fois par exemple. Comme ca il ne me resterait plus qu'à inscrire sur ma feuille 1 le nombre de copie que je veux de chaque feuille.
S'il y a moyen en plus de faire en sorte que la première page de s'imprime jamais je suis preneur.
Merci par avance à celles et ceux qui prendront le temps de m'aider.
Bonjour, sans fichier exemple c'est par évident de faire un codage correcte.
Vous pouvez aussi utiliser l'enregistreur de macro afin de vous enregistrer la première fois. Ensuite vous affecter vos macros
à des boutons en fonction des options que vous souhaitez.
Bonjour,
J'ai essayé d'enregistrer une macro à la main, cependant il y a trop de variable.
Voici le fichier.
Dans mon cas, il faudrait que la feuille 2 "bleu" soit imprimée 5 fois ; la feuille 3 "rouge" soit imprimée 2 fois et la feuille 4 "vert" soit imprimée 3 fois. Et que je puisse rajouter autant de feuille que je veux (je me débrouillerai à copier le code en changeant les valeurs).
De plus s'il y a moyen de faire en sorte d'exclure la feuille numéro 1 de l'impression je suis preneur.
Merci par avance.
Bonjour Romaric PIN, Xmenpl
Un essai....non testé...
Function WsExist(onglet) As Boolean 'Vérifie si la feuille existe
On Error Resume Next
WsExist = Worksheets(onglet).Index
End Function
Sub Impression()
Dim lig%, derlig%, nbcopy%
With Sheets("Données") '.............................................agit sur cette feuille
derlig = .Range("A" & Rows.Count).End(xlUp).Row '...................dernière ligne en fonction de la colonne A
lig = 8 '..........................................................ligne de départ
Do While lig <= derlig '...........................................boucle jusu'à la dernière ligne
onglet = .Range("B" & lig): nbcopy = .Range("I" & lig) '..........définit nom onglet et nombre de copies
If WsExist(onglet) Then Sheets(onglet).PrintOut Copies:=nbcopy '.si l'onglet existe, on imprime le(s) copie(s)
lig = lig + 1 '....................................................passe à la ligne suivante
Loop
End With
End Sub
Cordialement,
C'est parfait ! Cela fait exactement ce dont j'ai besoin.
J'ai fini de l'adapter à mon excel principal et tout fonctionne !
J'ai juste un petit message qui s'affiche :
Erreur d'exéction '1004':
La méthode PrintOut de la classe Worksheet a écoué.
Je pense tout simplement que cela vient du fait que la macro essai d'imprimer la page suivante et que comme elle n'est pas activée, la macro pense qu'il y a un problème alors que c'est normal (Je suis débutant.. est-ce bien cela ?).
Merci beaucoup !
Re,
Merci pour ton retour,
Autre tentative....à tester....
Function WsExist(onglet) As Boolean 'Vérifie si la feuille existe
On Error Resume Next
WsExist = Worksheets(onglet).Index
End Function
Sub Impression()
Dim lig%, derlig%, nbcopy%, i%
With Sheets("Données") '.............................................agit sur cette feuille
derlig = .Range("A" & Rows.Count).End(xlUp).Row '...................dernière ligne en fonction de la colonne A
lig = 8 '..........................................................ligne de départ
Do While lig <= derlig '...........................................boucle jusu'à la dernière ligne
onglet = .Range("B" & lig): nbcopy = .Range("I" & lig) '..........définit nom onglet et nombre de copies
If WsExist(onglet) Then '........................................si l'onglet existe
For i = 1 To nbcopy
Sheets(onglet).PrintOut '..................................... on imprime la(les) copie(s)
Next i
End If
lig = lig + 1 '....................................................passe à la ligne suivante
Loop
End With
End Sub
Cordialement,