1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

Fermer et quitter excel

Discussion dans 'Forum Excel' démarrée par KTM, 7 Février 2019.

  1. KTM

    KTM XLDnaute Junior

    Inscrit depuis le :
    16 Septembre 2018
    Messages :
    75
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Salut chers tous ,
    J'aimerais ajouter sur mon Userform un bouton "ENREGISTRER" Qui va enregistrer et quitter excel si mon classeur actif est le seul ouvert sinon enregistrer et fermer simplement . Merci
     
  2. Chargement...

    Discussions similaires - Fermer quitter excel Forum Date
    Code VBA pour quitter ou fermer excel Forum Excel 15 Juin 2008
    Macro pour Enregistrer, Fermer et quitter Forum Excel 5 Mars 2008
    XL 2013 fermer userform depuis un autre classeur Forum Excel 19 Janvier 2019
    Fermer un classeur avec le croix de son userform Forum Excel 11 Décembre 2018
    XL 2013 Fermer un fichier pdf avec VBA Forum Excel 9 Octobre 2018

  3. JM27

    JM27 XLDnaute Occasionnel

    Inscrit depuis le :
    6 Octobre 2015
    Messages :
    435
    "J'aime" reçus :
    26
    Utilise:
    Excel 2010 (PC)
    Bonjour
    Code (Text):
    Sub Quitter()
        If Workbooks.Count = 1 Then
            ThisWorkbook.Save
            Application.Quit
        Else
            ThisWorkbook.Close saveschanges = True
        End If
    End Sub
     
    A associer à ton bouton
     
  4. Robert

    Robert XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    9724
    "J'aime" reçus :
    691
    Habite à:
    Sète
    Utilise:
    Excel 2010 (PC)
    Bonjour KTM, bonjour le forum,

    L'instruction
    Workbooks.Count permet de savoir combien de classeurs sont ouverts. Toutefois, tu peux, si tu utilises le fichier des macro personnelles PERSONAL.XLSB avoir 2 classeurs ouverts. Sauf que le classeur des macros personnelles est caché.
    Donc il faut que tu vérifies avant si tu utilises un classeur des macro personnelles avec le code :

    Code (Visual Basic):

    Sub Macro1()
    For I = 1 To Workbooks.Count
      MsgBox Workbooks(I).Name
    Next I
    End Sub

    Selon le cas le code sera
    • avec le fichier des macros personnelles :

    Code (Visual Basic):

    Sub Macro1()
    If Workbooks.Count = 2 Then
      ThisWorkbook.Close True
      Application.Quit
    Else
      ThisWorkbook.Close True
    End If
    End Sub
    • sans le fichier des macros personnelles :
    Code (Visual Basic):

    Sub Macro1()
    If Workbooks.Count = 1 Then
      ThisWorkbook.Close True
      Application.Quit
    Else
      ThisWorkbook.Close True
    End If
    End Sub
     
  5. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26301
    "J'aime" reçus :
    2311
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
  6. KTM

    KTM XLDnaute Junior

    Inscrit depuis le :
    16 Septembre 2018
    Messages :
    75
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    OK . Mais il se trouve que mon classeur doit s'ouvrir sur d'autres postes .Certains on le fichier de macros perso et d'autres pas.
     
  7. Robert

    Robert XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    9724
    "J'aime" reçus :
    691
    Habite à:
    Sète
    Utilise:
    Excel 2010 (PC)
    Re,

    Peut-être comme ça mais je ne garantis rien... :

    Code (Visual Basic):

    Sub Macro1()
    Dim CL As Workbook
    Dim TEST As Boolean

    For Each CL In Workbooks
      If UCase(Right(CL.Name)) = "XLSB" Then TEST = True
    End If

    Select Case TEST
      Case True
      If Workbooks.Count = 2 Then
      ThisWorkbook.Close True
      Application.Quit
      Else
      ThisWorkbook.Close True
      End If
      Case False
      If Workbooks.Count = 1 Then
      ThisWorkbook.Close True
      Application.Quit
      Else
      ThisWorkbook.Close True
      End If
    End Select
    End Sub
    Remarque : il faut pas nous le fâcher notre Job ! Après il devient colère et c'est tout le site qui en pâtit... Empathie...
     
  8. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26301
    "J'aime" reçus :
    2311
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonjour KTM, Robert,

    A mon avis ceci suffit bien :
    Code (Text):
    Sub Fermer()
    If Not ThisWorkbook.Saved Then ThisWorkbook.Save
    If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
    End Sub
    S'il y a des fichiers dont les fenêtres sont masquées Excel restera ouvert, un point c'est tout.

    A+
     
    Robert aime votre message.
  9. Robert

    Robert XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    9724
    "J'aime" reçus :
    691
    Habite à:
    Sète
    Utilise:
    Excel 2010 (PC)
    Re,

    Oeuf Corse ! (comme disent les poules à Calvi)...
     
  10. KTM

    KTM XLDnaute Junior

    Inscrit depuis le :
    16 Septembre 2018
    Messages :
    75
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Merci CHEF ; ça marche mais Excel reste encore ouvert parce que j'ai un fichier de macros personnelles sur mon PC que faire
     
  11. KTM

    KTM XLDnaute Junior

    Inscrit depuis le :
    16 Septembre 2018
    Messages :
    75
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    J'ai essayé mais une erreur survient à ce niveau : If UCase(Right(CL.Name)) = "XLSB" Then TEST = True
     
  12. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26301
    "J'aime" reçus :
    2311
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    On s'en fiche, si vous n'êtes pas handicapé des 2 mains vous aurez à cliquer ensuite sur la croix, un point c'est tout.
     
    arthour973 aime votre message.
  13. Jacky67

    Jacky67 XLDnaute Accro

    Inscrit depuis le :
    12 Juin 2016
    Messages :
    1213
    "J'aime" reçus :
    178
    Utilise:
    Excel 2007 (PC)
    Bonjour à tous
    Perso, je procède de cette manière
    Code (Visual Basic):
    Sub quitter()
    Dim i&, Nombre&
    For i = 1 To Workbooks.Count
      If UCase(Workbooks(i).Name) = "PERSONAL.XLSB" Then Nombre = Workbooks.Count - 1: Exit For
    Next
    With ThisWorkbook
      If Nombre = 1 Then
       .Save
        Application.Quit
      Else
        .Close True
      End If
    End With
    End Sub

     
     
  14. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26301
    "J'aime" reçus :
    2311
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonjour KTM, Robert, Jacky67, le forum,

    Cette macro prend en compte tous les fichiers ouverts dont les fenêtres sont masquées :
    Code (Text):
    Sub Fermer()
    Dim wb As Workbook, win As Window
    If Not ThisWorkbook.Saved Then ThisWorkbook.Save
    For Each wb In Workbooks
        If wb.Name <> ThisWorkbook.Name Then
            If wb.Saved Then
                For Each win In wb.Windows
                    If win.Visible Then ThisWorkbook.Close 'ferme le fichier
                Next win
            Else
                ThisWorkbook.Close 'ferme le fichier
            End If
        End If
    Next wb
    Application.Quit 'ferme Excel
    End Sub
    Bonne journée.

    A+
     
  15. MJ13

    MJ13 XLDnaute Barbatruc

    Inscrit depuis le :
    23 Mars 2005
    Messages :
    8632
    "J'aime" reçus :
    518
    Utilise:
    Excel 2016 (PC)
    Bonjour à tous

    Comme je m'étais trompé de discussion (Merci Job75 :)), faut dire que les 2 avatars se ressemblaient, je remet le code.

    Suivant ce que je veux faire j'utilise un de ces codes:


    Code (Visual Basic):
    Sub Ferme_Et_Sauve_Juste_ce_Fichier()
    'Ferme excel si seul ce fichier est ouvert
    Dim w As Window
    For Each w In Windows
    If w.Caption = ThisWorkbook.Name Then GoTo suite
        'Workbooks(w.Caption).Close True
    suite:
    Next w
    ThisWorkbook.Save
    If Workbooks.Count = 1 Then Application.EnableEvents = False: Application.Quit
    ThisWorkbook.Close
    End Sub

    Sub Ferme_Tout_ET_Sauve()
    Dim w As Window
    For Each w In Windows
    If w.Caption = ThisWorkbook.Name Then GoTo suite
        Workbooks(w.Caption).Close True
    suite:
    Next w
    ThisWorkbook.Save
    Application.EnableEvents = False
    Application.Quit
    End Sub

    Sub Ferme_Tout_Rend_Visible_Et_Sauve()
    Dim w As Window
    For Each w In Windows
    If w.Visible = False Then w.Visible = True
    If w.Caption = ThisWorkbook.Name Then GoTo suite
        Workbooks(w.Caption).Close True
    suite:
    Next w
    ThisWorkbook.Save
    Application.EnableEvents = False
    Application.Quit
    End Sub

    Sub Ferme_Tout_Sans_Sauver()
    Dim w As Window
    For Each w In Windows
    If w.Caption = ThisWorkbook.Name Then GoTo suite
        Workbooks(w.Caption).Close False
    suite:
    Next w
    ThisWorkbook.Close 0
    End Sub
     
     
  16. KTM

    KTM XLDnaute Junior

    Inscrit depuis le :
    16 Septembre 2018
    Messages :
    75
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    MERCI pour tout
     

Partager cette page