Impression, avec un random associé
Bonjour,
Je suis à la recherche d'une solution à un soucis qui me paraissait simple...
J'ai un onglet contenant une page de calcul et la page de correction associée.
J'ai créé un bouton lançant un userform.
Dans ce userform, je donne le nombre d'exemplaire que je souhaite et valide l'impression.
Ce que je n'arrive pas à faire, en contrôlant le nombre d'exemplaire, je fais un random.
Je m'explique : Si je veux 3 exemplaires, j'ai donc l'onglet qui s'imprime, puis un random, puis une deuxième impression du même onglet, puis un random et enfin la troisième impression (bien sur si je mets 7, le même schéma se répète).
Enfin, je veux que cette commande d'impression soit faite en une seule fois (pas à valider "impression" autant de fois que le nombre renseigné) comme si cela était qu'un seul fichier.
En vous remerciant !!
Bonjour Erwann,
Dans ce cas, si c'est ok pour vous (?), je pense que le plus simple c'est de créer dans votre fichier autant de feuilles (donc de plages) que d'impressions requises. Pour reprendre votre exemple on recrérait 3x la plage A2:DC23 avec chaque groupe différent. Ensuite il faudrait imprimer tout le document.
Autrement je ne vois pas comment lancer 1 impression uniquement, il faudrait obligatoirement lancer 3 impressions.
EDIT : j'ai peut etre mal compris, une alternative pourrait être de lancer en réalité 3 impressions en "arrière-plan" (= sans vous demander quoi que ce soit), et avant de lancer cela on mettrait une petite MsgBox qui demande une confirmation (avec éventuellement un check par exemple si >50 feuilles).
C'est une alternative beaucoup + simple en terme de code.
Ci-après le code correspondant à ma proposition 2 (le EDIT) à mettre dans le code de l'userform (remplacez l'ancien) :
NB : utilisation de la dernière imprimante utilisée (c'est paramétrable)
Private Const MAX_IMPRESSIONS As Long = 50
Private Sub ValidImpr_Click()
' nombre de feuilles a imprimer
Dim nbFeuilles As Long: nbFeuilles = CLng(Me.NBImpr)
' verification de la limite
If nbFeuilles > MAX_IMPRESSIONS Then
If MsgBox("Plus de " & nbFeuilles & " impressions sont prévues !!" & vbCrLf & _
"Etes-vous sur de vouloir continuer ?", vbExclamation + vbYesNo, "ATTENTION") = vbNo Then
Exit Sub
End If
End If
' demande confirmation
If MsgBox(nbFeuilles & " impression(s) sont prévues." & vbCrLf & "Confirmer ?", vbInformation + vbYesNo, "CONFIRMATION") = vbYes Then
Dim i As Long
For i = 1 To nbFeuilles
Feuil1.Calculate
Feuil1.PrintOut Preview:=False
Next i
End If
' Fermeture de la fenêtre
Unload Me
End Sub