Bonjour,
J'ai un message fréquent quand j'exécute ma macro: "Excel has stopped working". Le message n'apparait pas à chaque fois, parfois la macro s'exécute correctement. Ne sachant pas d'ou provenait l'erreur, j'ai exécuté ligne par ligne ma macro et parfois, j'obtiens le message "Erreur d'exécution -2147417848 (800 10 108) La méthode Delete de l'objet _Worksheet a échoué" lorsque j'arrive à la ligne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Workbooks("Mise à jour.xlsm").Worksheets("Entrée Indicateur du service").Delete
Voici mon code au complet:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
Sub Mise_à_jour()
 
Dim Chemin As String
Dim Chemin2 As String
Dim EntréeDonnées As String
Dim EntréeDonnées2 As String
 
 
Chemin = Worksheets("Mise à jour").Range("C42").Value
EntréeDonnées = Worksheets("Mise à jour").Range("C44").Value
Chemin2 = Worksheets("Mise à jour").Range("C118").Value
EntréeDonnées2 = Worksheets("Mise à jour").Range("C120").Value
 
'Copie l'onglet "paramètres" et "Entrée Indicateur du service" du fichier d'entrées de données au fichier mise à jour
Application.DisplayAlerts = False
Workbooks.Open Filename:=(Chemin & EntréeDonnées)
Sheets("Parametres").Select
 
 
ActiveSheet.Unprotect ("AAA")
Rows("110").EntireRow.Hidden = False
Worksheets("Entrée Indicateur du service").Select
ActiveSheet.Unprotect ("AAA")
 
Sheets("Parametres").Copy Before:=Workbooks("Mise à jour.xlsm").Sheets(1)
Windows(EntréeDonnées).Activate
Sheets("Entrée Indicateur du service").Select
Sheets("Entrée Indicateur du service").Copy Before:=Workbooks("Mise à jour.xlsm").Sheets(2)
Workbooks(EntréeDonnées).Close False
Application.DisplayAlerts = True
 
 
'Remplace le fichier d'entrée des données par la nouvelle version du site de collaboration
fichier = "http://sharepoint.rh.ca/100/558645/Shared Documents/Entrées_de_données_TB_opérationnel_1_1(1) - Test.xlsm"
 
Application.DisplayAlerts = False
Workbooks.Open Filename:=fichier
ActiveWorkbook.SaveAs Filename:=Chemin & EntréeDonnées, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
 
Application.DisplayAlerts = True
 
 
Windows(EntréeDonnées).Activate
Worksheets("Parametres").Select
ActiveSheet.Unprotect ("AAA")
Rows("110").EntireRow.Hidden = False
Worksheets("Entrée Indicateur du service").Select
ActiveSheet.Unprotect ("AAA")
 
Windows("Mise à jour.xlsm").Activate
Worksheets("Parametres").Select
Range("B2:B19").Select
Selection.Copy
 
Windows(EntréeDonnées).Activate
Worksheets("Parametres").Select
    Range("b2:b19").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
Windows("Mise à jour.xlsm").Activate
Range("c25:c26").Select
    Selection.Copy
 
    Windows(EntréeDonnées).Activate
 
    Range("c25:c26").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
Windows("Mise à jour.xlsm").Activate
Range("c30:c34").Select
    Selection.Copy
 
    Windows(EntréeDonnées).Activate
 
    Range("c30:c34").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
Windows("Mise à jour.xlsm").Activate
Range("c37").Select
    Selection.Copy
 
    Windows(EntréeDonnées).Activate
 
       Range("c37").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
 
Windows("Mise à jour.xlsm").Activate
 
Range("c110").Select
    Selection.Copy
 
    Windows(EntréeDonnées).Activate
 
       Range("c110").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Rows("110").EntireRow.Hidden = True
 
 
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True, Password:="AAA"
 
'Copie-colle les informations de l'onglet "Entrée Indicateur du service" dans la nouvelle version d'entrée des données
 
