Microsoft Excel a cessé de fonctionner

Xtian_Québec

XLDnaute Occasionnel
Bonjour le Forum,

J'ai effectué quelques recherches sur le Forum mais je ne trouve aucune explication à mon problème.

J'ai un fichier Excel (en développement) qui utilise plusieurs "Userform" (8 au total et un des userform contient plus de 9 pages) et qui se connecte à plusieurs bases de données (UserdB - DatadB - InventairedB - ClientdB - CodedB). Le fichier est trop volumineux pour que je puisse l'attaché à cette demande. Lorsque j'effectue des ajouts ou modifications, je sauvegarde ma version avec des numéros incrémentés, j'en suis à ma version 3.38 actuellement. À l'ouverture du fichier, un Userform demande à l'utilisateur de sélectionner un profil parmi les 6 profils suggérés. Lorsque le profil est sélectionné et que l'utilisateur choisi "OK", l'application est lancée.

Voici un peu la logique du code à l'ouverture
1) Validation des connections aux bases de données sur le serveur
2) Validation des données de l'utilisateur
3) Traduction des Userform selon le profil de l'utilisateur(affichage des écrans selon la langue de l'utilisateur)
4) Chargement des données liées à l'utilisateur (Inventaire de dossiers à travailler)

Tout ces processus sont effectués en affichant un "progress bar"


Voici mon problème, depuis quelques versions, lorsque je tente d'ouvrir l'application après avoir sélectionné un profil, j'ai un message d'erreur "Microsoft Excel a cessé de fonctionner" et je ne sais pas pourquoi. J'ai effectué quelques tests pour valider l'erreur;

1) lorsque j'exécute le code "workbook_open" manuellement, tout fonctionne correctement.

2) Lorsque je lance le code à partir d'un bouton temporaire (qui exécute Workbook_open) que j'ai ajouté dans une feuille vierge de mon fichier, j'ai le message d'erreur. Pour accéder à ce bouton temporaire, je dois sélectionner "Annuler" au lieu de "OK" lorsque le Userform me demandant mon profil est visible. Cette action arrête le code, j'ai accès à ma feuille vierge qui contient le bouton temporaire et je peut relancer le code Workbook_open à partir de ce bouton.

3) Lorsque j'ouvre une version précédente (3.37 par exemple) et que je sélectionne "Annuler" pour la sélection du profil, le fichier reste alors sur ma feuille vierge contenant le bouton temporaire. À partir de cette étape, si j'ouvre une autre version (3.38 par exemple), je sélectionne "Annuler" avec ce fichier également et ensuite j'utilise mon bouton temporaire pour lancer le programme, le processus fonctionne à 100% et l'application s'affiche correctement.

4) J'ai fait l'expérience avec un autre fichier Excel (qui n'a aucun lien avec mon petit programme, mon horaire de travail par exemple) et lorsque je lance mon petit programme, je sélectionne "Annuler" et que je relance le programme avec le bouton temporaire, j'ai le message d'erreur.

Je me demande pourquoi mon fichier ne peut pas s'ouvrir "seul" alors que si j'ai une version précédente en attente (code non exécuté avec le bouton temporaire affiché), mon fichier s'ouvre correctement???

Je trouve cette situation vraiment bizarre...

Votre aide SVP en espérant que quelqu'un a déjà connu un problème similaire...

Merci

Xtian_Quebec.
 

Xtian_Québec

XLDnaute Occasionnel
Re : Microsoft Excel a cessé de fonctionner

Bonjour néné06,

Merci pour la piste, j'y ai jeté un coup d'oeil. J'ai remarqué dans ce fil que tu as tenté(dans le rôle de Columbo) de découvrir l'imposteur dans ton code en le révisant pas à pas mais il n'y a pas de "résultat" final dans ce fil...as-tu trouvé la cause?


J'ai aussi tenter de revalider le code pas à pas mais de cette façon, le problème ne survient pas...C'est juste lorsqu'il est exécuté "automatiquement" qu'il plante...manuellement, tout va bien, c'est ce qui est bizarre...Peut-être que le code automatique roule trop vite et qu'il y a des macros non complétées et d'autres macros tentent de s'exécuter en même temps et c'est ce qui cause le "plantage" !!!

Je peux tenter de mettre des minuteurs ici et là, question de ralentir l'exécution pour voir si c'est le cas...Si les minuteurs règlent le problème, je serai un "Héro" sinon je serai un "Zéro"...

Je vous laisse savoir.

Merci de ta réponse

Xtian
 

néné06

XLDnaute Accro
Re : Microsoft Excel a cessé de fonctionner

Bonjour Xtian,

Code:
Merci pour la piste, j'y ai jeté un coup d'oeil. J'ai remarqué dans ce fil que tu as tenté(dans le rôle de Columbo) de découvrir l'imposteur dans ton code en le révisant pas à pas mais il n'y a pas de "résultat" final dans ce fil...as-tu trouvé la cause?
Tu n'as pas remarqué que le Fil comporte deux pages, et la solution est trouvé dans la fin de la deuxième page!
Regardes cette deuxième page.


Pour trouver les instructions qui "plantent", je te conseillerai de placer:
-Stop au milieu et voir si ça plante ?
_Stop au 1/4 ou 3/4 du programme et voir si ça plante etc.....

A+

René
 

Xtian_Québec

XLDnaute Occasionnel
Re : Microsoft Excel a cessé de fonctionner

Bonsoir René,
En effet je n'avais pas remarqué la page 2 du Fil. Ta solution m'allume des lumières car dans mon code il y a beaucoup de labels dans mes userform que j'affiche ou masque selon le profil de l'utilisateur. Je vais réviser mes codes et commenter ces labels et ensuite les décommenter un par un pour tenter de découvrir si c'est un de ces labels qui est en causse.

je reviens dans le fil avec le résultat.

Merci encore pour ton aide.

Xtian
 

Xtian_Québec

XLDnaute Occasionnel
Re : Microsoft Excel a cessé de fonctionner

Bonjour le Forum,

J'ai effectué quelques tests et mon fichier s'ouvre correctement maintenant (jusqu'à présent après plusieurs essais...)
Avant de valider les labels, j'ai tenté de mettre des msgbox (plus de 15 msgbox identifiant le code qui s'exécute) à plusieurs endroits dans ma procédure. Avec ces msgbox, aucun plantage. De ce fait, la vitesse d'exécution du code est diminuée car je dois appuyer sur OK à chaque fois qu'un msgbox apparaît.

Comme je ne veux pas que les utilisateurs soient obligés d'appuyer sur le "OK" des msgbox, j'ai finalement remplacé les msgbox par des "waiting time" et cela semble avoir réglé mon problème.

Voici le code que j'utilise dans ma procédure:

À quelques endroits dans mon code, j'appele la macro Call Process_Wait(1), 1 étant le nombre de seconde en attente...

Sub Process_Wait(second As Integer)
Dim Start, PauseTime

PauseTime = second
Start = Timer
Do While Timer < Start + PauseTime
DoEvents
Loop
End Sub

Avec ce code, ma procédure roule correctement, si cela peut aider d'autres personnes bien, tant mieux...

Merci encore René de m'avoir permis de trouver cette solution.

À +

Xtian
 

Discussions similaires

Réponses
2
Affichages
98

Statistiques des forums

Discussions
311 723
Messages
2 081 932
Membres
101 844
dernier inscrit
pktla