VBA Appeler procédure dynamique dont le nom est variable

VBA Appeler procédure dynamique dont le nom est variable - VB/VBA/VBS - Programmation

Marsh Posté le 20-03-2011 à 12:14:13    

Bonjour à tous,
 
Je bloque sur un problème, peut être que certains pourront m'aider.
J'ai créé un userform dont un contrôle créé des boutons de manière dynamique. J'arrive à affecter une procédure à ces boutons tant que leur nom est "figé".
Cependant leur nom contient une variable i et je ne sais pas comment appeler la procédure appliquée à ces boutons (lorsque je clique sur eux).
 
Voici le code en bref :
Private Sub Monpremiercontrole ()
Set Monbouton = Me.Controls.Add("Forms.CommandButton.1", "Monbouton" & i, True)
End Sub
 
Private Sub Monbouton & i _Click()
la procédure déclenchée par le bouton Monbouton & i
End Sub
 
En fait je ne sais pas comment intégrer le i dans le nom de ma dernière private sub
 
Je ne sais pas si je suis bien clair... Merci de votre aide car là je suis bloqué...

Message cité 1 fois
Message édité par GrandCactus le 20-03-2011 à 12:23:06
Reply

Marsh Posté le 20-03-2011 à 12:14:13   

Reply

Marsh Posté le 21-03-2011 à 08:03:48    

GrandCactus a écrit :

Bonjour à tous,
 
Je bloque sur un problème, peut être que certains pourront m'aider.
J'ai créé un userform dont un contrôle créé des boutons de manière dynamique. J'arrive à affecter une procédure à ces boutons tant que leur nom est "figé".
Cependant leur nom contient une variable i et je ne sais pas comment appeler la procédure appliquée à ces boutons (lorsque je clique sur eux).
 
Voici le code en bref :
Private Sub Monpremiercontrole ()
Set Monbouton = Me.Controls.Add("Forms.CommandButton.1", "Monbouton" & i, True)
End Sub
 
Private Sub Monbouton & i _Click()
la procédure déclenchée par le bouton Monbouton & i
End Sub
 
En fait je ne sais pas comment intégrer le i dans le nom de ma dernière private sub
 
Je ne sais pas si je suis bien clair... Merci de votre aide car là je suis bloqué...


 
Rajouter une procédure dans un module :

Sub AddProcedureToModule()
        Dim VBProj As VBIDE.VBProject
        Dim VBComp As VBIDE.VBComponent
        Dim CodeMod As VBIDE.CodeModule
        Dim LineNum As Long
        Const DQUOTE = """" ' one " character
 
        Set VBProj = ActiveWorkbook.VBProject
        Set VBComp = VBProj.VBComponents("Module1" )
        Set CodeMod = VBComp.CodeModule
         
        With CodeMod
            LineNum = .CountOfLines + 1
            .InsertLines LineNum, "Public Sub SayHello()"
            LineNum = LineNum + 1
            .InsertLines LineNum, "    MsgBox " & DQUOTE & "Hello World" & DQUOTE
            LineNum = LineNum + 1
            .InsertLines LineNum, "End Sub"
        End With
     
    End Sub


A adapter à ton problème


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 21-03-2011 à 19:43:31    

je te remercie pour ta réponse je vais regarder ca

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed