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

Python Discussion :

[Résolu] Fermer l'application EXCEL avec Python [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Septembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2019
    Messages : 14
    Points : 5
    Points
    5
    Par défaut [Résolu] Fermer l'application EXCEL avec Python
    Bonjour,

    C'est mon premier post sur Python.
    Je cherche à fermer l'application EXCEL à partir du code Python.
    Il ne s'agit pas de fermer un workbook ouvert mais bien l'application Excel.
    Avez-vous une idée du code qu'il faut employer?

    Merci à tous pour le temps que vous prendrez pour répondre

    Fox

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Fermer une application de l'extérieur, c'est identifier le processus qui exécute "l'image" correspondante et, s'il n'y a pas d’ambiguïté, le tuer.

    En ligne de commande, ça se fait avec "taskkill /F /IM excel.exe".
    Ce qui se traduit facilement avec Python par os.system("taskkill /F /IM excel.exe") ou en utilisant subprocess.call.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Septembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2019
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Salut wiztricks,

    Merci beaucoup pour ton aide, j'ai essayé le code et ça fonctionne bien.

    J'avais une question complémentaire: si deux workbooks sont ouverts en même temps.

    L'un des deux est celui que je cherche à fermer. Est-ce possible de fermer l'un et pas l'autre?

    Je prends un exemple, j'ai deux fichiers Excel ouverts en même temps : exemple1.xlsx et exemple2.xlsx.

    je veux fermer exemple2.xls uniquement, est-ce possible à partir du code Python?

    Merci d'avance

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par foxvba Voir le message
    je veux fermer exemple2.xls uniquement, est-ce possible à partir du code Python?
    Dire à Excel de fermer un workbook peut se faire en mimant les actions de l'utilisateur ou en programmant Excel.

    pyautogui permet de mimer les actions de l'utilisateur et pywin32 permet d'avoir l'interface COM qui permet de "programmer" Excel (ainsi que d'autres bibliothèques qu'on trouve en cherchant un peu).

    Reste à apprendre à se servir de ces joujoux pour arriver à coder ça avec...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,
    Citation Envoyé par foxvba Voir le message
    J'avais une question complémentaire: si deux workbooks sont ouverts en même temps.
    L'un des deux est celui que je cherche à fermer. Est-ce possible de fermer l'un et pas l'autre?
    Je prends un exemple, j'ai deux fichiers Excel ouverts en même temps : exemple1.xlsx et exemple2.xlsx.
    je veux fermer exemple2.xls uniquement, est-ce possible à partir du code Python?
    oui c'est possible sous windows en utilisant l'interface COM d'excel comme suggérer par wiztricks.
    En plus c'est moins dangereux que taskkill qui peut corrompre les fichiers ouverts.
    Voici un exemple qui :
    1 - Regarde si il y a une instance d'Excel qui tourne.
    2 - Si oui , liste tous les classeurs ouverts.
    3 - Ferme le classeur MonClasseur.xlsx en sauvegardant les modifications effectuées.
    4 - Ferme tous les autres classeurs ouverts sans sauvegarder les modifications.
    5 - Ferme l'instance d'Excel

    Voici le code :
    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
    17
    18
    19
    20
    21
    22
    23
    import win32com.client
    import os
    try:
        xl = win32com.client.GetActiveObject("Excel.Application")
        # Si pas d'exception il y a une instance d'excel qui tourne
        print('Excel est ouvert')
        # on liste tous les classeurs ouverts
        wb_names = [wb.Name for wb in xl.Workbooks]
        print(wb_names)
        # on ferme le classeur Monclasseur.xlsx si il est ouvert et on enregistre les changements
        if "MonClasseur.xlsx" in wb_names:
            xl.Workbooks("MonClasseur.xlsx").Close(SaveChanges=True)
        # on ferme tous les autres classeurs mais sans enregistrer les changements
        for classeur in xl.Workbooks:
            classeur.Close(SaveChanges=False)
        # on ferme Excel
        xl.Quit()
        del (xl)
     
     
    except Exception as e:
        #print(str(e))
        print('Excel est fermé')
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Septembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2019
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous les deux,

    Je vous remercie pour ces solutions. Je vais tester et je vous fais un retour.

    Merci.

    Fox

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Septembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2019
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    jurassic pork,

    Je viens d'essayer ta solution. Elle fonctionne à merveille.

    Je tiens à vous remercier pour cette aide car ce n'était pas gagné d'avance

    Très bonne journée

    Fox

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

Discussions similaires

  1. Comment fermer un fichier Excel avec Access
    Par zoom61 dans le forum VBA Access
    Réponses: 22
    Dernier message: 24/08/2017, 09h33
  2. Réponses: 9
    Dernier message: 17/11/2008, 17h18
  3. comment fermer l'application excel ?
    Par mohammed0585 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/11/2008, 18h23
  4. [VBA EXCEL] Fermer l'application Excel
    Par scully2501 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/10/2007, 12h17
  5. Manipuler un fichier excel avec python
    Par dipajero dans le forum Général Python
    Réponses: 4
    Dernier message: 09/02/2006, 23h14

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