XL 2016 erreur systeme &h80004005 erreur non spécifié

ZZ59264

XLDnaute Occasionnel
Bonjour au forum,

J'ai du supprimer plusieurs duplicata de mon fichier de modèle car j'avais ce message d'erreur :

"erreur système &h80004005" erreur non spécifié

L’accès à la fenêtre VBA était bloqué par ce message d’erreur et impossible de sauvegarder ce fichier, je joins donc une version plus courte et non alimenté mais avec tout les codes VBA sur les modules et les procédures événementielles,

Pouvez vous me dire ce qui pourrait faire ce message d'erreur,

En faisant des recherches sur Google je suis tombé sur ce lien :


Mais rien ne fonctionnait chez moi, d’ailleurs en cas de modifications, impossible d'enregistré le fichier,

Merci d'avance pour ceux qui se pencheront sur d'éventuelles pistes, ou comment puis je savoir ce qui fait bloquer le fichier?,

Cordialement,

NB : j'ai supprimer le fichier qui bloquait et j'ai recommençait, et depuis pas de message d'erreur, mais au cas ou ça me le referait je voudrais savoir le pourquoi ;)
 

Pièces jointes

  • TEST FORUM - Copie.xlsm
    53.6 KB · Affichages: 9

ZZ59264

XLDnaute Occasionnel
Bonjour à tous,

Désolé je n'avais pas vu vos messages avec les fêtes !

Alors effectivement j'ai re testé votre proposition Patricktoulon et oui le problème est que j'ai toujours les noms définis par le gestionnaire de noms qui ne devaient plus apparaitre, d’où la solution proposé par Job 75 avec cette partie de code :

VB:
    On Error Resume Next
    For Each nom In ActiveWorkbook.Names
        sup = True
        For Each F In ActiveWorkbook.Worksheets
                If nom.Name Like F.Name & "!*" Or nom.Name Like "'" & F.Name & "'!*" Then sup = False
        Next F
        If sup Then nom.Delete 'supprime le nom sauf s'il est défini dans une feuille du document créé
    Next nom
    On Error GoTo 0

Merci Dranreb pour votre proposition de fonction, mais ayant un niveau proche de 0 sur par VBA, je ne serai le mettre en place,

J'ai testé votre code su mon fichier original, et il me fait apparaitre des noms définis avec les fameux "!" ?

Sur le fil développé par Job 75, lors du test de la macro sur mon fichier original, j'avais un message d'erreur à ce niveau de code de suppression des noms définis, il m'a suggéré d’utiliser "On error resume next" et "On error Goto 0",

La macro développé fonctionne bien, un peu longue sur mon fichier original mais l'essentiel est a c'est qu'elle me duplique bien mes feuilles sans les noms définis tout en conservant les zones d'impression,

Merci pour votre participation,

Cordialement,
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour @ZZ59264
Le gestionnaire de noms ajoute les tableaux et omet certains noms de la collection Names du classeur qui ne peuvent être supprimés.
A part ça oui, elle permet de supprimer les noms définis par le gestionnaire de noms.
Quelles difficulté rencontrez vous pour la mettre en place ?
 

ZZ59264

XLDnaute Occasionnel
Bonjour @ZZ59264
Le gestionnaire de noms ajoute les tableaux et omet certains noms de la collection Names du classeur qui ne peuvent être supprimés.
A part ça oui, elle permet de supprimer les noms définis par le gestionnaire de noms.
Quelles difficulté rencontrez vous pour la mettre en place ?
Bonjour Dranreb, non pas de soucis j'ai su la mettre en place, le hic c'est que je ne souhaite pas supprimer les noms définis sur mon fichier de travail, mais lors de l'export des feuilles dupliquées comme le fait la procédure de Job75,

Ayant un niveau plus que moyen sur VBA, je ne comprends pas trop le débat sur le code de Job75 en fait,

Cordialement,
 

ZZ59264

XLDnaute Occasionnel
Merci, je copie ceci en dessous du code de Job75 :

VB:
Private Function PréfixeFeuille(ByVal Z As String) As String
   PréfixeFeuille = Left$(Z, PosPExcla(Z))
   End Function

Private Function PosPExcla(ByVal Z As String) As Long
Rem. Le nom de feuille peut contenir "!", et même "'!", ou commencer par "!", pourquoi pas, mais on ne peut
'    se contenter de chercher tout simplement le dernier "!" car la suite de Z peut aussi contenir "#REF!" !
   If Left$(Z, 1) = "'" Then PosPExcla = InStr(Replace(Mid$(Z, 2), "''", "??"), "'!") + 2 Else PosPExcla = InStr(Z, "!")
   End Function

