Erreur Automation - Défaillence irrémédiable
re,
si vous utilisez ma fonction, que se passe-t-il ? Le blocage, c'est où maintenant, vraiment au début de la fonction ou à la 3ième ligne ?
et avec un doevents supplémentaire
Function Lien_Valide(MonUrl)
Dim bstatus As Boolean
On Error Resume Next
bstatus = (Dir(CStr(MonUrl)) <> "")
DoEvents
Lien_Valide = bstatus
End FunctionRebonjour,
Merci, j'ai testé, ça n'a pas fonctionné.
En fait, le message d'erreur se lance à l'ouverture du fichier , si les macros sont déjà approuvées.
Par contre, si je lance le fichier sans les macro approuvées , et que je clique sur le ruban "Activer les macros", ça fonctionne. J'enregistre (macros approuvées sont mémorisées), je relance et ça bug.
Merci BsAlv,
J'ai suivi les instructions, mais c'est à la toute fin, dès lors que je renomme le fichier en .xlsm que ça bug.
En .xlsb je n'ai pas d'erreurs apparemment (pas encore assez testé)
_
Je ne connaissais pas du tout le format .xlsb . J'ai lu rapidement sur internet que ce type d'extension était compressé et plus rapide ?
Y a t-il une contrainte à utiliser ce format ?
Si c'est la solution...
Cdt
Bonjour le fil
@FBidee, je remarque que depuis le début vous nous parlez d'un bug, mais sans que l'on puisse avoir de code
ce déterrage de fil ne sert donc à rien...
Il serait souhaitable que vous puissiez créer un fichier anonymisé (supprimez les données) et le mettre à dispo.
Comptant sur votre compréhension
Bonjour Bruno,
En fait le bug n'a... pas de codes. C'est exactement le même que l'auteur de ce fil, c'est à dire ce message à l'ouverture :
Ensuite, une Function surlignée en jaune (mais qui est à mon avis une fausse indication, car c'est ce qui revient très souvent sur internet) (La mienne par exemple est la Function "LienValide"...
Et enfin , la duplication de feuilles...
Tout est identique. Les fichiers fonctionnaient parfaitement il y a 3 jours de cela, c'est dans le week end que tout s'est mis à planter.
Je voudrais bien vous transmettre un fichier buggué, mais comme je l'ai dit : ces fichiers ont été testé sur plusieurs PC (perso, poste fixe du bureau,...) sans problèmes.
Cdt
Re,
Question, avez vous essayé :
1) Quitter totalement Excel
2) Ouvrir Excel
3) Menu Fichier Ouvrir -> Parcourir
4) Sélectionner le fichier que vous souhaitez, maintenez la touche [Majuscule] enfoncée et cliquez sur Ouvrir
cela empêche toute macro de s'activer
Que se passe t-'il ?
A+
Re,
Le fichier se lance, sans soucis.
J'ai le ruban me proposant d'activer les macros. Je les actives. Tout fonctionne. J'enregistre.
Je relance le fichier (les paramètres d'approbation de macro sont donc mémorisés) et là ça plante direct.
Je n'ai plus ce problème en .xlsb, c'est très étrange.
Re,
Vous n'auriez pas du code dans ThisWorkbook évènement Open
Si c'est non, une possibilité serait de supprimer les fichier "*.exd"
Dans un fichier ".cmd" mettez ces lignes
DEL %appdata%\microsoft\forms\*.exd
DEL %temp%\excel8.0\*.exd
DEL %temp%\vbe\*.exdEnsuite exécutez le en Administrateur
A+
Merci Bruno,
Il n'y a pas forcément de code dans ThisWorkbook open . J'ai 3 fichiers qui déconnent , et 2 n'en possèdent pas donc c'est ça ne vient pas de ça.
Je vais soumettre ton idée au prestataire informatique
Cette proposition ressemble à un clean de fichier temporaires ? J'ai bien pensé à vider le cache de Excel.
Lorsque j'ai eu le message d'erreur "Mémoire insuffisante" il y a 3 semaines, cela aurait du me mettre la puce à l'oreille... Je reviens vers vous dès que possible.
Bonjour,
as-tu également des fonctions volatiles dans tes feuilles ?
Comment se comporte ton fichier si tu les supprimes ?
Dans mes élucubrations, j'imagine qu'une fonction volatile pousse l'évaluation de ta fonction perso (même si elle n'est pas volatile) et ce avant le chargement complet du classeur qui fait que pour elle la feuille est encore inexistante.
Suggestions pour essayer de retarder cette évaluation à tort :
1) ajouter une tempo dans workbook_open du style Application.Wait DateAdd("s", 1, Now())
j'ai dans l'idée que la merdouille se produira avant mais c'est à tenter
ou
2) espérer que les limitations sur feuille d'un classeur de fonctions complémentaires suffisent à bloquer temporairement cette évaluation :
dans ThisWorkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'on remet à la fermeture
ThisWorkbook.IsAddin = True
End Sub
Private Sub Workbook_Open()
'on le remet en normal à l'ouverture
ThisWorkbook.IsAddin = False
End Sub3) et une dernière idée :
mettre en calcul manuel à la fermeture, rétablir en auto à l'ouverture (après une tempo si besoin).
Application.Calculation = xlCalculationManual / xlCalculationAutomatic
Le rétablissement éventuellement dans Sub Auto_Exec() dans un module standard qui s'exécute plus tard que Workbook_Open
Comprend que c'est pure spéculation et pour essayer de te sortir du brouillard.
Et faire les tests avec un classeur propre sans feuilles fantômes...
eric
Bonjour eric,
Merci beaucoup.
Alors j'ai testé tes idées 1 par 1, rien n'y fait malheureusement.
Par contre, j'ai reproduit le bug sur une autre machine (à force de bidouiller les références) mais je suis incapable de savoir comment.
Donc la situation actuelle (sur l'autre machine) :
- j'ai un fichier bugué : je l'ouvre, défaillance irrémédiable etc.
- je copie/colle ce fichier. Il s'appelle "Fichier buggué - copie" .
- je l'ouvre, j'active les macros, j'enregistre puis ferme.
- Je ré ouvre la copie (macro activées à l'ouverture) ... et bien la copie du fichier fonctionne sans problèmes.
On est d'accord que l'action de copier coller un fichier, c'est une copie conforme du code ? Et donc ça devrait planter ?
Quoi qu'il en soit, je vous transmets la copie du fichier bugué, mais cette copie conforme, elle, ne bugue pas. J'ai anonymisé les données.
Merci d'être indulgent avec le code, je fais des progrès mais... c'est long
Cdt
Edit : par contre, depuis 1 semaine j'ai convertit tous mes fichiers en format binaire (xlsb). Je ne vois aucune différence et ça ne bug pas du tout. Merci à BsAlv de m'avoir fait découvrir ce format !!
