Macro boucle - attente fin d'impression

  • Initiateur de la discussion Initiateur de la discussion luuwi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

luuwi

Guest
Bonjour à tous,

Je commence tout juste à me servir des macros sur Excel et tournant un peu en rond, je me suis décidé à m'inscrire sur ce forum.

J'ai créé une macro très simple permettant d'imprimer successivement des formulaires appelés d'un tableau de donnée (le tout sous excel). La macro est la suivante :

Sub Impression()


Sheets("Impression").Select
Nbre_locaux = Range("D3").Value



For i = 1 To Nbre_locaux

If Cells(6 + i, 5).Value = 1 Then
Cells(6 + i, 2).Copy
Sheets("fiche local").Select
Range("E1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Calculate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Impression").Select
End If
Next i

End Sub


Tout fonctionne à merveille quand je n'ai pas à sortir des fichiers avec pdf creator. Car même si la macro permet d'imprimer les lignes une a une de façon successive, il faut savoir que le temps pour créer un pdf varie d'une fiche à l'autre (pas le même nombre de données), ce qui au final sort les fiches dans le désordre et complique énormément la tâche quand il faut tout renommer.

En gros ma question est : Comment forcer la boucle à attendre la fin de l'impression d'une fiche avant de passer à la suivante ?

Merci d'éclairer ma lanterne
Luuwi
 
Re : Macro boucle - attente fin d'impression

Salut, j'essairais cette solution qui n'est probablement pas la meilleur car ton classeur sera gelé le temps de l'opération mais bon je n'ai pas d'autres idées..

Code:
Sub Impression()


Sheets("Impression").Select
Nbre_locaux = Range("D3").Value



For i = 1 To Nbre_locaux

If Cells(6 + i, 5).Value = 1 Then
Cells(6 + i, 2).Copy
Sheets("fiche local").Select
Range("E1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Calculate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Impression").Select
Application.Wait Now + TimeSerial(0, 0, 5)
End If
Next i

End Sub

Ceci aura pour effet d'attendre 5 secondes avant d'exécuter le Next, change le 5 pour ce que tu veux. Par contre, il doit exister une meilleure solution que ça.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
370
Réponses
4
Affichages
735
Réponses
2
Affichages
772
Retour