Erreur uniquement si un autre fichier Excel est ouvert

Bonjour,

J'ai un fichier Excel qui lance un UserForm à l'ouverture.

Tout fonctionne très bien quand je le lance et qu'aucun autre fichier Excel n'est ouvert.

MAIS quand un ou plusieurs fichiers Excel sont ouverts, et que je lance mon fichier avec la macro, j'ai l'erreur 429 : "Un composant ActiveX ne peut pas créer d'objet" sur la ligne MonUserForm.Show

Voici le code de mon WorkBook_Open :

Private Sub WorkBook_Open()
On Error GoTo ErrHandler
ThisWorkbook.Windows(1).WindowState = xlMinimized

ThisWorkbook.Activate

ThisWorkbook.Worksheets("Feuil2").Visible = xlVeryHidden
ThisWorkbook.Worksheets("Feuil3").Visible = xlVeryHidden

MonUserForm.Show

Exit Sub

ErrHandler:
MsgBox "Une erreur s'est produite : " & Err.Number & " Descriptif : " & Err.Description
End Sub

En fait l'erreur n'apparaît pas la 1ère fois quand je lance mon fichier, mais à partir de la 2ème fois.

Explication : quand j'ai un autre fichier Excel ouvert et que je lance mon fichier avec ma macro pour la première fois de la journée, aucune erreur.

Mais ensuite, si je quitte mon userform (qui ferme le fichier avec la macro) et que je le rouvre plus tard (toujours si j'ai un autre fichier Excel ouvert), là l'erreur apparaît.

L'erreur n'apparaît plus si je n'ai aucun autre fichier Excel ouvert.

Donc je me demande si y'aurait pas un truc qui cloche au moment où je ferme mon UserForm...

Voici le code du QueryClose de mon UserForm :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If Application.Workbooks.Count = 1 Then
ThiWorkbook.Saved = True
Application.Quit
Else
Unload MonUserForm
ThisWorkbook.Close False
End If
End Sub

Bonjour,

pour la partie fermeture , il y a un truc que je ne comprend pas bien.

Condition avant fermeture :

Application.Workbooks.Count = 1 ….. alors on enregistre et on ferme ok pourquoi pas.

sinon :

Unload MonUserForm

ThisWorkbook.Close False

là on vide et on ferme le user form mais on ne ferme pas le fichier Excel.

Donc en cas de réouverture cela bug puisqu'il est encore ouvert

Bonjour,

Oui, si aucun autre fichier Excel n'est ouvert, je ferme complètement l'application Excel.

S'il y a d'autres fichiers Excel ouverts, alors je ne ferme que celui qui contient ma macro (pour ne pas fermer les autres fichiers)

Si, je ferme le fichier avec ThisWorkbook.Close False

enfin je crois ?

Bonjour,

Oui, si aucun autre fichier Excel n'est ouvert, je ferme complètement l'application Excel.

S'il y a d'autres fichiers Excel ouverts, alors je ne ferme que celui qui contient ma macro (pour ne pas fermer les autres fichiers)

Si, je ferme le fichier avec ThisWorkbook.Close False

enfin je crois ?

ce ne serait pas plutôt

ThisWorkbook.Close SaveChanges:=False

C'est pareil, les 2 fonctionnent : ThisWorkbook.Close SaveChanges:=False ou ThisWorkbook.Close False

J'ai quand même mis ThisWorkbook.Close SaveChanges:=False pour voir.

Même résultat...l'erreur est toujours là...

Les autres fichiers ouverts contiennent aussi des macros ?

sinon je vois pas trop là avec une partie seulement du code et sans pouvoir tester de mon coté si cela engendre le même bug

Non, les autres fichiers ne contiennent pas de macro.

Mais je vois vraiment pas dans quelle partie du code cela pourrait bugger

Mais c'est pas vraiment un bug, puisque quand l'erreur apparaît sur la ligne MonUserForm.Show, je fais F5 direct et la macro se déroule très bien, sans rien changer dans le code.

Je comprends vraiment pas

Peut être en rapport avec la ligne à l'ouverture :

ThisWorkbook.Windows(1).WindowState = xlMinimized

le (1) n'est peut-être plus un (1) quand tu l'ouvres une deuxième fois ?

Test en désactivant cette ligne avec une apostrophe juste devant.

'ThisWorkbook.Windows(1).WindowState = xlMinimized

J'ai testé, l'erreur est toujours là....

J'ai testé, l'erreur est toujours là....

Alors là je ne vois pas c'est comme si la deuxième fois il ne détectait pas l'ouverture du fichier et essaie de lancer le userform à partir d'un autre fichier qui biensur ne l'a pas.

Tu seras peut-être obligé d'annuler le lancer du userform à l'ouverture de ton fichier et

de crééer un Bouton sur la page d'accueil de ton fichier pour lancer le userform.

Dans ce cas là il n'y aurait plus de doute sur le fichier actif.

Oui, c'est ce que je vais faire, mais c'est pas une solution idéale :p

Rechercher des sujets similaires à "erreur uniquement fichier ouvert"