[VBA excel] regroupement de macros
Résolu/Fermé
A voir également:
- Vba macros
- Macros word - Guide
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
11 réponses
ruzakruzak
Messages postés
459
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
31 mai 2007
247
5 mars 2007 à 14:12
5 mars 2007 à 14:12
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 !
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 !
Kvo
Messages postés
27
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
22 mai 2008
3
6 mars 2007 à 18:38
6 mars 2007 à 18:38
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.
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 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+
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+
fl0
Messages postés
357
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
10 novembre 2021
209
6 mars 2007 à 16:56
6 mars 2007 à 16:56
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pol_38
Messages postés
5
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
18 juillet 2007
7 mars 2007 à 11:10
7 mars 2007 à 11:10
ok thanks a lot!
Bonjour à tous,
j'ai un petit soucis dans mes macros avec une fonction call:
Ma fonction de base commence par un
Sub (1)
for i = 41 to 712
....
.....
call sub 2Bonjour à tous,
j'ai un petit soucis dans mes macros avec une fonction call:
Ma fonction de base commence par un
for i = 41 to 712
....
.....
call sub 2
Mon soucis c'est que j'aimerais qu'en faisant appel à ma fonction (sub2) l'indice soit pris en compte dans cette fonction, or par défaut ce n'est pas le cas.
Pourriez vous me dire comment faire passer un indice d'une fonction à une autre sans le réécrire dans la sub 2?
je pense à un truc du genre
call sub2 (with i=indice) ou quelque chose comme ca, mais je ne trouve pas d'indication correcte
Merci à vous et j'espere avoir été assez clair
j'ai un petit soucis dans mes macros avec une fonction call:
Ma fonction de base commence par un
Sub (1)
for i = 41 to 712
....
.....
call sub 2Bonjour à tous,
j'ai un petit soucis dans mes macros avec une fonction call:
Ma fonction de base commence par un
for i = 41 to 712
....
.....
call sub 2
Mon soucis c'est que j'aimerais qu'en faisant appel à ma fonction (sub2) l'indice soit pris en compte dans cette fonction, or par défaut ce n'est pas le cas.
Pourriez vous me dire comment faire passer un indice d'une fonction à une autre sans le réécrire dans la sub 2?
je pense à un truc du genre
call sub2 (with i=indice) ou quelque chose comme ca, mais je ne trouve pas d'indication correcte
Merci à vous et j'espere avoir été assez clair
Utilisateur anonyme
27 févr. 2008 à 14:07
27 févr. 2008 à 14:07
bonjour,
call sub2(i)
sub2(k)
'là on utilise k
end sub
call sub2(i)
sub2(k)
'là on utilise k
end sub
OK, merci
Pour ton indice i je comprends,
Mais pour le k je ne sais pas quoi mettre car je ne connais pas à l'avance la valeur que ca va prendre. Comment puis-je la définir?
dans ma sub(2) il faut que je fasse appel à cet indice ou pas?
c'est ce que je pensais avoir compris dans ton exemple mais alors pourquoi prendre un k et aps un i?
Pour ton indice i je comprends,
Mais pour le k je ne sais pas quoi mettre car je ne connais pas à l'avance la valeur que ca va prendre. Comment puis-je la définir?
dans ma sub(2) il faut que je fasse appel à cet indice ou pas?
c'est ce que je pensais avoir compris dans ton exemple mais alors pourquoi prendre un k et aps un i?
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
27 févr. 2008 à 15:09
27 févr. 2008 à 15:09
bonjour,
Passe ton argument en utilisant une variable globale que tu déclares dans ton module de macros.
;o)
Polux
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
Utilisateur anonyme
27 févr. 2008 à 19:09
27 févr. 2008 à 19:09
Bonjour,
Autre exemple :
Supossons 3 routines dans le module 1 :
Maintenant on souhaite faire l'appel des ces routines à partir d'un tierce module.
Soit le module 2 :
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
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
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
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
Utilisateur anonyme
9 juin 2008 à 08:37
9 juin 2008 à 08:37
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 ?
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 ?