Bonjour,
J'ai fait une petite procédure pour imprimer (ou plutôt exporter) une série de fichier xlsx en pdf.
Je la teste sur une série de 88 fichiers.
Dans le principe elle fonctionne plutôt bien, seulement parfois et de façon aléatoire elle s'arrête en me générant un message:
Le débogueur me surligne la ligne 39: Set wb = Workbooks.Open(chemin & "\" & fichier).Erreur d'exécution '1004':
La méthode 'Open' de l'objet 'Workbooks' a échoué
Je n'arrive pas à comprendre pourquoi.
J'ai même tenté de mettre une temporisation (Sleep (100) ligne 45) en me disant que le précédant fichier n'avait peut-être pas eu le temps de se refermer correctement mais ça ne change rien (j'ai essayé jusqu'à 2s)
Elle a fonctionné de bout en bout qu'une seule fois.
Une Idée?
Mon 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
47
48
49
50
51
52
53
54 Option Explicit Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Ouvre et imprime des fichiers xlsx d'un dossier choisi en pdf dans un sous dossier "PDF" Public Sub ImprimerFeuilles() Dim wb As Workbook Dim fichier As String Dim chemin As String Dim compteur As Integer If ThisWorkbook.Path = chemin Then MsgBox "Ne pas mettre le classeur contenant le programme dans le dossier " & chemin Exit Sub End If MsgBox "Sélectinnez le dossier ou se trouvent les fichiers à imprimer" 'Ouverture d'un explorateur de dossier pour sélectionner le dossier With Application.FileDialog(msoFileDialogFolderPicker) .Show If .SelectedItems.Count > 0 Then chemin = .SelectedItems(1) End If End With 'Test si sous-dossier PDF existe; si non le créer If Len(Dir(chemin & "\PDF", vbDirectory)) <= 0 Then MkDir (chemin & "\PDF") End If fichier = Dir(chemin & "\*.xlsx") With Application .DisplayAlerts = False .ScreenUpdating = False End With Do While fichier <> "" Set wb = Workbooks.Open(chemin & "\" & fichier) wb.Sheets(1).ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & "\PDF\" & fichier & ".pdf" wb.Close Set wb = Nothing compteur = compteur + 1 fichier = Dir Sleep (100) Loop With Application .DisplayAlerts = True .ScreenUpdating = True End With MsgBox compteur & " Fichiers ont été traités" End Sub
Partager