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

VBA Discussion :

Automatiser (le test d') un script contenant une MsgBox


Sujet :

VBA

  1. #1
    Membre actif
    Homme Profil pro
    apprenti
    Inscrit en
    Octobre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : apprenti
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2018
    Messages : 18
    Par défaut Automatiser (le test d') un script contenant une MsgBox
    Bonjour à tous !


    Pour vous situez un peu je suis en charge de developper un programme en Python qui doit automatiser du transfère de données entre fichier xlsm.
    Je rencontre un problème lorsque j'éxecute une macro dans mon programme car cette dernière, au début, ouvre une MsgBox afin de demander confirmation de l'action à l'utilisateur...
    Ce que je cherche à faire c'est exécuter cette macro en automatisant la validation de la MsgBox (tout ca géré par mon programme Python)..

    Je vous met la condition où est présente la MsgBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MsgBox("Souhaitez-vous ré-afficher toutes les données ?", vbYesNo, "MESSAGE") = vbYes Then
    Est ce que je peux récupérer ou agir sur cette objet MsgBox depuis l'extérieur ? ( en VBA est-ce possible ? Si oui je devrais pouvoir faire l'équivalent en passant par python )

    PS : Je ne dois pas modifier le code VBA ( sinon j'aurai juste à supprimer la ligne avec la condition... ).
    Je vous met en lien la discution que j'ai eu à ce propros dans le forum Python :https://www.developpez.net/forums/d2...cute-maco-vba/

    Merci d'avance pour le temps passé, bonne journée !

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Bonjour,

    Pas aisé et peu fiable d'essayer de "piloter" la boîte de message.

    Est-ce qu'il ne serait pas possible de rajouter dans le VBA un test sur UserControl ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim lContinue As Boolean
    If Application.UserControl = False Then
        lContinue = True
    ElseIf MsgBox("Souhaitez-vous ré-afficher toutes les données ?", vbYesNo, "MESSAGE") = vbYes Then
        lContinue = True
    End If
    If lContinue Then
    [...]
    End If
    Cela dépend du mode d'ouverture de l'application par le code python (createObject ?).
    Si l'application a été ouverte par l'utilisateur, UserControl est True et la MsgBox est lancée.
    Si l'application a été ouverte depuis un programme externe, UserControl est False et on passe directement à la suite.

  4. #4
    Membre actif
    Homme Profil pro
    apprenti
    Inscrit en
    Octobre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : apprenti
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2018
    Messages : 18
    Par défaut
    Bonjour à tous,

    Premièrement, merci Jean-Philippe, cela me rassure de ne pas être le seul à être embêté avec cette problématique et ça m'aide à la comprendre davantage..

    Je te remercie également Arkham46 pour cette astuce, dans un premier temps je ne voulais pas modifier le code vba du fichier, mais il semble finalement que j'y sois autorisé, donc ce que tu m'as montré pourra me permettre, en modifiant le code vba, de maintenir cette étape de validation si c'est un utilisateur qui lance le fichier. Ce qui est je pense, la solution la plus propre !

    Je clos le sujet, car ma solution sera de modifier le code vba.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/06/2011, 15h56
  2. Réponses: 6
    Dernier message: 14/04/2011, 00h03
  3. Réponses: 2
    Dernier message: 18/03/2010, 17h36
  4. Executer un script php contenant une base de donnée
    Par regh12 dans le forum Langage
    Réponses: 1
    Dernier message: 31/10/2009, 00h06
  5. Faire un mode pas à pas pour un script contenant une boucle
    Par rambc dans le forum Général Python
    Réponses: 6
    Dernier message: 23/09/2009, 17h41

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