Erreur d'exécution '-2147221080 (800401a8)': Erreur Automation à la suppression d’une feuille
Bonjour,
Je suis nouveau sur ce Forum et souhaite solliciter votre aide.
Je comprends pourquoi j’obtiens cette erreur « Erreur d'exécution '-2147221080 (800401a8)': Erreur Automation » mais je n’arrive pas à la résoudre pour autant.
J’explique le contexte :
J’utilise un classeur avec plusieurs feuilles contenant une feuille de travail pour élaborer une facture et des modèles de factures.
En fonction de certaines conditions, que je détecte via des événements Worksheet_SelectionChange et Worksheet_Change dans ces feuilles, je peux être amené à basculer une facture en cours sur un autre modèle. Tout ceci est automatisé dans des procédures dans des modules en dehors des feuilles.
A la fin du basculement, il ne me reste plus qu’une chose à faire : supprimer la feuille contenant la facture avant le basculement. C’est la dernière instruction de ma procédure BasculeModèle.
Mais cette instruction Sheets("old").Delete se plante avec le message « Erreur d'exécution '-2147221080 (800401a8)': Erreur Automation » et le bouton Déboggage est désactivé. Toute ma procédure fonctionne, la feuille en question est bel et bien supprimée, mais je n’arrive pas à éviter le message d’erreur.
Je pense avoir compris que j’obtiens cette erreur parce que je supprime une feuille depuis laquelle toute l’exécution de code a commencé. Donc VBA ne peut plus y retourner et se plante.
Structure d’appel :
Feuille contenant la facture en cours d’élaboration
+ -> contient Private Sub Worksheet_Change(ByVal Target As Excel.Range)
qui appelle juste la procédure Cellule_Modifié
avec Target comme paramètre.
+-> Cellule_Modifié
- effectue certaines vérifications et, selon le cas,
- appelle de la procédure BasculeModèle
+-> BasculeModèle
o crée une nouvelle feuille au début du classeur
en copiant le modèle adéquat
o copie une partie du contenu de la feuille contenant la
facture en cours d’élaboration vers la nouvelle feuille
o désigne la nouvelle feuille comme celle contenant la facture
en cours (essentiellement un renommage)
o supprime l’ancienne feuille, devenue inutile.
Simple non ?
Je suis en EXCEL 2002 sur XP SP3. Je ne pense pas que ce problème soit différent dans d’autres versions, m’enfin.
Je vous remercie par avance pour votre aide !
Ronald
Partager