Bonjour,

je suis nouveau sur le forum, j'ai un petit soucis au niveau de la création d'une macro Excel.
Contexte : Je dois faire une impression pdf d'un fichier Excel grace à "Cut pdf writer" et le stocker sur le réseau. "Cut pdf writer" met par défaut le fichier pdf dans "mes documents"
Mon PB : Plantage de la macro aléatoire, soit au niveau de la fermeture de la fenêtre d'enregistrement, soit au niveau de la copie du fichier.

Ma première version de code :
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
' Récupération du nom du fichier
Sheets("RESULTAT").Select
    Range("F7").Select
    fichier = ActiveCell 
 
    'commande impression pdf pour création du fichier dans mes documents
 
    Application.ActivePrinter = "CutePDF Writer sur CPW2:"
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, _
        ActivePrinter:="CutePDF Writer sur CPW2:", Collate:=True
 
  'timer pour laisser le temps au sytéme d'ouvrir la fenetre
        Start = Timer
        Do While Timer < Start + 15
 
        Loop
 
 
        SendKeys fichier & "{ENTER}", False
 
       ' timer pour que le systéme ait le temps de créer le fichier PDF
         Start = Timer
        Do While Timer < Start + 30
        DoEvents
        Loop
 
 
   ' copie du fichier pdf vers le serveur R puis destruction du fichier dans mes documents
   Dim SourceFile, DestinationFile
SourceFile = "C:\Documents and Settings\Bastien\Mes documents\" & fichier & ".pdf"
DestinationFile = "C:\Documents and Settings\Bastien\Mes documents\Mes images\" & fichier & ".pdf"
 
    FileCopy SourceFile, DestinationFile
 
    ' timer pour que le systéme ait le temps de copier le fichier PDF
         Start = Timer
        Do While Timer < Start + 10
        DoEvents
        Loop
 
    'Destruction du fichier source (dans mes documents)
    Kill SourceFile
 
 
 ' Fermeture automatique d'excel
  Application.Quit

Ma deuxième version de code : (qui fonctionne mieux que la V1, mais toujours pas fiable)
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
Sub Macro1()
'Récupération du nom de fichier
Sheets("Feuil1").Select
Range("F7").Select
fichier = ActiveCell
 
'Commande impression pdf
Application.ActivePrinter = "CutePDF Writer sur CPW2:"
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, _
ActivePrinter:="CutePDF Writer sur CPW2:", Collate:=True
 
'timer pour laisser le temps au sytéme d'ouvrir la fenetre
Start = Timer
Do While Timer < Start + 15
 
Loop
 
 
SendKeys "test" & "{ENTER}", False
 
'timer pour que le systéme ait le temps de créer le fichier PDF
Start = Timer
Do While Timer < Start + 30
DoEvents
Loop
 
 
'copie du fichier pdf vers le serveur R puis destruction du fichier dans mes documents
Dim SourceFile, DestinationFile
SourceFile = "C:\Documents and Settings\Bastien\Mes documents\test.pdf"
DestinationFile = "C:\Documents and Settings\Bastien\Mes documents\Mes images\" & fichier & ".pdf"
 
FileCopy SourceFile, DestinationFile
 
'timer pour que le systéme ait le temps de copier le fichier PDF
Start = Timer
Do While Timer < Start + 10
DoEvents
Loop
 
'Destruction du fichier source (dans mes documents)
Kill SourceFile
 
 
'Fermeture automatique d'excel
Application.Quit
Si quelqu'un voit des anomalies.... Merci bcp.