Lancer une macro à partir d'une autre macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Excel-lent

XLDnaute Barbatruc
Bonjour à tous,

J'ai créé deux macros. La macro coucou est enregistrer sur la feuille 1. La macro Pirouette est enregistrer sur le module 1.

Quelle est l'expression pour dire dans la macro coucou, je veux lancer la "sous" macro pirouette

Code:
Sub Coucou()
...
...
' ici je souhaiterais lancer la macro Pirouette
...
...
End Sub


Sub Pirouette()
...
...
End Sub

Merci d'avance pour votre réponse.
 
Re : Lancer une macro à partir d'une autre macro

Bonjour à tous

MJ, ce n'est pas faux, on peut écrire le nom de la sub comme cela :

Coucou()
...
....
Pirouette
.....
End Sub()

Cependant, au déclenchement de la macro, (coucou), donc de la compilation, en utilisant Call, Excel va chercher où se situent la ou les macros ainsi appelées, donc gain de temps, il n'a plus à le faire, surtout s'il y a de nombreux appels à d'autres procédures..
 
Re : Lancer une macro à partir d'une autre macro

Bonjour à tous,

J'ai essayé, mais sans succès 🙁

J'ai également voulu remplacer le If-Then-ElseIf-ElseIf par Select case également sans succès.

Mais la macro fonctionne, c'est l'essentiel.

Sinon, si quelqu'un peut jeter un coup d'oeil, vous trouverez ma macro ici :
https://www.excel-downloads.com/threads/incrementation-automatique.80609/

Soyez indulgent, je suis débutant en VBA. 😱

Voici la "sous macro"
Code:
' sous macro GénérationNouveauCode
       AncienChrono = AncienChrono + 1
       If AncienChrono < 10 Then
          NouveauChrono = "000" & AncienChrono
       ElseIf AncienChrono < 100 Then
          NouveauChrono = "00" & AncienChrono
       ElseIf AncienChrono < 1000 Then
          NouveauChrono = "0" & AncienChrono
       ElseIf AncienChrono = 1000 Then
          NouveauChrono = AncienChrono
          MsgBox ("Attention c'est le dernier de cette catégorie")
       ElseIf AncienChrono > 1000 Then
          MsgBox ("On ne pas créer ce nouveau code. Maximum atteint!!")
       End If
     ' fin sous macro GénérationNouveauCode

Merci beaucoup pour votre aide.
 
Re : Lancer une macro à partir d'une autre macro

Saut à tous et aux autres,

De plus, quand il y a passage de paramètres, le "Call" est indispensable :
Arachide = cacahuète
Call pirouette(arachide) transporte cachuète.
Pour le code essaie :
Code:
' sous macro GénérationNouveauCode
       AncienChrono = AncienChrono + 1
       If AncienChrono < 10 Then
          NouveauChrono = "000" & AncienChrono
       ElseIf AncienChrono < 100 Then
          NouveauChrono = "00" & AncienChrono
       ElseIf AncienChrono < 1000 Then
          NouveauChrono = "0" & AncienChrono
       ElseIf AncienChrono = 1000 Then
          NouveauChrono = AncienChrono
          MsgBox ("Attention c'est le dernier de cette catégorie")
       ElseIf AncienChrono > 1000 [B]Then[/B] MsgBox ("On ne pas créer ce nouveau code. Maximum atteint!!")
       End If
     ' fin sous macro GénérationNouveauCode
 
Re : Lancer une macro à partir d'une autre macro

Bonjour à tous,

Ah! alors c'est pour cela que j'avais mis cacahuéte entre parenthèses, c'était pour passer les paramètres.
En tous cas merci à tous pour ces précisions.

Par contre pour 95 % des VBAistes, on peut le faire sans call, je n'ai encore jamais utilser call dans mes macros et pourtant j'ai du en faire quelques centaines (je n'oserai pas dire quelques milliers!) à ce jour. Mais bon je vais creuser la question (on ne peut pas tout savoir!).
 
Re : Lancer une macro à partir d'une autre macro

Re bonjour,

Ou la la , je ne comprenais plus rien.
Excel lent est différents de Excel-lent (ca aussi c'est de l'informatique).
En fait je vien juste de m'en apercevoir que vous étiez 2, avant je n'en voyais qu'un (elle est excellente celle la).
Pour Excel_lent, il faut que je cresue la question, mais pas trop de temps en ce momnet.
 
Re : Lancer une macro à partir d'une autre macro

Bonjour a tous.

Bon voila j'étais un peu intuitif sur ce problème de call.
Voici l'aide:


  1. Call, instruction
[FONT=Arial Unicode MS, sans-serif]Transfère le contrôle à une procédure Sub, à une procédure Function ou à une procédure de bibliothèque de liaisons dynamiques (DLL).[/FONT]
[FONT=Arial Unicode MS, sans-serif]Syntaxe[/FONT]
[FONT=Arial Unicode MS, sans-serif][Call] name [argumentlist][/FONT]
[FONT=Arial Unicode MS, sans-serif]La syntaxe de l'instruction Call comprend les éléments suivants :[/FONT]
Élément
Description
Call
Facultatif. Mot clé. S'il est indiqué, vous devez placer argumentlist entre parenthèses. Exemple : [FONT=Arial Unicode MS, sans-serif]Call MaProc(0)[/FONT]

[FONT=Arial Unicode MS, sans-serif]Call MyProc(0)[/FONT]
name
Nom de la procédure à appeler.
argumentlist
Facultatif. Liste, délimitée par des virgules, de variables, tableaux ou expressions à passer à la procédure. La liste argumentlist peut contenir les mots clés ByVal ou ByRef pour décrire comment les arguments sont traités par la procédure appelée. Toutefois, ByVal et ByRef peuvent uniquement être utilisés dans une instruction Call lors de l'appel d'une procédure DLL. Sur Macintosh, ByVal et ByRef peuvent être utilisés dans une instruction Call lors de l'appel d'une ressource de code Macintosh.



[FONT=Arial Unicode MS, sans-serif]Remarques[/FONT]
[FONT=Arial Unicode MS, sans-serif]Il n'est pas obligatoire d'employer le mot clé Call pour appeler une procédure. Toutefois, si vous utilisez ce mot clé dans le cadre de l'appel d'une procédure nécessitant des arguments, l'élément argumentlist doit être placé entre parenthèses. Dans le cas d'une procédure appelée sans le mot clé Call, vous ne devez pas encadrer argumentlist par des parenthèses. Quelle que soit la syntaxe adoptée pour appeler une fonction intrinsèque ou définie par l'utilisateur, la valeur renvoyée par la fonction est perdue.[/FONT]
[FONT=Arial Unicode MS, sans-serif]Pour passer un tableau entier à une procédure, entrez le nom du tableau, suivi de parenthèses vides.[/FONT]
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

D
  • Question Question
Réponses
5
Affichages
249
Didierpasdoué
D
Réponses
43
Affichages
806
Retour