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 :

Test procédure source


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut Test procédure source
    Bonjour,

    Je me posais la question suivante :

    Dans le cas d'appel de procédure, est-il possible de tester qu'elle est la procédure source ?
    Je m'explique :

    J'ai des données à compiler (jusque là, rien d'extraordinaire). Pour cela je me greffe sur une extraction que je fais tourner. Sauf que, je n'ai pas besoin qu'elle réalise toutes les actions prévues.

    En somme, est ce que j'ai moyen de dire à ma macro :
    - Je te lance à partir de cette procédure, donc tu ne vas faire que ce que je te demande.

    Bonne journée à vous,

    Trystan

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Trystan, bonjour le forum,

    Regarde peut-être du coté de
    Application.Caller...

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Application.Caller ne fonctionnera pas dans ce cadre, on l'utilisera par exemple pour identifier des clics boutons présents sur des feuilles

    Pour ma part, ayant par le passé ouvert une discussion similaire, nous en étions resté à des solutions simples :

    - transmettre sous forme de paramètre le nom de la procédure appelante à la procédure appelée
    - utiliser une variable ou un tableau public qui va stocker l'information

    d'autres solutions très lourdes sont également abordées
    https://www.developpez.net/forums/d1...ure-appelante/

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par Trystan441 Voir le message
    Dans le cas d'appel de procédure, est-il possible de tester quelle est la procédure source ?
    Dans ce cas Application.Caller ne donne pas le nom de la procédure appelante.
    Le plus simple est de transmettre le nom de la procédure appelante dans les arguments de la procédure appelée.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Merci pour vos retours,

    Effectivement, je suis tombé sur ton post Joe pendant mes recherches mais je n'ai pas réussi à me dépatouiller,

    Ca m'a plutôt l'air technique de gérer !

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Trystan441 Voir le message
    En somme, est ce que j'ai moyen de dire à ma macro :
    - Je te lance à partir de cette procédure, donc tu ne vas faire que ce que je te demande.
    Solution simple : mettre un paramètre à la macro appelée.
    Au plus simple, tu mets un paramètre String et, dans ton Call, tu mets le nom de la macro appelante.
    Un peu plus sophistiqué, tu crées un paramètre définissant ce que tu comptes faire dans la macro appelée, en utilisant par exemple un code binaire ou unune suite de caractères que tu décomposeras avec un Mid().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test(PP As String)
    If Mid(PP, 1, 1) = "1" Then
        Action 1
    End If
    If Mid(PP, 2, 1) = "1" Then
        Action 2
    End If
    ... etc ....

  7. #7
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    J'essaye tant bien que mal de tester cela, sans succès ...

    Je bloque sur l'insertion du paramètre dans la procédure appelée :

    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
    Sub testappel()
     
    Dim i As String
    i = "testappel"
     
    TestAppelTest(i as String)
     
    End Sub
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
    Sub TestAppelTest()
     
    If i = "testappel" Then
        MsgBox ("OK")
    Else
        MsgBox ("Non")
    End If
     
    End Sub
    Y aurait-il quelqu'un pour m'indiquer ce qui cloche ?

    Merci,

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub testappel()
        TestAppelTest "testappel"
    End Sub
     
    Sub TestAppelTest(i As String)
        If i = "testappel" Then MsgBox "OK" Else MsgBox "Non"
    End Sub
    C'est la procédure appelée qui doit être munie d'un paramètre.
    La procédure appelante, quant à elle, fourni l'argument dudit paramètre

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Trystan441 Voir le message
    Y aurait-il quelqu'un pour m'indiquer ce qui cloche ?
    Pour compléter ce qui a été écrit :
    https://docs.microsoft.com/fr-fr/off...call-statement
    https://docs.microsoft.com/fr-fr/off.../sub-statement

  10. #10
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

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

    Merci pour vos retours ! Je suis un peu plus éclairé !

    Bonne journée à vous,

    Trystan

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub testappel()
        TestAppelTest 
    End Sub
     
    Sub TestAppelTest(Optional Byval i As Integer=0)
        msgbox i
    If i <10 then TestAppelTest i + 1
     
    End Sub

Discussions similaires

  1. Outil de test Open Source
    Par bubblez dans le forum Test
    Réponses: 0
    Dernier message: 31/03/2015, 14h54
  2. Test code source Android
    Par Messi007 dans le forum Android
    Réponses: 0
    Dernier message: 23/01/2012, 13h10
  3. C#Testing - Data Source
    Par popek dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 22/04/2009, 15h40
  4. Faire un test dans une procédure
    Par PrinceMaster77 dans le forum SQL
    Réponses: 1
    Dernier message: 23/11/2004, 09h55
  5. [JUnit] Où met-on les sources des tests daJUnit ?
    Par guillaume06 dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 11/06/2004, 15h44

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