Erreur Automation - Défaillence irrémédiable

Bonjour à tous,

Je fais actuellement face à une erreur de VBA qui me pose grand problème et une perte de temps considérable. (pas la première fois que ce problème arrive ...)
J'avais réussi à débloquer la situation, mais jamais à la comprendre. Hors aujourd'hui, j'ai envie de comprendre pourquoi cela m'affiche ce message !

En gros, Excel, à l'ouverture de mon tableur, m'affiche la chose suivante :

capture1

Après un clic sur "ok", il m'ouvre l'interface VBA.

Et j'arrive à trouvé l'endroit ou se trouve l'erreur, dans une Function que j'appelle dans un tableau :

image

A partir de la, j'arrive à déboguer et utiliser le tableur. Mais le problèmes suivant persiste :

- Erreur à chaque démarrage (alors qu'une fois déboguer, la function fait le taff correctement)

- Des feuilles sont créer dans l'arborescence (en bleu) de l'éditeur (mais pas dans le fichier excel) :

image image

Ps : "Feuille de liste" est volontairement caché

Voilà.

Je pense que le problème vient de ma "Function", mais exactement, cela dépasse mes connaissances...

Un grand merci d'avance pour votre aide.

Bonjour,

La function est appelée en lui passant plusieurs paramètres ...

Je présume qu'il manque un paramètre > ou qu'un paramètre passé n'a pas le bon format ...

Exemple : prixCout as string > et le paramètre prixCout qui est passé pourrait ne pas être un string (texte) ...

Sans fichier > ce sera difficile de trouver le souci ...

ric

Bonjour Ric,

Malheureusement, je ne peux vous transférer mon fichier Excel, il comporte trop de données sensibles.
De plus, en supprimant des colonnes, des chiffres, etc etc, à la fin l'erreur n'apparaît plus...
Il m'est assez difficile de délimiter la zone de travail de cette erreur.

Pour ce qui est de la formule de normalisation, j'ai tous vérifié. La seule donnée qui peut varier et pour le paramètre "ajustementInflation" qui est justement en variant. (soit String soit double).

Petite maj :

J'ai quand même essayer de bricoler le tableur pour trouver d'ou venait l'erreur.
Mon tableur comporte 4 feuilles + une cachée.

J'ai donc supprimé les feuilles une par une, sauvegarder, relancer et voir a chaque suppression si l'erreur disparaissait.
Bingo ! Quand je supprime la feuille nommé "SYNTHESE", l'erreur disparaît. ALORS QUE la function qui se met en erreur n'est absolument pas utilisé sur cette feuille ... !

j'ai réitérer la méthode, mais cette fois ci sur la feuille, supprimer un par un, sauvegarder, etc...
Et la, je fus surpris de la cause de cette jolie erreur qui me créer pleins de feuilles et un message d'erreur comme bonjour !

Sur la feuille "SYNTHESE", en X2 exactement, ce trouve une date. Plus exactement encore, un "=AUJOURDHUI".
Quand je supprime ce "=AUJOURDHUI", l'erreur disparaît... !!

image

A gauche, le fichier n'affiche plus l'erreur, à droite le fichier affiche l'erreur.

Je suis tombé de ma chaise, car je ne vois absolument pas pourquoi cette celule/function met en PLS la function que j'utilise sur L'AUTRE feuille...

J'espère vous avoir données des billes pour comprendre encore mieux ce maudit problème.
Plus étrange encore, j'ai d'autre fichier comme celui-ci, mais eux n'affiche pas d'erreur au démarrage. Pour le moment.... (oui, car l'erreur se déclare du jour au lendemain...)

Cordialement,

Martin

Bonjour,

Sur l'image de ta demande > la ligne jaune > l'erreur est > quand la function reçoit les données via les paramètres > une des ces données n'est pas acceptée ...

Quand la ligne de la function devient jaune > passe le curseur de la souris au-dessus de chacune des variables de cette ligne et regarde la valeur de chacune des variables > cela pourrait t'aider à trouver la coquille ...

Ce qui serait plus révélateur > c'est le code qui remplit ces variables et qui appelle cette function ...

Pour fournir un fichier afin que l'on regarde la chose > tu pourrais anonymiser tes données via cet utilitaire ...
https://www.excel-pratique.com/fr/utilitaires/anonymisation-donnees

Si cela ne te convient pas > et que tu consentirais à me fournir ton fichier en message privé > dis le moi > je déverrouillerai mes messages privés pour toi ...

ric

Bonjour,

Je comprends bien la problématique liée à la ligne jaune sur la fonction. Mais j'ai vérifié plusieurs fois les données implémentée et elle sont correcte.

D'autant plus que, une fois l'erreur Automation levée, la fonction travaille correctement sans modification de la feuil.

Dès que je retourne au travail, je mettrai en ligne la macro.

Pour ce qui est du transfert du fichier, cela ne sera pas possible :

  • Le fichier comporte des informations critiques de l'entreprise.
  • Quand je supprime des données ou que je les modifie, l'erreur disparaît.

J'apprécie l'effort que vous faite notamment sur le fait de bien vouloir le récupérer en MP.

Je pense que cela va être compliqué de résoudre cette problématique. De plus il n'y à pas de code d'erreur.

Aussi, quand une macro plante, il n'y à pas cette erreur Automation qui se déclare, encore plus si c'est une erreur de type entre une variable et une donnée.

----------------------------------------------------------------------------------------------------------------------------------------------------------

J'ai cependant une théorie, liée à la fonction "=AUJOURDHUI()" qui se trouve en X2 sur mon commentaire du 21/12/2020 à 10:07.

Dès le lancement du tableur, le "=AUJOURDHUI()" cette lance directement, tout comme ma fonction.

Or comme je l'avais relevé, quand je supprime la fonction "=AUJOURDHUI()", le tableur n'affiche plus l'erreur Automation.

Ne serait-ce pas un problème lier au démarrage à cause de ces deux fonctions qui se lancent en même temps, qui créer des interférences entre elles, ou autre ... ??

Bonjour,

Or comme je l'avais relevé, quand je supprime la fonction "=AUJOURDHUI()", le tableur n'affiche plus l'erreur Automation.

Pour faire un test > remplace "=Aujourdhui()" par la date du jour > enregistre > ferme > rouvre > test ...

Est-ce que l'erreur persiste ?

ric

ric

Merci, je testerai cela quand je retournerai au travail.

Je vous tiens au courant.

Excellente journée.

Cdt

Martin

Bonjour,

J'ai donc effectué la manipulation.
J'ai changé la date d'aujourd'hui par exactement la même mais ecrite manuellement :

L'ancienne :

image

La nouvelle :

image

L'erreur disparaît bel et bien !!

Mais qu'en est la cause ??

Sachant que j'ai environ 6 tableurs quasiment identiques avec la fonction "=aujourdhui()" et cela fonctionne correctement.

C'est très perturbant..

Bonjour,

Je me permet de remonter ce sujet car j'ai plus ou moins le même problème sur mes fichiers excel. Et c'est très stressant.

Avez vous trouvé une solution ?

Ce qui est perturbant (pour le cas de mon fichier), c'est que cette erreur peut être corrigée simplement en... renommant une macro, supprimant un module, ajoutant/modifiant une ligne de code.

C'est incompréhensible.

J'ai également la ligne jaune, sur la Public Fonction... et cela me génère comme vous, des feuilles en double dans l'arbo VBA.

Je dois sans arrêt penser à faire une sauvegarde avant la moindre petite modif', ce bug est devenu ma hantise

Bonjour FBidee,

Est-ce que tu aurais un fichier anonymisé à fournir ?

Sinon, peut-être en message privé !!

ric

Bonjour Ric,

C'est gentil de proposer, j'ai quand même un peu de boulot pour anonymiser tout ça ^^

Cela dit : le bug ne s'est plus présenté depuis... Je me demande si cela ne vient pas tout simplement de mon ordinateur.

Je reviens si jamais ça se reproduit !

Merci
Cordialement

Bonjour,

Et voilà, l' erreur "défaillance irrémédiable" est réapparue, sans raisons.

J'ai cherché sur internet, j'ai trouvé un sujet qui traite du sujet en anglais (rien de bien clair dans les explications) https://social.technet.microsoft.com/Forums/en-US/341479ae-903a-423e-9a51-c3456ae7ad13/automation-er...

Le point commun est une Function qui ferait tout bugguer. Alors effectivement j'ai une Function (trouvée sur le net, que j'utilise depuis des mois sans soucis)

Function Lien_Valide(MonUrl As String) As Boolean
    Lien_Valide = Dir(MonUrl) <> ""
End Function

En gros, ça permet de détecter si un fichier existe dans un répertoire.

____

Mais alors, là où vraiment j'y comprend rien :

- L'erreur est apparue en ouvrant un fichier (on va dire "Fichier 1")

- Elle s'est propagée à "Fichier 2" et "Fichier 3" que j'utilise sans soucis depuis des mois

- Ma collègue sur sa session peut ouvrir Fichier 2 et 3 sans erreur, mais Fichier 1 reste buggué.

- Il me suffit de copier/coller Fichier 1 sur un autre ordinateur, et je remarque que le fichier s'ouvre sans problèmes

____

Alors là je suis tenté de dire : l'installation de Excel serait-elle corrompue ?

Bonjour FBidee

Bonjour,

Function Lien_Valide(MonUrl As String) As Boolean
    Lien_Valide = Dir(MonUrl) <> ""
End Function

En gros, ça permet de détecter si un fichier existe dans un répertoire.

Alors là je suis tenté de dire : l'installation de Excel serait-elle corrompue ?

Lors des mises à jour ou de nouvelles versions de Windows ou Office (Excel) ... il peut survenir de bogues suite à la correction ou à l'amélioration de fonction ... ce n'est pas forcément de la corruption ...

Il peut aussi arriver que les chemins, de emplacement du fichier testé, deviennent plus restrictifs au niveau "lecture/écriture" ( chemins réseau entre autres ) ...

Je remarque que ta "function" n'a pas de gestion des erreurs (mais là je suis pourri en le domaine) ...

Le site de "excel-malin" propose une fonction moins courte pour tester si un fichier existe ...
https://excel-malin.com/codes-sources-vba/vba-verifier-si-le-fichier-existe/

Désolé ne n'avoir que cela à dire ... mon niveau Vba est moyen ...

ric

Bonjour Ric,

Merci pour ta réponse. J'en ai parlé au prestataire informatique et effectivement il m'a dit que de nombreuses mises à jours de la suite Office sont à faire. Elles sont prévues pour ce midi, donc je reviendrais aux nouvelles d'ici là. Je croise les doigts pour que cela résolve le problème...

A plus tard,

Cdt

Bonjour,

Les mises à jours n'ont rien fait.

La réinstallation du pack Office n'a rien fait.

J'ai tenté ceci :

- Remplacement du code :

Function Lien_Valide(MonUrl As String) As Boolean
    Lien_Valide = Dir(MonUrl) <> ""
End Function

par celui proposé par ric ("excel-malin"). Ça n'a rien fait

- Suppression de la function ci-dessus. Le fichier fonctionne (mais du coup, n'a plus aucun intérêt)

- Lorsque je lance le fichier sans activer les macros à l'ouverture, puis les active ensuite - en cliquant sur le ruban, ça fonctionne.

- Si j'enregistre ce même fichier (en approuvant les macros), et que je le ré-ouvre par la suite, ça ne fonctionne plus.

- La function ci-dessus est utilisée sur d'autres fichiers, sans problèmes.

- Les fichiers fonctionnent si je les lance en dehors de ma session (je travaille sur un serveur d'entreprise)

- Autre information, je me rappel qu'il y a 2 ou 3 semaines j'ai eu un message "Mémoire insuffisante" sans conséquence aucune.

Au secours, ce bug est insupportable. Il y a très peu de pistes sur internet, le seul point commun est la Function qui ferait potentiellement tout déconner dès l'ouverture du fichier. J'ai tenté de marquer une pause avec Workbook Open mais rien.

Cela ressemble à un problème machine, mais sans indications de la part du message d'erreur (pas de codes, rien...) je ne sait plus où m'orienter.

Bonjour FBidee,

Mets ta fonction en commentaire pour la désactiver sans la supprimer et teste celle-ci ...

C'est essentiellement la même chose, mais écrite autrement (trouvé sur un autre forum j)

Function Lien_Valide(MonUrl As String) As Boolean
    Lien_Valide = True Or False
    If Dir(MonUrl) <> "" Then
        Lien_Valide = True
    Else
        Lien_Valide = False
    End If
End Function

Sinon, je ne sais pas trop quoi en penser ...

ric

bonjour,

je déteste la déclaration des variables, on sait ca ici

moi, je propose ceci

Function Lien_Valide(MonUrl)
     Dim bstatus As Boolean
     On Error Resume Next
     bstatus = (Dir(CStr(MonUrl)) <> "")
     Lien_Valide = bstatus
End Function

Bonjour à tous,

Pour faire suite à cette discussion https://forum.excel-pratique.com/s/goto/1083457
Est-ce que le fichier ne serait pas sur un SharePoint par hasard

Auquel cas, il faut utiliser cette fonction

Function FicUrlExiste(ByVal sUrl As String)
  Dim oXML, aErr
  Set oXML = CreateObject("msxml2.XMLHTTP.6.0")
  On Error Resume Next
  oXML.Open "GET", sUrl, False
  FicUrlExiste = (Err.Number = 0)
  On Error GoTo 0
  Set oXML = Nothing
End Function

Un test avec ce fichier par exemple

Sub Test()
  Debug.Print FicUrlExiste("https://www.gouvernement.fr/upload/media/content/0001/03/fee5e402960d39cb694bb2fc2b8593e6ae16ffed.pdf")
End Sub

A+

Bonjour,

Merci pour vos réponses. J'ai tenté vos 2 codes respectifs, rien n'y fait.

Au final, je ne pense pas que ce soit le contenu de la Function le problème.

D'ailleurs, c'est très souvent le résultat de mes recherches :

https://forum.excel-pratique.com/excel/vba-erreur-automation-defaillance-irremediable-85566

https://forum.excel-pratique.com/excel/erreur-automotion-defaillance-irremediable-97648

L'auteur de ce sujet, ainsi que de nombreux posts anglais...

Ce qui ne me rassure pas, c'est que ces problèmes sont résolus n'importe comment, voire pas du tout.

J'ai investit des heures sur ces fichiers, certains ont servit des mois sans jamais défaillir

Si jamais quelqu'un a une idée... help !!!

Edit : Bonjour Bruno, merci. Le fichier n'est pas sur un Share Point. Certains communiquent avec des Excel hosté par OneDrive mais ça vient chercher sur le C: donc à priori cela reste un usage classique.

Cdt

Rechercher des sujets similaires à "erreur automation defaillence irremediable"