et je remplace cette partie du code de Job75 :
Code:
On Error Resume Next
    For Each nom In ActiveWorkbook.Names
        sup = True
        For Each F In ActiveWorkbook.Worksheets
                If nom.Name Like F.Name & "!*" Or nom.Name Like "'" & F.Name & "'!*" Then sup = False
        Next F
        If sup Then nom.Delete 'supprime le nom sauf s'il est défini dans une feuille du document créé
    Next nom
    On Error GoTo 0

Par :

Code:
On Error Resume Next
 For Each Nom In ActiveWorkbook.Names
      If PréfixeFeuille(Nom.Name) <> PréfixeFeuille(Mid$(Nom.RefersTo, 2)) Then Nom.Delete
      End If
 Next Nom
 On Error GoTo 0

Ce serait bon ?, Pouvez vous m'expliquer les deux fonctions?, merci d'avance,

Cordialement,
 

Dranreb

XLDnaute Barbatruc
La PréfixeFeuille renvoie la partie gauche de l'argument jusqu'à la position donnée par PosPExcla.
La PosPExcla renvoie la position d'un éventuel point d'exclamation marquant la fin d'un préfixe feuille. Si ça commence par une apostrophe, le point d'exclamation cherché en est forcément aussi précédé d'une. Pour éviter le cas très improbable où le nom de la feuille contiendrait "'!" on remplace les apostrophes doublées par deux points d'interrogation. On ajoute 2, 1 parce qu'on substitue à partir de la position 2, + 1 parce que "'!" commence une position devant le "!".
 
Dernière édition:

ZZ59264

XLDnaute Occasionnel
La PréfixeFeuille renvoie la partie gauche de l'argument jusqu'à la position donnée par PosPExcla.
La PosPExcla renvoie la position d'un éventuel point d'exclamation marquant la fin d'un préfixe feuille. Si ça commence par une apostrophe, le point d'exclamation cherché en est forcément aussi précédé d'une. Pour éviter le cas très improbable où le nom de la feuille contiendrait "'!" on remplace les apostrophes doublées par deux points d'interrogation. On ajoute 2, 1 parce qu'on substitue à partir de la position 2, + 1 parce que "'!" commence une position devant le "!".
Merci pour vos explications, j'ai donc installer les deux fonctions sur le module, puis modifier le passage en question comme ceci :

VB:
On Error Resume Next
 For Each Nom In ActiveWorkbook.Names
      If PréfixeFeuille(Nom.Name) <> PréfixeFeuille(Mid$(Nom.RefersTo, 2)) Then Nom.Delete
 Next Nom
 On Error GoTo 0

et après la mise ne place d'un timer je gagne effectivement du temps sur la procédure ;)

Merci pour votre aide et collaboration Dranreb,

Cordialement,
 

ZZ59264

XLDnaute Occasionnel
Bonjour a tous,

Je relance ce sujet car le code erreur se reproduit de nouveau et de façon aléatoire (enfin que je n'ai pas déterminé la cause) :

"erreur systeme &h80004005 erreur non spécifié"​


J''essaye donc de contourner le problème est sauvegardant mon fichier avec ce code macro sur ThiWoorkbook :



VB:
Private Sub Workbook_Open()

  ThisWorkbook.SaveCopyAs ThisWorkbook.Path & "\" & "SAV -" & ThisWorkbook.Name
 
End Sub

Mais j'aimerai qu'en plus à l'ouverture il me teste si le message d'erreur apparait et dans ce cas ne pas sauvegarder et sortir de la procédure,

Je ne vous cache je suis bien embêter avec ce message d'erreur ne sachant pas pourquoi il se produit, il corrompt mes fichiers :(

D’où cette solution un peu tirer par les cheveux je vous l'accorde,

Merci d'avance pour votre aide,

Cordialement,
 

ZZ59264

XLDnaute Occasionnel
Bonsoir.
Il faudrait déjà qu'on ait la moindre idée de ce qui ne va pas.
Mettez des espions sur les expressions impliquées dans l'instruction qui plante.
Bonsoir Dranreb,

Alors ce qui ne va pas, c'est que mon fichier fonctionne trés bien et pour une raison que j'ignore, à sa réouverture il plante c'est à dire que l’accès au VBA est impossible et il me met ce msg d'erreur si on tente d'accéder par Alt+F11:

Le message d'erreur est

"erreur systeme &h80004005 erreur non spécifié"​


Ne sachant pas comment éviter ce message, je tente d'en faire une sauvegarde, et donc à l'ouverture du fichier je lui demande de me faire une sauvegarde, or je voudrais mettre une condition, c'est que si cette erreur se produit c'est que le fichier ne fonctionne plus et donc qu'il ne le sauvegarde plus,

Maintenant si vous avez une idée de l'origine éventuel de ce message d'erreur?, cela éviterai une sauvegarde,

Cordialement,
 

Discussions similaires