Nom de macro en variable ou en boucle VBA Excel 2017

Résolu/Fermé
DragonBallZ1981 - 9 août 2022 à 09:19
 DragonBallZ1981 - 24 août 2022 à 15:11

Bonjour,

Aillant de problème résolu grâce à votre aide je reviens vers vous.

Je sais pas trop comment expliquer ça mais est-il possible de mettre le nom d'une macro en variable afin de mettre une seule fois la condition ou bien de la décomposé pour l'utilisé dans une boucle

Exemple:

J'ai différente macro 

Sub Menuiserie_1

Sub Menuiserie_2

Sub Menuiserie_3

etc...

1ère solution, est-il possible de faire

Dim Menuiserie As Sub

If xxxxx Then

Menuiserie = Menuiserie_1

ElseIf xxxxx Then

Menuiserie=Menuiserie_2

ElseIf xxxxx Then

Menuiserie=Menuiserie_3

End if

Call Menuiserie

Ou bien 2ème solution si c'est possible en boucle

For m = 1 To Nbr_Menuiserie

Call Menuiserie_m

next m

Merci de votre aide


Windows / Chrome 104.0.0.0

A voir également:

3 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié le 9 août 2022 à 12:07

Bonjour,

Un exemple avec toutes les macros dans un même module :

Option Explicit

Sub Menuiserie_1()
MsgBox "M1"
End Sub

Sub Menuiserie_2()
MsgBox "M2"
End Sub

Sub Menuiserie_3()
MsgBox "M3"
End Sub

Sub EnvoiAvecIf()
Dim res As String
res = InputBox("saisir un chiffre entre 1 et 3", "Quelle macro lancer?")
If Val(res) < 1 Or Val(res) > 3 Then
    MsgBox "Imbécile!"
Else
    Application.Run "Menuiserie_" & res
End If
End Sub

Sub EnvoiEnBoucle()
Dim i As Integer
For i = 1 To 3
    Application.Run "Menuiserie_" & i
Next
End Sub

Pour le cas ou les macros à appeler seraient dans un autre module (exemple Module12) :

Option Explicit

Sub EnvoiAvecIf()
Dim res As String
res = InputBox("saisir un chiffre entre 1 et 3", "Quelle macro lancer?")
If Val(res) < 1 Or Val(res) > 3 Then
    MsgBox "Imbécile!"
Else
    Application.Run "Module12.Menuiserie_" & res
End If
End Sub

Sub EnvoiEnBoucle()
Dim i As Integer
For i = 1 To 3
    Application.Run "Module12.Menuiserie_" & i
Next
End Sub

0
DragonBallZ1981
9 août 2022 à 12:42

Bonjour Pijaku,

Merci beaucoup, j'avais essayer le "Application.run" mais j'avais pas réussis, peut-être à cause des modules.

Je vais bien étudier ta solution et l'adapter a mon besoin,

Encore merci beaucoup pour l'aide apporter sur ce site.

Je reviendrais clôturer le sujet lorsque j'aurai réussis.

Merci.

0
DragonBallZ1981
24 août 2022 à 15:11

Bonjour a tous,

C'est parfait, j'ai réussi a l'adapter dans mon code.

Merci beaucoup de votre aide.

Cordialement

0