vba fermé un classeur si un autre est ouvert

thivame

XLDnaute Junior
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 quiter 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 toutes les applications et fermer Excel ?" & 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 meme que lorsque j'essaye un code cela marche la premiere fois puis plus rien..
on me dit parceque le bouton est dans le userform.... mais j'ai essayé de le faire dans une feuille, un module... c'est pareil..
Mes ongltes se cachant, ayant de pages protégées cela aurait il une incidences??
merci par avance pour vos reponses

PS: les pieces jointes ont été crées avec winrar...

cordialement
 

Pièces jointes

  • Suiviessai.part1.zip
    244.2 KB · Affichages: 37
  • Suiviessai.part2.zip
    84.4 KB · Affichages: 31

Staple1600

XLDnaute Barbatruc
Re : vba fermé un classeur si un autre est ouvert

Bonjour à tous

J'ajouterai à ce que vient de dire chris (salut ;) )
Deux options possible dans le Close
ThisWorkBook.Close True ' ferme le classeur en sauvegardant les modifs
ou
ThisWorkBook.Close False 'ferme le classeur sans sauvegarder les modifs
 

Staple1600

XLDnaute Barbatruc
Re : vba fermé un classeur si un autre est ouvert

Re, Bonjour MJ13


MJ13
N'est ce pas ce que je viens de dire dans mon précédent message à 9h20? ;)

PS: A moins que ce soit là un trait d'humour décoché à 9h21 de ta part qui m'aurait échapper ? :p:D
 

Staple1600

XLDnaute Barbatruc
Re : vba fermé un classeur si un autre est ouvert

Re

MJ13
Sauf qu'on a lu a peu trop vite tous les deux ;)

thivame* était déjà au courant ;)
(ligne ci-dessous issue de son premier message)
ActiveWorkbook.Close True

*: Au fait thivame, bienvenue sur le forum ;)
 

thivame

XLDnaute Junior
Re : vba fermé un classeur si un autre est ouvert

bonjor a vous,
Effectivement j'étais au courant et j'ai tout essayé (de ce que je connaissais), et rien y fait, ca marche une fois puis ca ne fonctionne plus (lorsque j'ai un autre classeur d'ouvert) le seul truc qui fonctionne est de quitter excel...
Ais je loupé quelque chose??
 

thivame

XLDnaute Junior
Re : vba fermé un classeur si un autre est ouvert

bonjor a vous,
Effectivement j'étais au courant et j'ai tout essayé (de ce que je connaissais), et rien y fait, ca marche une fois puis ca ne fonctionne plus (lorsque j'ai un autre classeur d'ouvert) le seul truc qui fonctionne est de quitter excel...
Ais je loupé quelque chose??

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
 

Discussions similaires

Statistiques des forums

Discussions
311 715
Messages
2 081 822
Membres
101 822
dernier inscrit
holale