Executer BOUTON depuis autre classeur VBA

Résolu/Fermé
Anonyme - 23 sept. 2009 à 15:38
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 23 sept. 2009 à 16:40
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

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 sept. 2009 à 15:53
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
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 sept. 2009 à 16:40
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