Flux rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[VBA excel] regroupement de macros

pol_38, le lundi 5 mars 2007 à 14:08:04
Hello

Je suis débutant en VBA pour excel et j'aimerais savoir comment affecter plusieurs "sous macro", inscrite dans le même module, à une seule macro.

Pour l'instant, la seule solution que j'ai trouvé consiste à "concatener" les différentes macros pour en former une seule, mais je trouve que cette solution n'est pas très élégante...

Merci de vos avis!
Configuration: Windows XP
Internet Explorer 6.0
Répondre à pol_38  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ruzakruzak, le lundi 5 mars 2007 à 14:12:39
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 !
Répondre à ruzakruzak

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
pol_38, le mardi 6 mars 2007 à 16:49:30
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+
Répondre à pol_38

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 6 mars 2007 à 16:56:17
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
Répondre à fl0

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Kvo, le mardi 6 mars 2007 à 18:38:46
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.
Répondre à Kvo

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
pol_38, le mercredi 7 mars 2007 à 11:10:43
ok thanks a lot!
Répondre à pol_38

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
bicki, le mercredi 27 février 2008 à 14:04:31
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
Répondre à bicki

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
giheller, le mercredi 27 février 2008 à 14:07:27
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
Répondre à giheller

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
bicki, le mercredi 27 février 2008 à 14:53:41
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?
Répondre à bicki

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
bicki, le mercredi 27 février 2008 à 14:57:21
En fait j'ai mis mon indice entre () dans ma sub principale et lorsque je fais tourner le programme il me met un message d'erreur:

Nombre d'arguments incorrect ou affectation de propriété incorrecte.

Je sens que c'est un détail... mais pas encore résolu

PS: désolé du double
Répondre à bicki

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
giheller, le mercredi 27 février 2008 à 18:26:31
Bonsoir,

pour k tu ne mets rien il prend la valeur de i passé par l'appel du sousu programme. JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail
Répondre à giheller

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le mercredi 27 février 2008 à 15:09:25
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
Répondre à Polux31

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Lupin.A, le mercredi 27 février 2008 à 19:09:10
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
Répondre à Lupin.A

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
bicki, le jeudi 28 février 2008 à 11:57:10
Merci pour les infos, ca semble fonctionner en faisant juste apple à mon i ou k entre ().

Merci à vous
Répondre à bicki

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
cocodi, le dimanche 8 juin 2008 à 15:03:22
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
Répondre à cocodi

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 giheller, le lundi 9 juin 2008 à 08:37:13
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
Répondre à giheller
VBA Excel - Ecrire dans fichier txt (Résolu)Bonjour à tous Je dois exécuter 2 macros en vba Excel, - une qui ouvre un fichier text et incrémente un tableau de variable, là pas de problème (voici le code épuré pour info) --------------------- Private Sub Command6_Click() On Error GoTo... www.commentcamarche.net/forum/affich-4854458-vba-excel-ecrire-dans-fichier-txt
[VBA-EXCEL] Gestion version reference outlook (Résolu)Bonjour a tous ! Je suis nouveau sur le forum J'ai un niveau convenable en VBA Excel. J'ai develloper une application permettant de gerer des demandes d'inspection par l'intermediaire d'email. La version sur lequel tourne le... www.commentcamarche.net/forum/affich-3375027-vba-excel-gestion-version-reference-outlook
VBA excel formulaire de saisie - aide (Résolu)Bonjour, je suis débutant en VBA excel, et j'ai construis un formulaire de saisie (userform). Malheureusement je n'arrive pas à le finaliser... il me manque : a/ le numéro de transaction (TRANID) ne change pas lorsque j'appuie sur OK... www.commentcamarche.net/forum/affich-6740657-vba-excel-formulaire-de-saisie-aide
[VBA Excel] exporter cellules en couleur (Résolu)VBA Excel - importer / exporter des cellules en couleur bonjour ou bonsoir à toutes / tous ! J'ai un soucis ! Plusieurs jours/heures/aides pour essayer de faire quelque chose, j'explique ! J'ai un tableau excel, 3 feuilles, sur la... www.commentcamarche.net/forum/affich-2956148-vba-excel-exporter-cellules-en-couleur
[VBA] Executer une macro dans une macro. (Résolu)Bonjour, Dans VBA excel, je cherche à executer une macro dans une macro, après quelques recherche dans le forum et sur excel je suis toujours en quète ! :) merci de votre aide !... www.commentcamarche.net/forum/affich-3072880-vba-executer-une-macro-dans-une-macro
[VBA, EXCEL] - Macro (Résolu)Bonjour, j'aurais besoin de vos conseils ici concernant VBA Excel. Je vous expose la situation pour ensuite expliquer ma problématique. Dans un fichier Excel, j'ai des tableaux qui me servent à quantifier la répartition de mes portefeuilles... www.commentcamarche.net/forum/affich-7339645-vba-excel-macro
Toutes les réponses pour « [VBA excel] regroupement de macros »