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.

30test.xlsx (27.24 Ko)

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 , le forum,

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
38test.xlsm (45.34 Ko)

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
39test.xlsm (45.38 Ko)

Cordialement,

Rechercher des sujets similaires à "impression fonction valeur"