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 :

Appeler une macro avec paramètres


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 20
    Points
    20
    Par défaut Appeler une macro avec paramètres
    Bonjour,

    Je suis en train d'améliorer une macro excel existante.
    Pour le moment j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.RUN monNomDeFichier & EXTENSION & "!" & "Module2.MaMacro"
    Ce qui permet de lancer ma macro de manière correcte.
    Le problème c'est que pour éviter d'écrire des valeurs en dur dans la macro, je voudrais passer des chaines de caractères utilisées dans ma macro en paramètre de celle-ci.

    J'ai donc modifié l'entete de ma macro de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MaMacro
    ...
    End Sub
    En ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MaMacro(Str1 As String, Str2 As String, Str3 As String, Str4 As String, Str5 As String)
    ...
    End Sub
    Le problème est que pour l'appel je ne sais pas comment l'appeler !

    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.RUN "" & monNomDeFichier & EXTENSION & "!" & "Module2.MaMacro" & "" & "," & Str1 & "," & ... etc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.RUN "(" & monNomDeFichier & EXTENSION & "!" & "Module2.MaMacro" & "" & "," & Str1 & "," & ... etc & ")"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.RUN monNomDeFichier & EXTENSION & "!" & "Module2.MaMacro(" & Str1 & "," & ... etc & ")"
    Mais ça ne fonctionne pas ! Que faire ?

    Merci par avance de vos réponses ou de tous documents ou topics que je pourrais consulter pour me dépanner.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Raptang et le forum
    Regard l'aide à Call.
    tu peux transmettre des paramètres de différentes manières.
    Call maMacro (paramètres)
    ou tu peux utiliser des variables globales, ou passer par une feuille de calcul.
    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Merci de ta réponse. J'ai consulté quelques infos sur Call.
    Mais ça ne fonctionne toujours pas car il ne tolère pas les "&".
    En gros il attends directement le nom de la macro a appeler alors que la macro a appeler est dans un autre fichier et nécessite le nom du fichier contenant.
    D'où le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monNomDeFichier & EXTENSION & "!" & "Module...
    Or avec Call il s'attend au passage des paramètres après le premier mot. Il génère une erreur de type :
    Erreur de Compilation
    Attendu : fin d'instruction
    Au niveau du "&" après "monNomDeFichier".

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Raptang et le forum
    Un dépannage ne permet aucune imprécision
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monNomDeFichier & EXTENSION & "!" & "Module...
    ??? c'est quoi exactement ton instruction complète ?
    Fais une chose simple : mets un msgbox avec ta construction et vérifie que tu as exactement le résultat attendu. Ce n'est qu'une chaîne de texte. Si le résultat n'est pas bon, Excel ne saura pas l'exploiter. Ou donne-nous la valeur attendue, avec les variables (et leurs contenus sur une donnée). À travailler dans le vide, on avancera pas. Excel ne tolère aucun à-peu-près ! Il lui faut des valeurs exactes.
    A+

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Il est préférable d'essayer progressivement.
    D'abord un appel sans arguments
    monNomDeFichier étant du type XXXXXX.xls

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Ma_Macro = monNomDeFichier & "!" & "Module2.MaMacro1" 
    msgbox Ma_Macro    ' Pour vérifier la syntaxe
     
    Application.RUN Ma_Macro
    Puis avec des arguments
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Ma_Macro = monNomDeFichier & "!" & "Module2.MaMacro" 
    msgbox Ma_Macro    ' Pour vérifier la syntaxe
     
    Application.RUN Ma_Macro, Str1, Str2, Str3
    Attention il y a MaMacro et MaMacro1 dans le code ci dessus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MaMacro1
    msgbox "Bonjour ici MaMacro1"
    end sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MaMacro (Arg1, Arg2, Arg3)
    msgbox ("Bonjour ici MaMacro Arg1 : " & Arg1)
    end sub
    PPz

  6. #6
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir toutes et tous,

    Voici un petit exemple avec les commentaires dans 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    Sub Test_Run()
     
        Dim NomFichier As String
        Dim Extension As String
        Dim NomModule As String
        Dim NomMacro As String
        Dim Arg1 As String
        Dim Arg2 As Single
     
        NomFichier = "D:\Test Run"
        Extension = ".xls"
        NomModule = " Module1"
        NomMacro = "Test"
        Arg1 = "Mon argument N°1"
        Arg2 = 1.2345
     
        '>>> Attention à ne pas oublier les deux apostrophes !!!
        Application.Run "'" & NomFichier & Extension & "'!" & NomModule & "." & NomMacro, Arg1, Arg2
     
        'si la proc appelée se trouve dans un module standard, il n'est
        'alors pas nécessaire de préciser le nom du module et dans ce cas, la
        'commande devient :
        Application.Run "'" & NomFichier & Extension & "'!" & NomMacro, Arg1, Arg2
     
        'par contre, si la proc se trouve dans le module d'une feuille ou du classeur, il est
        'nécessaire d'indiquer son nom de la manière suivante :
        NomModule = "Feuil1"
        'ou :
        NomModule = "Thisworkbook"
     
        Application.Run "'" & NomFichier & Extension & "'!" & NomModule & "." & NomMacro, Arg1, Arg2
     
    End Sub
     
    'cette proc dans un module standard d'un autre classeur
    '(ici "D:\Test Run.xls")
    Public Sub Test(Arg1 As String, Arg2 As Single)
     
        MsgBox Arg1 & vbCrLf & Arg2
     
    End Sub
    Bon courrage.

    Hervé.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Excuses moi,
    Je ne comprends pas ton dernier post.
    Est-ce une question ou une solution ?
    - si c'est une question, merci de préciser ce qui ne marche pas
    - si c'est une solution, merci d'ajouter Résolu au fil de discussion

    Cordialement
    PPz

Discussions similaires

  1. Appel à une fonction avec paramètre contenant apostrophe
    Par tomy29 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/02/2012, 19h10
  2. [Batch] Appel de macro avec paramètres
    Par dewey01 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 03/02/2011, 14h22
  3. Assigner Bouton à une Macro avec paramètres
    Par fardon57 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/10/2010, 15h15
  4. appeler une méthode avec paramètre dans une page JSP
    Par javasmif dans le forum Struts 2
    Réponses: 1
    Dernier message: 06/12/2007, 10h48
  5. Réponses: 3
    Dernier message: 20/04/2007, 14h06

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