Probleme de fermeture classeur sous vba

Résolu
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

4 réponses

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