vba fermeture classeur plantage de excel

MathildeQ

XLDnaute Nouveau
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()

Application.DisplayAlerts = False
ThisWorkbook.Close SaveChanges:=True
Application.DisplayAlerts = True

End Sub


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
 
G

Guest

Guest
Re : vba fermeture classeur plantage de excel

Bonjour Mathilde,

peut-être qu'en faisant les choses en deux temps:

Code:
[COLOR=#0000ff]Private Sub quitter_Click()

Application.DisplayAlerts = False[/COLOR]
[COLOR=#0000ff]ThisWorkbook.Save
ThisWorkbook.Close[/COLOR]
[COLOR=#0000ff]Application.DisplayAlerts = True

End Sub[/COLOR]

A+
 

MathildeQ

XLDnaute Nouveau
Re : vba fermeture classeur plantage de excel

Bonjour à vous deux.

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..."
 

tototiti2008

XLDnaute Barbatruc
Re : vba fermeture classeur plantage de excel

Re,

lorsque tu fait disparaitre tes userform, essaye un

Unload Userform

à la place de

Userform.Hide

il semblerait que certains Userform restant en mémoire à la fermeture du classeur peuvent entrainer un plantage Excel...
 

MathildeQ

XLDnaute Nouveau
Re : vba fermeture classeur plantage de excel

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.

J'ai toujours le plantage d'excel
 

MathildeQ

XLDnaute Nouveau
Re : vba fermeture classeur plantage de excel

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?:confused:
 

Dull

XLDnaute Barbatruc
Re : vba fermeture classeur plantage de excel

Salut Mathilde, Hasco, Tototiti, Michel, le Forum

peut-être comme ça

Code:
Private Sub quitter_Click()
Unload UserForm1
Sheets("Accueil").Select
Range("A1").Select
ThisWorkbook.Close Savechanges:=True
End Sub

EDITION:
je n'avais pas vu que ce code à déjà été donné... désolé :eek:
Bonne Journée
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : vba fermeture classeur plantage de excel

Re
Ce qui fait quitter Excel c'est:

Code:
[COLOR=#0000ff]Application.Quit[/COLOR]

sinon a tester:

Code:
thisworkbook.close

Mais je ne suis pas sur du résultat.

Ah bonjour Dull, oui a tester ta solution.
 

Dull

XLDnaute Barbatruc
Re : vba fermeture classeur plantage de excel

Re le Fil

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.

J'ai toujours le plantage d'excel

t'esaussimiroquemoiMichel:D

Juste pour ajouter que le Application.DisplayAlerts = False et True ne servent pas car on demande d'enregistrer le fichier avant de le Fermer

Bonne Journée
 

MathildeQ

XLDnaute Nouveau
Re : vba fermeture classeur plantage de excel

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 :(
 
Dernière édition:
G

Guest

Guest
Re : vba fermeture classeur plantage de excel

RE,

iL a l'oeilnotreamiDullquiboitducitronvert!!!!:D:D:D

@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+
 

Discussions similaires

Réponses
2
Affichages
142

Statistiques des forums

Discussions
312 500
Messages
2 089 004
Membres
104 003
dernier inscrit
adyady__