Executer BOUTON depuis autre classeur VBA

Résolu
Anonyme -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,
J'ai encore un p'tit souci en vba :)

Voila en fait j'ai un classeur, et je souhaiterais que ce classeur lance le code contenu dans un autre classeur, pour activer ce code, il suffit de cliquer sur un bouton dans l'autre classeur, donc en fait, j'aimerais à partir de mon 1er classeur pouvoir exécuter le bouton contenu dans le 2è classeur..

J'ai déjà lu pas mal de truc pour lancer une macro d'un autre classeur mais sa ne marche pas car moi ce code fait parti de la feuille(en fait il appelle des macros)..

Voila merci :)

3 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    La solution est de lancer les macros les unes après les autres depuis le classeur actif... ou alors ajouter dans le classeur qui contient les macros, une macro qui lance les autres. Cette macro sera lancée depuis le classeur actif.

    Si derrière le bouton, il y a du code (autre que de lancer des macros), il faut l'inclure dans la nouvelle macro.

    En règle générale, il faut éviter de coder directement dans l'éditeur d'une feuille. Il est préférable de créer un module indépendant de la feuille pour y mettre le code. Cela permet, comme dans ton cas de pouvoir utiliser le code par d'autres modules ou classeurs, et également, en cas de suppression de la feuille d'éviter de perdre le code ... ^^

    ;o)
    1
  2. Anonyme
     
    Merci pour ta rep, je sais que l'on ne doit pas coder à l'intérieur d'une feuille, mais en fait j'améliore le travail d'un autre, et je dois réutiliser son code, donc je fais comme je peux avec les moyens que j'ai xD, mais en tout cas merci de m'avoir rep.
    0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Je te conseille de copier/coller le code des feuilles et de les mettre dans un module.

    Par exemple, si derrière ta feuille 1 tu as:

    Sub Command1_Click()
    Dim somme As Integer
    
        somme = Range("A3").Value + Range("A5").Value
        Call macro1(somme)
    
    End Sub


    Créer un module que tu appelles : ModFeuil1

    Public Sub LanceCalcul()
    Dim somme As Integer
    
       somme = Sheets(1).Range("A1").Value + Sheets(1).Range("A5").Value
       Call macro1(somme)
    
    End Sub


    Le code dans ta feuille 1 devient :
    Sub Command1_Click()
        ModFeuil1.LanceCalcul
    End Sub


    Tu pourras ainsi lancer la procédure LanceCalcul depuis un autre classeur ...

    Bon courage

    ;o)
    0