VBA : Appel macro à l'aide d'une variable

Résolu
Buzz -  
 Buzz -
Bonjour,

Je vous explique succinctement la situation. J'ai un classeur excel qui pilote le choix d'ouverture de 3 autres classeurs.

Les noms de ces classeurs sont stockés dans des variables.

Dans le second classeur ouvert est stocké obligatoirement un macro et j'aimerais appeler cette macro dans le classeur pilote.

En résumé,

'Les 3 classeurs
nomfichier1="Relevé de côte d'usure.xlsm"
nomfichier2="Feuille de référence U50.xlsm"
nomfichier3="L1.1.1.csv"


'Vous l'avez compris y a plein d'espace dans les chaines de caractères...

'L'appel de la macro
Application.Run "nomfichier2!Module1.Traitement"

Il faudrait que je puisse changer les " " " de la variable nomfichier2 en " ' ". Mais je ne sais
pas comment faire...
Si vous avez la moindre once de solution je suis preneur parce que ça urge ;)

Merci à tous !

5 réponses

  1. le père
     
    Bonjour

    Tu n'as pas à changer les " " " de la variable nomfichier2 en " ' " car il n'y a pas de " " " dans la variable nomfichier2. Les délimiteurs utilisés pour encadrer une chaîne ne sont pas dans la chaîne.
    Et visiblement, il te manque les bases de la programmation : tu ne fais pas la différence entre une variable et une expression littérale.
    Pour résoudre ton problème, je pense que ce tu cherches à faire c'est :
    Application.Run nomfichier2 & "!Module1.Traitement"
    0
  2. Buzz
     
    Bonjour,

    Merci pour ta réponse! Je suis effectivement un novice en programmation, ce n'est pas ma tasse de thé !

    Mais bon je fouille et j'essaie. Je vais de suite essayer ce que tu m'as proposé.

    Buzz
    0
  3. Buzz
     
    Re,

    Bon le problème persiste.

    Le nom de mon classeur ayant des espaces lorsque je rentre :

    Application.Run nomfichier2 & "!Module1.Traitement"

    il lance la macro : 'Feuille de Calcul U50.xlsm!Module1.Traitement'

    Et il ne trouve pas cette macro.

    Ceci ne proviendrai-t-il pas de l'absence de " ' " pour délimiter le nom du classeur? C'est à dire qu'il faudrait que je puisse lancer :

    'Feuille de Calcul U50.xlsm'!Module1.Traitement

    Et si oui comment les ajouter afin qu'il ne considère pas la ligne comme une note?

    Buzz
    0
  4. le père
     
    Si tu as besoin de 'Feuille de Calcul U50.xlsm'!Module1.Traitement :
    Application.Run "'" & nomfichier2 & "'!Module1.Traitement"
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Buzz
     
    Merci beaucoup pour ton aide !

    Ca marche enfin !

    Bonne journée !
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,
      Un petit complément d'info...
      Pour le nom de fichier : "Relevé de côte d'usure.xlsm" ton code rique également de planter car dans ton nom de fichier il y a une apostrophe... A supprimer je pense.
      0
    2. Buzz
       
      Okay je vais voir si je peux faire ça !

      Merci .
      0