Probleme de fermeture classeur sous vba

Résolu/Fermé
thivame Messages postés 60 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 2 janvier 2023 - Modifié par thivame le 26/10/2014 à 08:52
 t - 8 nov. 2014 à 20:40
Bonjour,
j'ai créé un classeur (classeurA) avec une dizaine de page, lorsque l'on ouvre le classeur nous sommes "accueillis" par un userform... tout fonctionne bien mais le problème est que sur ce userform, j'ai un bouton "QUITTER" qui normalement nous permet de quitter le classeur.
Seul problème, c'est que seul la fonction application.quit fonctionne, mais moi j'aimerais que si un autre classeur est ouvert, seul le classeur A se ferme .
j'ai essayé avec ce code:
Private Sub CommandButton8_Click() ' boite de dialogue pour la sauvegarde ou non

Réponse = MsgBox("voulez vous sauvegarder ?" & Chr(13) & Chr(10) & " OUI pour enregistrer et quitter ; NON pour fermer sans enregistrer(perte des saisies", vbYesNoCancel)
If Réponse = vbYes Then
If Workbooks.Count <> 1 Then
Application.DisplayFullScreen = False
ActiveWorkbook.Close True
End If
If Workbooks.Count = 1 Then
ThisWorkbook.Save
Application.Quit
End If
End If
If Réponse = vbNo Then
If Workbooks.Count <> 1 Then
Application.DisplayFullScreen = False
ActiveWorkbook.Close False
End If
If Workbooks.Count = 1 Then
ThisWorkbook.Saved = True
Application.Quit
End If
End If
If Réponse = vbCancel Then
Application.DisplayFullScreen = True

MsgBox ("fermeture fichier abandonné ; les données ne sont pas sauvegardées")
End If

End Sub


cela a marché une seul fois... je dirais même que lorsque j'essaye un code cela marche la première fois puis plus rien..
on me dit parce que le bouton est dans le userform.... mais j'ai essayé de le faire dans une feuille, un module... c'est pareil..
Mes onglets se cachant, ayant de pages protégées cela aurait il une incidences??
merci par avance pour vos réponses
cordialement


A voir également:

4 réponses

thivame Messages postés 60 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 2 janvier 2023 4
26 oct. 2014 à 21:47
la patience paye... finalement j'ai trouvé j'ai créé un module avec 4 sub de sortie (en public) et dans mon bouton de mon userform pour chaque situation (donc 4) je l'envoie vers le sub correspondant
ce qui donne pour ceux que ca peut aider


Public CancelSortie As Boolean

Sub LaSortie()
Application.DisplayFullScreen = False
CancelSortie = False
ThisWorkbook.Close True

End Sub
Sub LaSortie2()
Application.DisplayFullScreen = False
CancelSortie = False
ThisWorkbook.Save
Application.Quit
End Sub

Sub LaSortie3()
Application.DisplayFullScreen = False
CancelSortie = False
ThisWorkbook.Close False
End Sub

Sub LaSortie4()
Application.DisplayFullScreen = False
CancelSortie = False
Application.Quit

End Sub

j'ai essayer 6 fois chaque sortie et elles ont fonctionnées 6 fois.. ca faisait un bout que je cherchais et c'etait le public que j'avais zappé...
Merci quand meme a vous
cordialement
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
26 oct. 2014 à 21:59
Bonjour,
Juste au passage, il semble que votre code est boiteux .... !
Vous avez bien un seul classeur d'ouvert...Oui / Non !
Et pour quitter il y a 3 choix :
si OUI : enregistrer et fermer le classeur ... !
si NON : fermer le classeur
si ANULER : ne rien faire

0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
27 oct. 2014 à 14:44
Bonjour,
Tant mieux pour vous. Cependant entre temps j'ai créé un classeur avec [UserForm] pour la commande [Quitter] et tout fonctionne correctement avec votre premier code légèrement modifié :
Private Sub CommandButton1_Click()
'Private Sub CommandButton8_Click() ' boite de dialogue pour la sauvegarde ou non
Réponse = MsgBox("voulez vous sauvegarder ?" & Chr(13) & Chr(10) & " OUI pour enregistrer et quitter" & Chr(13) & Chr(10) & " NON pour fermer sans enregistrer(perte des saisies)", vbYesNoCancel)
If Réponse = vbYes Then
If Workbooks.Count <> 1 Then
Application.DisplayFullScreen = False
ActiveWorkbook.Close True
End If
If Workbooks.Count = 1 Then
ThisWorkbook.Save
Application.Quit
End If

ElseIf Réponse = vbNo Then
If Workbooks.Count <> 1 Then
Application.DisplayFullScreen = False
ActiveWorkbook.Close False
End If
If Workbooks.Count = 1 Then
ThisWorkbook.Saved = True
Application.Quit
End If
ElseIf Réponse = vbCancel Then
Application.DisplayFullScreen = True

MsgBox ("fermeture fichier abandonné ; les données ne sont pas sauvegardées")
End If
End Sub
0
merci le pingou pour vouloir m'aider.
Je me permets de prendre vore code (cela peut peut etre alléger la fermeture du classeur....merci
0