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é« 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 ?
Rappel : je suis novice tout frai de deux jours donc si vous avez des critiques constructives je suis preneur
Voici mon code
merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Mic
Partager