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

Interfaçage autre langage Python Discussion :

récupérer/affecter la valeur de retour d'un msgBox éxécuté par une maco vba


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre à l'essai
    récupérer/affecter la valeur de retour d'un msgBox éxécuté par une maco vba
    Bonjour à tous !

    Pour vous situer un peu : mon programme ouvre des fichiers excel.xlsm (ayant la même structure et les même macro), puis modifi des données pour le mette a jours, pour cela je dois activer une macro qui a pour rôle d'afficher ou de cacher certaines cellules.

    Pour ce faire j'éxécute en python la macro avec l'instruction ;
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    xl.Application.Run("fileName.xlsm!modulName.macroName")


    Jusque la tout va bien, mais, cette macro commence par ouvrir une MsgBox YesNo,
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    If MsgBox("Souhaitez-vous ré-afficher toutes les données ?", vbYesNo, "MESSAGE") = vbYes Then


    Ce que je souhaiterai c'est répondre à cette msgBox directement dans mon programme après l'instruction qui exécute la macro, savez-vous si cela est possible ?

    Si vous avez les réponses à ces questions :
    -Est il possible de récupérer l'objet msgBox créé lors de l'exécution de la macro ?
    -Est il possible via Python de mettre à True la variable qui contient le résultat de la msgBox ?
    -Et tout simplement, est il possible de faire ce que je souhaite ?

    Quelques précisions ;
    - je ne peux/veux pas modifier la macro qui certe peut être inutile car je souhaite répondre par oui à chaques msgBox qui s'ouvrira
    - l'éxecution de la macro me retourne None
    - j'utilise python3.6 afin que win32com.client pour ouvrir les fichiers.xlsm et éxécuter la macro

    Merci d'avance pour le pris...

  2. #2
    Expert éminent sénior
    Salut,

    Citation Envoyé par antoineRp0 Voir le message
    -Et tout simplement, est il possible de faire ce que je souhaite ?
    Pour faire ce que vous souhaitez, il faut une interface.
    Donc déjà si vous ne savez pas faire cela depuis un VBA appelant votre macro, vous ne pourrez pas le faire depuis Python d'autant qu'il y a EXCEL au milieu.

    Il serait plus simple de faire un copie/coller de la macro et la modifier pour qu'elle n'ait pas besoin d'attendre la réponse utilisateur.

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

  3. #3
    Membre à l'essai
    Bonjour, merci beaucoup pour votre réponse ho grand célèbre Wiztricks !

    Citation Envoyé par wiztricks Voir le message

    Pour faire ce que vous souhaitez, il faut une interface.
    Donc déjà si vous ne savez pas faire cela depuis un VBA appelant votre macro, vous ne pourrez pas le faire depuis Python d'autant qu'il y a EXCEL au milieu.

    Il serait plus simple de faire un copie/coller de la macro et la modifier pour qu'elle n'ait pas besoin d'attendre la réponse utilisateur.

    - W
    Je pense, même si cela me déplait, que ma solution sera de modifier la macro... ( c'est la solution la plus simple mais c'est pas comme ça que je souhaitais résoudre mon problème.. )
    Je vais quand même essayer de chercher une solution en vba que j'exécuterai en Python, si vous avez des infos / documentations à me conseiller sur l'automatisation de réponse d'un msgBox en vba ou quelque chose qui s'en rapproche je suis preneur !
    Bonne journée à tous, je clos le sujet ce soir si pas de nouvelles.

  4. #4
    Expert éminent sénior
    Citation Envoyé par antoineRp0 Voir le message
    Je vais quand même essayer de chercher une solution en vba que j'exécuterai en Python, si vous avez des infos / documentations à me conseiller sur l'automatisation de réponse d'un msgBox en vba ou quelque chose qui s'en rapproche je suis preneur !
    Il faut aller dans un forum VBA et leur demander comment automatiser le test d'un script contenant une MsgBox...
    Si çà se fait, c'est certainement pas de la même façon qu'avec Python, mais çà pourra vous donner des idées.


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

  5. #5
    Membre à l'essai
    Citation Envoyé par wiztricks Voir le message
    Il faut aller dans un forum VBA et leur demander comment automatiser le test d'un script contenant une MsgBox...
    Si çà se fait, c'est certainement pas de la même façon qu'avec Python, mais çà pourra vous donner des idées.


    - W
    Re :

    Après quelques coups de téléphones j'ai l'impression que la modification du code vba est inévitable...
    Je vous remercie pour ces infos/conseils, je vais demander de ce pas.

    Bonne journée et encore merci beaucoup pour les pistes !


    EDIT : Je vous met le lien de la discution dans le forum VBA si jamais elle aboutie : https://www.developpez.net/forums/d2015621/logiciels/microsoft-office/general-vba/automatiser-test-d-script-contenant-msgbox/#post11191625