Windows("Mise à jour.xlsm").Activate
Worksheets("Entrée Indicateur du service").Select
Range("A1:AV140").Select
    Selection.Copy
 
    Windows(EntréeDonnées).Activate
    Worksheets("Entrée Indicateur du service").Select
    Range("a1").Select
        Selection.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True, Password:="AAA"
 
 
Windows("Mise à jour.xlsm").Activate
 
 
 
Application.DisplayAlerts = False
Workbooks("Mise à jour.xlsm").Worksheet("Parametres").Delete
Application.DisplayAlerts = True
 
Application.DisplayAlerts = False
Workbooks("Mise à jour.xlsm").Worksheets("Entrée Indicateur du service").Delete
Application.DisplayAlerts = True
 
'Copie l'onglet "paramètres" du tableau de bord
Application.DisplayAlerts = False
Workbooks.Open Filename:=(Chemin2 & EntréeDonnées2)
Sheets("Parametres").Select
 
ActiveSheet.Unprotect ("AAA")
Rows("110").EntireRow.Hidden = False
 
Sheets("Parametres").Copy Before:=Workbooks("Mise à jour.xlsm").Sheets(1)
Windows(EntréeDonnées2).Activate
Workbooks(EntréeDonnées2).Close False
Application.DisplayAlerts = True
 
'Remplace le tableau de bord par la nouvelle version du site de collaboration
fichier2 = "http://sharepoint.rh.ca/100/558645/Shared Documents/TABLEAU_DE_BORD_OPÉRATIONNEL_FR_1_1(1) - test.xlsm"
 
Application.DisplayAlerts = False
Workbooks.Open Filename:=fichier2
ActiveWorkbook.SaveAs Filename:=Chemin2 & EntréeDonnées2, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
 
Application.DisplayAlerts = True
 
Windows(EntréeDonnées2).Activate
Worksheets("Parametres").Select
ActiveSheet.Unprotect ("AAA")
Rows("110").EntireRow.Hidden = False
 
Windows("Mise à jour.xlsm").Activate
Worksheets("Parametres").Select
Range("C110").Select
Selection.Copy
 
Windows(EntréeDonnées2).Activate
Worksheets("Parametres").Select
    Range("C110").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Rows("110").EntireRow.Hidden = True
 
 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True, Password:="AAA"
 
 
Windows("Mise à jour.xlsm").Activate
Sheets("Parametres").Select
Application.DisplayAlerts = False
Workbooks("Mise à jour.xlsm").Worksheets("Parametres").Delete
Application.DisplayAlerts = True
 
'Pour ramener les usagers à la feuille "Entrée Indicateur du service"
Windows(EntréeDonnées).Activate
Worksheets("Entrée Indicateur du service").Select
 
 
 
End Sub
À partir d'un fichier "Mise à jour", j'ouvre un fichier "Entrée de données" à l'aide de la macro, je copie certains onglets: "Parametres" et "Entrée Indicateur de service" du fichier "Entrée de données" au fichier "Mise à jour". Cela me permet de conserver l'information dont j'aurai besoin plus tard. Ensuite, je vais ouvrir un fichier qui se trouve sur un intranet. Ce fichier dans l'intranet est un fichier que nous allons améliorer fréquemment et pour que les usagers aient toujours la dernière version, la macro télécharge le fichier et l'enregistre sous le fichier que les usagers ont déjà dans leur compte. Ensuite, la macro copie l'information des onglets "Parametres" et "Entrée Indicateur du service" du fichier "Mise à jour" dans la nouvelle version du fichier "Entrée de données". Ensuite, je supprime les onglets "Parametres" et "Entrée Indicateur du service" du fichiers "Mise à jour". Je pense que c'est au moment de supprimer les onglets que ça pose problème. C'est souvent au moment d'exécuter la ligne du code qui supprime les onglets que j'ai un message d'erreur, mais je ne sais pas comment l'arranger. J'ai déjà essayé plusieurs fois de modifier la ligne, mais j'ai toujours le même problème.

Toute suggestion est la bienvenue. Je suis à court d'idée pour résoudre ce problème.