Bonjour,
j'ai créée un bouton "quitter" dans un userform qui permet lorsque l'on clique dessus de fermer le classeur et de sauvegarder le fichier.
voici le code:
Private Sub quitter_Click()
Le problème c'est que une fois sur deux lorsque l'on clique sur le bouton "quitter" ,en fermant le fichier il plante excel mais enregistre quand même les changements.
Je précise que je suis sous excel 2003.
Pourriez vous me donner une explication à ce phénomène. Est ce un problème de code?
Je vous remercie par avance.
Cordialement,
Mathilde
Peux-tu nous dire quel type de plantage ça occasionne dans Excel ?
J'ai entendu parler d'un bug du genre et ça m'intéresse de savoir quel type d'erreur est renvoyée...
En deux temps ça ne fonctionne pas non plus. Enfin si , mais excel plante encore après.
En fait, j'ai remarquée que si j'ouvre excel (mon userform s'ouvre ) et que je clique directement sur "quitter" ça fonctionne bien. Mais c'est lorsque je fais des applications ie je clique sur un autre bouton qui m'ouvre un nouveau userform qui me fait un graphique et ensuite je fais retour pour revenir à mon userfom initial et là lorsque je clique sur "quitter" ça plante excel mais enregistre bien mes modifications sur le fichier ..
Le message d'erreur est le suivant :"Microsoft excel a rencontré un problème et doit fermer..."
J'ai remarqué que j'avais oublié de fermer ce userform donc j'ai rajouté unload userform2 mais ça ne change rien cf. code ci dessous:
Private Sub quitter_Click()
Unload UserForm2
Application.DisplayAlerts = False
ThisWorkbook.Close SaveChanges:=True
Application.DisplayAlerts = True
End Sub
Tout mes userforms se ferment avec des unload je n'ai pas utilisé Userform.Hide.
Je te remercie MJ13.
En effet, mon problème est similaire. Une de tes solutions fonctionne :
Private Sub quitter_Click()
Application.DisplayAlerts = True
Unload UserForm2
Sheets("Accueil").Select
Range("a1").Select
ActiveWorkbook.Save
Application.DisplayAlerts = False
Application.Quit
End Sub
Mais le souci c'est que ça ferme tous les classeurs !
Comment faire pour que ça ferme que le classeur actif sans plantage?
J'ai remarqué que j'avais oublié de fermer ce userform donc j'ai rajouté unload userform2 mais ça ne change rien cf. code ci dessous:
Code:
Private Sub quitter_Click()
Unload UserForm2
Application.DisplayAlerts = False
[B]ThisWorkbook.Close SaveChanges:=True[/B]
Application.DisplayAlerts = True
End Sub
Tout mes userforms se ferment avec des unload je n'ai pas utilisé Userform.Hide.
Bonjour à tous et merci à vous d'essayer de m'aider.
Désolé mais vos solutions ne fonctionne pas.
Pour le moment la seule solution qui marche c'est avec Application.Quit
mais du coup on est obligé de fermer tous les classeurs ce qui est embêtant.
Les workbook.close me retourne l'erreur "Microsoft excel a rencontré un problème et doit fermer..." ce qui ferme d'ailleurs aussi tout ce qui était ouvert du coup .
ps: Merci Dull de ta précision mais même en les retirant ça me produit toujours le bug
@Mathilde: il y a des fois où excel semble incapable de récupérer un classeur qui a subit trop de plantage. La seule solution que j'ai trouvé et de tout reconstruire. En exportant les modules en fichier .bas, .frm etc...
Les feuilles dans un nouveau classeur
Code:
sheets(array("Feuil1","Feuil2", etc..)).copy
Puis réimporter les fichier .bas (les modules de code) et .frm (les modules du UserForm....
En croisant les doigts..... Mais cela permet souvent de savoir si le problème vient du code ou d'un défaut du classeur.
A+