Macro avec Call

olivierk1450

XLDnaute Nouveau
Bonjour à tous,

J'ai une macro avec une boucle qui est censé lancer d'autre macro.
Impossible de trouver la syntaxe.
Si nombre_ai égal à 3 par exemple, il doit me lancer la macro nommée AI1 puis AI2 puis AI3 qui se trouve dans le même module.
Merci d'avance pour vos solutions.

Sub test()
Dim nombre_ai As Integer
Dim i As Integer
Dim nom_macro As String
nombre_ai = Sheets("donnees_macro").[d32]
For i = 1 To nombre_ai
If i > nombre_ai Then
Exit For
End If
nom_macro = "AI" & i
Call nom_macro '==> Ca bug
Next
End Sub

Sub AI1
Msgbox (Macro1)
End Sub

Sub AI2
Msgbox (Macro2)
End Sub

Sub AI3
Msgbox (Macro3)
End Sub
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
RE

Bien que le classeur ne m'était pas adressé, je te propose une façon de contourner le problème:

Regrouper les macros au sein d'une seule procédure avec un paramètre définissant le code à utiliser (voir exemple en PJ).

Cordialement.
 

Pièces jointes

  • Copie de Classeur1-1.xlsm
    14.7 KB · Affichages: 42

job75

XLDnaute Barbatruc
Bonsoir olivierk1450, herve62, Papou-net,
Code:
Sub test()
Dim i%
On Error Resume Next 'si B1 ne va pas
For i = 1 To [B1]
  Select Case i
    Case 1: AI1
    Case 2: AI2
    Case 3: AI3
  End Select
Next
End Sub

Sub AI1()
MsgBox "a"  'pour tester
End Sub

Sub AI2()
MsgBox "b"  'pour tester
End Sub

Sub AI3()
MsgBox "c"  'pour tester
End Sub
A+
 

Si...

XLDnaute Barbatruc
Bonsoir

Même remarque que dans le fil précédent : quand elle est dans un Module, la macro test agit sur la feuille active qui n'est peut =-être pas la feuille de référence, d'où la précision à ajouter

For i = 1 To Feuil1.[B1] (Feuil1 pour la réference)

Il faudra sans doute revoir les macros appelées.
 

Discussions similaires

Réponses
6
Affichages
230

Statistiques des forums

Discussions
312 111
Messages
2 085 395
Membres
102 882
dernier inscrit
Sultan94