Comment imposer un ordre d’impression ?
Bonjour all,
Voici deux jours que je joue avec les macros Excel.
Je m’y suis intéressé car je veux automatiser une impression de document.
Explication du projet
Dans une feuille Excel j’ai une liste avec numéro de fiche, marque et type d’appareil …
Une fiche est crée avec les données de cette liste, jusque là pas de macro
Puis vient la macro que je crée, elle parcourt la liste, elle active la premier fiche, l’imprime, de cette fiche la macro en retire un chemin et un non de ficher PDF qu’elle imprime aussi puis passe à la suivante
Le problème
Je crois que la macro fonctionne bien mais mon problème se situe dans l’envoie vers l’imprimante.
Les fichiers Excel sont beaucoup plus rapide à être traité, donc mon ordre imprimé est « feuilles d’entêtes puis les PDF »
J’ai eu deux réactions à ce problème la première une MsgBox "coucou" fonctionne mais on oublier d’allé chercher ça tasse de café :cry:« mode automatique 0 »
La dernière, une tempo, mais là on peut même allé chercher les croissants en plus
Je ne sais pas si cela est réalisable, mais la solution serait de garder en mémoire les ordres d’impression et de les envoyées à la fin, mais comment faire ?
:oops: Rappel : je suis novice tout frai de deux jours donc si vous avez des critiques constructives je suis preneur
Voici mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Sub Imptout()
Dim hwnd As Long
Dim a As Variant
Dim b As Variant
Dim IMPRIMEPDF As Variant
Dim Dossier As String
Dim MARQUE As Variant
For Each c In Sheets("Récapitulatif").Range("B:B")
If c.Interior.ColorIndex = 3 Then
c.Copy
Sheets("FICHE").Select
Range("B1").Select
ActiveSheet.Paste
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
MARQUE = Sheets("FICHE").Range("B17").Value
On Error Resume Next
Dossier = "\\Chemin faisant\sur le serveur \" & MARQUE & "\" 'Chemin du dossier !
'On Error Resume Next
a = Sheets("FICHE").Range("B18").Value
b = ".pdf"
IMPRIMEPDF = a & b
'On Error Resume Next
ShellExecute hwnd, "print", Dossier & IMPRIMEPDF, "", "", SW_SHOWNORMAL ' A la place de "open", mettre "print" pour imprimer
On Error GoTo 0
Attente (5)
Sheets("Récapitulatif").Select
End If
Next c
End Sub
Sub Attente(Attente As Integer)
Dim Start, PauseTime
PauseTime = 7 'Secondes d'attente
Start = Timer
Do While Timer < Start + PauseTime
DoEvents
Loop
End Sub |
merci d'avance
Mic