IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fermeture fenêtre Excel [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut Fermeture fenêtre Excel
    Bonjour,

    Comment fermer la fenêtre Excel dans le code suivant : ActiveWorkbook.Close

    Je précise :

    Le code ci-dessus ferme le classeur mais la fenêtre suivante reste affichée :

    Nom : forum.jpg
Affichages : 135
Taille : 54,8 Ko

    J'ai ajouté ce qui suit, tout en m'assurant que ça ne fermerait pas TOUS les classeurs ouverts, mais la fenêtre reste affichée !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoEvents
    Application.Quit
    En vous remerciant par avance pour vos lumières,
    Cordialement,
    jp

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Points : 602
    Points
    602
    Par défaut
    Bonjour, c'est normal car vous fermez seulement le classeur et pas l'instance associé.

    le problème c'est que vous pouvez tout a fait fermer l'instance mais vous allez fermer tous les classeurs ouverts si il y en a.

    Avec :

    Vous allez fermer excel.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Bonjour,

    Merci pour cette proposition.
    Donc pas de solution pour ne fermer que la "fenêtre Excel" du classeur en cours ?
    Dommage,
    Cdt
    jp

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Points : 602
    Points
    602
    Par défaut
    Avec workbook.close tu ferme le classeur mais pas l'instance

    Avec Excel.Application.Quit tu ferme l'instance Excel active donc tous les classeurs ouverts (a part si tu en ouvre dans d'autres instances)

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 585
    Points : 1 080
    Points
    1 080
    Par défaut
    Bonjour,

    Il faudrait que tu dises comment tu as ouvert ton classeur, si c'est pas le code tu as peut-être crée une autre instance d'Excel, et c'est cette instance qu'il faut fermer et pas l'instance d'Excel qui ferme tout.

    Donc tout dépend comment tu as ouvert.

    ONTAYG

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Bonjour,

    Merci,

    Je vais explorer cette piste.
    Cdt
    jp

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    PS : néanmoins, une fois que le classeur est ouvert et par quelque moyen que ce soit, cela fait-il une différence pour le fermer ?

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Points : 602
    Points
    602
    Par défaut
    Citation Envoyé par jpma75 Voir le message
    PS : néanmoins, une fois que le classeur est ouvert et par quelque moyen que ce soit, cela fait-il une différence pour le fermer ?
    Oui car si le fichier est ouvert sur une instance propre, tu peux la fermer sans que cela ne puisse affecter les autres fichiers ouverts. Tandis ce que si le fichier est sur l’instance courante, tu fermera tous les fichiers ouverts.

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Peux-tu préciser : instance propre/instance courante (voire me donner un exemple) ?

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Points : 602
    Points
    602
    Par défaut
    Une instance propre est une instance que tu va ouvrir et dédier a un seul fichier, l'un des grands avantages de faire ça est que tu peux cacher l'instance pour que l'utilisateur ne voit pas l'ouverture et la manipulation de la macro.

    Par contre si tu ouvre le fichier en instance courante tu ne peux pas utiliser cette fonctionnalité.

    Par contre dans ton cas vu que j'imagine que le code se trouve dans le fichier que tu manipule, tu ne peux pas l'ouvrir en instance propre.

    Du coup je te conseille de tester le nombre de fichier ouvert dans ton instance au moment de démarrer le script pour choisir la manière de fermer le classeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Function NBclassOuvert() As Integer
    Dim wb As Workbook
    NBclassOuvert = 0
    For Each wb In Application.Workbooks
        NBclassOuvert = NBclassOuvert + 1
    Next wb
    End Function
     
    Sub fermeture()
    If NBclassOuvert > 1 Then
        ThisWorkbook.Close True
    Else
        ThisWorkbook.Save
        Excel.Application.Quit
    End If
    End Sub
    ici la fonction "NBclassOuvert" vient recenser le nombre de classeur ouvert depuis l'instance du classeur actif, dans le sub fermeture, on vient simplement tester ce nombre, si c'est supérieur a 1 ça veut dire que d'autres fichiers sont ouverts depuis la même instance donc on ne peux pas fermer l'instance et on va seulement fermer le classeur. Et si on se trouve dans le cas ou il y a un seul fichier on va pouvoir fermer l'instance.

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Points : 602
    Points
    602
    Par défaut
    Et pour répondre plus précisément, une instance d'excel est un environnement de travail, tu peux charger une instance sans ouvrir de fichier. Quand tu ouvre un fichier par défaut ça t’ouvre une instance (l’espèce de fenêtre verte) puis également par défaut si tu ouvre d'autres fichiers, ca te les ouvres dans la même instance (ou environnement de travail excel).

    Si les fichiers sont ouverts sur la même instance ça leur permet de partager les ressources logicielles et matérielles de ton ordinateur. Par contre si l'instance plante ça ferme tous tes fichiers.

    En programmation VBA j'ai souvent l'habitude d'ouvrir les fichiers en instance propre cachée, qui me permet de travailler dessus sans que l'utilisateur ne puisse le voir. Par contre ça te prends des ressources plus importantes, ça demande de démarrer une seconde instance donc c'est plus long.

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Je viens d'exécuter ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function NBclassOuvert() As Integer
    Dim wb As Workbook
    NBclassOuvert = 0
    For Each wb In Application.Workbooks
        NBclassOuvert = NBclassOuvert + 1
    Next wb
    MsgBox NBclassOuvert
    End Function
    ...et le message affiche 1 alors que j'ai ouvert deux autres classeurs, soient 3 ouverts en tout.
    J'ai dû rater quelque chose,
    Désolé

  13. #13
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 585
    Points : 1 080
    Points
    1 080
    Par défaut
    Bonjour,

    Comme l'a expliqué ChristianBosch, il faudrait savoir comment tu as ouvert ton classeur, car il faudrait créer une instance propre.

    De plus, jettes un coup d'oeil dans le gestionnaire de tâche, il y a peut-être des instances qui ne sont pas fermés.

    ONTAYG

  14. #14
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Je n'ai fait qu'appliquer cette proposition :

    Par contre dans ton cas vu que j'imagine que le code se trouve dans le fichier que tu manipule, tu ne peux pas l'ouvrir en instance propre.

    Du coup je te conseille de tester le nombre de fichier ouvert dans ton instance au moment de démarrer le script pour choisir la manière de fermer le classeur.

  15. #15
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Points : 602
    Points
    602
    Par défaut
    Citation Envoyé par jpma75 Voir le message
    Je n'ai fait qu'appliquer cette proposition :
    Chez moi quand j'ouvre deux fichiers Excel ça me mets bien 2,

    Essaye d'ouvrir plusieurs fichiers et de lancer la macro fermeture pour voir ce que ça fait.

  16. #16
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 422
    Points : 2 181
    Points
    2 181
    Par défaut
    bonjour,
    Comment fermer la fenêtre Excel dans le code suivant : ActiveWorkbook.Close
    si tu rajoute dans ThisWorkbook ce code tu n'aurras plus de problème!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If ThisWorkbook.Application.Workbooks.Count = 1 Then ThisWorkbook.Application.Quit
    End Sub

  17. #17
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Bonjour,

    Je vais retenir cette dernière solution. Merci !

    Cdt
    jp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fenètre excel à la fermeture
    Par chaispas31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/07/2018, 14h43
  2. [VB6]:fermeture d'une fenêtre excel automatiquement d'après vb
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 24
    Dernier message: 24/07/2006, 11h45
  3. probleme de fermeture d'excel
    Par passie dans le forum Access
    Réponses: 2
    Dernier message: 08/11/2005, 19h34
  4. Fermeture Fichier Excel
    Par beurnoir dans le forum Access
    Réponses: 22
    Dernier message: 28/10/2005, 16h22
  5. Réponses: 2
    Dernier message: 23/06/2005, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo