Probleme de fermeture classeur sous vba

Résolu
thivame Messages postés 64 Statut Membre -  
 t -
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. thivame Messages postés 64 Statut Membre 4
     
    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
  2. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
  3. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
  4. t
     
    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