Impression de plusieurs userforms

Imer2007

XLDnaute Occasionnel
Bonjour le forum,

J'ai une question toute simple mais je n'ai pas trouvé mon bonheur dans la recherche alors j'espère que quelqu'un pourra m'aiguiller.

Je souhaiterais pouvoir imprimer plusieurs userforms (6 pour etre exact) avec un seul bouton.
Pour le moment je sais faire l'impression d'un userform (copie écran > collage dans une feuille > mise en page et impression) via VBA.

J'ai tenté des choses mais à priori ca ne fonctionne pas... Du coup j'ai du créé un bouton "IMPRIMER" sur chaque userform.

Le principe étant le suivante:
1- clique sur le bouton "IMPRIMER"
2- copie ecran du userfom principal
3- coller dans la feuille "Imprimer", mise en page et impression de la copie d'écran
4- suppression de la copie d'écran
5- ouverture du userform 2
6- copie ecran du userfom 2
7- coller dans la feuille "Imprimer", mise en page et impression de la copie d'écran 2
8- suppression de la copie d'écran 2
9- ouverture du userform 3
10- copie ecran du userfom 3
11- coller dans la feuille "Imprimer", mise en page et impression de la copie d'écran 3
12- suppression de la copie d'écran 3
Etc.

Si c'est pas possible c'est pas grave, c'était juste histoire d'alléger mon boulot (faire un seul clic au lieu de 6).

Le code pour imprimer un formulaire

Private Sub imprime_btn_Click()
'créé la copie d'écran
Dim img As Object
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents

'cache tous les formulaire déjà ouverts pour éviter de bloquer lors de l'apercu
Me.Hide
Menu.Hide

'sélectionner la feuille ou coller la copie d'écran
Sheets("Imprimer").Select
Range("A1").Select
ActiveSheet.Paste

'Mise en page de la feuille
With Feuil21.PageSetup
.PrintArea = "A1:J49"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.CenterHorizontally = True
.CenterVertically = True
End With

'Impression de la feuille
Sheets("Imprimer").PrintOut Copies:=1, Collate:=True

'RAZ de la feuille
For Each img In Worksheets("Imprimer").Shapes
img.Delete
Next

'Réaffichage du userform
Sheets("Menu").Select
visu_hab.Show

End Sub
 

Imer2007

XLDnaute Occasionnel
Re : Impression de plusieurs userforms

Bonjour James,

Effectivement j'y ai pensé à la boucle mais ca ne marche pas.
J'ai testé pas à pas et je vois où est le problème mais pour le résoudre je ne sais pas trop comment m'y prendre.

Comme j'ai dit, l'impression écran du userform principal fonctionne nickel mais la suite des impressions déconne.

Le code que j'ai créé est le suivant:

Private Sub imprime_btn_Click()
Dim img As Object
'impression écran
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents

'Collage et mise en page
Sheets("Imprimer").Select
Range("A1").Select
ActiveSheet.Paste
With Feuil21.PageSetup
.PrintArea = "A1:J49"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.CenterHorizontally = True
.CenterVertically = True
End With

'on vérifie que le bouton de commande du USF2 est valide
If visu_gdt_btn.Enabled = True Then
visu_gdt.Show
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
Unload visu_gdt
Sheets("ImprimerGDT").Select
Range("A1").Select
ActiveSheet.Paste
With Feuil22.PageSetup
.PrintArea = "A1:G52"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.CenterHorizontally = True
.CenterVertically = True
End With
End If

'On imprime les feuilles sélectionnées
Sheets("Imprimer").PrintOut Copies:=1, Collate:=True
Sheets("ImprimerGDT").PrintOut Copies:=1, Collate:=True

'RAZ des images du classeur
For Each img In ActiveWorkbook.ActiveSheet.Shapes
img.Delete
Next
Sheets("Menu").Select
End Sub

Mais mon problème vient de là:
If visu_gdt_btn.Enabled = True Then
visu_gdt.Show

Il ouvre le useform visu_gdt et du coup sort de la boucle. Par conséquent il ne peut imprimer le userform comme je le souhaite. Peut être y a-t-il une autre commande que show ?
 

Imer2007

XLDnaute Occasionnel
Re : Impression de plusieurs userforms

Bonjour,

Bon je suppose 2 choses :
-soit c'est impossible (mais dans ce cas, vous me l'auriez précisé)
- soit vous voyez pas ce que je demande (ce que je pense)

Pour éclairer les lanternes de vos génies, je vous joins un petit exemple qui j'espère vous fera mieux comprendre ce que je demande.

D'avance merci à ceux qui se pencheront sur ce problème !
 

Pièces jointes

  • test-impression.xls
    35 KB · Affichages: 84

Imer2007

XLDnaute Occasionnel
Re : Impression de plusieurs userforms

Bonjour James et merci de ton aide,

Effectivement là ca m'imprime les deux formulaires.
La seule précision que j'ai oublié de dire c'est que j'imprime à partir du formulaire principal (dans l'exemple il faudrait que le userform 1 soit ouvert, on clique sur "IMPRIMER" et ca imprime le USF1 et le USF2).
Or dans l'exemple, le bouton d'impression ici est directement affiché sur la feuille.

Mais bon si ce n'est pas possible c'est pas grave, j'ai créé un bouton "imprimer" sur chaque formulaire. Ca nécessite juste d'ouvrir tous les userforms pour faire les impressions.
 

Imer2007

XLDnaute Occasionnel
Re : Impression de plusieurs userforms

Bonjour James,

Le principe est de pouvoir imprimer plusieurs userforms à partir d'un userform.

Dans l'exemple que tu m'as envoyé, j'imprime tous les USF à partir d'un bouton de commande sur une feuille.
Ce que je souhaitais c'était d'imprimer tous les USF à partir d'un bouton de commande situé sur un userform.

Mais bon, comme je l'ai expliqué, si ce n'est pas possible, ce n'est pas grave.
 

Discussions similaires