|
|
|
|
Configuration: Windows XP Internet Explorer 6.0
Tu mets tes macros dans des modules et, quand tu en as, besoin tu les appelles avec la fonction Call.
par exemple tu as un sub qui s'appelle rato, eh bien tu utilises la ligne suivante pour l'utiliser avec un argument positif : Sub jeteste() ' mon début de code Call rato 'ma suite de code End sub --- J'ai des preuves ! |
ok merci du tuyau, mais ce n'est pas excatement ce que je cherchais à savoir. J'essaie d'être plus précis:
Disons que j'ai un module, comprenant plusieurs macros, séparés par une ligne; du genre: sub(machin) x x x End sub ----------------------------- Sub(truc) x x End Sub ------------------------- Et je voudrais lancer toutes les macro de ce module en une seule fois, sans rien changer dans le module. Est-possible? a+ |
salut les gars
excusez pour le derangement quelqu'un peut il me dire comment on créer une nouvelle discussion g unprobleme sous Access et g vraiment besoin du forum Merci de me repondre meme si je ne vous aide pas |
Bonjour,
Comme l'a dit ruzakruzak, il faut utiliser la fonction call. Supposons que tu ais les procédures suivantes dans le même module. sub abc end sub ------------ sub def end sub ------------ sub ghi end sub ------------ Si tu veux exécuter à l'affilée les 3 procédures tu dois en créer une quatrième qui appelle les trois autres avec la fonction call. Exemple: sub jkl call abc call def call ghi end sub Lorsque tu seras sous Excel tu exécuteras la procedure jkl bien entendu :) Petite précision: crée ta procédure appellante dans le même module que les autres pour le moment, puis renseigne toi sur les différentes portées des procédures. Bon courage. |
ok thanks a lot!
|
bonjour,
call sub2(i) sub2(k) 'là on utilise k end sub JL, m'enfin c'est juste mon avis @+ se faire aider, n'est pas faire faire son travail
|
bonjour,
Passe ton argument en utilisant une variable globale que tu déclares dans ton module de macros. Option Explicit Dim k As Variant Sub (1) for i = 41 to 712 K = i .... ..... call sub 2 Sub2 (k) .... ;o) Polux |
Bonjour,
Autre exemple : Supossons 3 routines dans le module 1 :
Option Explicit
Sub AfficheResultat(ByVal MonResultat As Long)
MsgBox MonResultat
End Sub
'
Sub CalculResultat(ByVal Indice1 As Long, ByRef Indice2 As Long)
Indice2 = (Indice1 * 2)
End Sub
'
Sub EntreeValeur(ByRef donnees As Long)
Dim Valeur As Variant
Valeur = InputBox("Enterz un nombre : ", "DONNÉES", "100")
donnees = Transforme(Valeur)
End Sub
'
Function Transforme(ByVal Entree As Variant) As Long
Transforme = CLng(Val(Entree))
End Function
'
Maintenant on souhaite faire l'appel des ces routines à partir d'un tierce module. Soit le module 2 :
Option Explicit
Sub Principal()
Dim Reponse As Long, Multiplicateur As Long
Multiplicateur = 5
Module1.EntreeValeur Reponse
Module1.CalculResultat Multiplicateur, Reponse
Module1.AfficheResultat Reponse
End Sub
'
Sub Principal2()
Dim Reponse As Long, Multiplicateur As Long
Multiplicateur = 5
Call Module1.EntreeValeur(Reponse)
Call Module1.CalculResultat(Multiplicateur, Reponse)
Call Module1.AfficheResultat(Reponse)
End Sub
'
Remarquer la syntaxe lorsque l'on utilise l'instrction CALL. Remarquer aussi la différence entre ByVal et ByRef. Byval passe la valeur de la variable ByRef passe l'adresse de la variable ( donc modifiable ). Cordialement. Bonne continuité. Lupin |
Merci pour les infos, ca semble fonctionner en faisant juste apple à mon i ou k entre ().
Merci à vous |
bonjour tout le monde
j'ai à peu prés le meme probleme avec la fonction call. dans mes macro quand j'ai par exemple "call active_feuille_param" ou call cibler("sommer") cela ne marche pas, j'ai toujours une erreur au niveau du débogage et je comprends pas grand chose; meci de me dire ce qu'il faut faire |
Bonjour,
et si tu expliquais ce que tu veux faire. un call appelle une macro. call active_feuille_param c'est quoi ? une macro ou le nom d'une feuiile ? call cibler("sommer") cibler c'est une macro ? "sommer" du texte passé à la macro ? JL, m'enfin c'est juste mon avis @+ se faire aider, n'est pas faire faire son travail |