Nom de macro en variable ou en boucle VBA Excel 2017

Résolu

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

3 réponses

  1. Modérateur

    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
    1. 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
      1. Bonjour a tous,

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

        Merci beaucoup de votre aide.

        Cordialement

        0