Affecter une Macro à plusieurs boutons

Résolu
Deudeu79 Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -  
Deudeu79 Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour tout le monde,

Voici mon problème,

A l'initialisation d'un UserForm je créer une série de bouton dans ce userform, le nombre de bouton est variable. Mon problème est que quand l'utilisateur clique sur l'un des de c'est bouton j'aimerais effectuer une macro. La macro est la même pour tout les boutons il y a juste un paramètre qui change en fonction du bouton que l'on clique.

Est-il possible de créer une macro pour tout les boutons?
Existe t-il un évènement dans le Userform qui détecte quand l'on appuis sur l'un des boutons?

Voici le code qui me permet de créer la liste des bouton

Private Sub UserForm_Initialize()

    'Déclaration des Variables
    Dim Obj As Control
    Dim I As Integer
    Dim N As Integer
    Dim Colonne As Integer
    
    'initialisation des variables
    I = 1
    N = 1
    Colonne = VariableGlobal.ColonneUserForm
    UserForm10.Caption = VariableGlobal.TitreUserForm
    UserForm10.Height = 40
    UserForm10.Width = 290
    
    'Permet de Passer toute les groupe d'appareil
    While Sheets("Appareil").Cells(2, Colonne).Value <> ""
 
        Set Obj = Me.Controls.Add("forms.CommandButton.1")
        With Obj
            .Name = "Button" & Colonne
            .Object.Caption = "Ajouter " & Sheets("Appareil").Cells(2, Colonne).Value
            .Width = 114
            .Height = 24
        End With
        
        'on effectue un test pour pouvoir passer les bouton sur deux colonnes
        If N Mod 2 = 0 Then
        
            'On place le bouton sur la deuxième colonne
            Obj.Left = 150
            Obj.Top = 36 * (I - 1) + 12
            
            'incrementation de la vraible pour pouvoir mettre les bouton a la ligne du dessous
            I = I + 1
        
        Else
        
            'on passe à la ligne du dessous
            Obj.Top = 36 * (I - 1) + 12
        
            'On place le bouton sur la deuxième colonne
            Obj.Left = 10
            
            'met la taille du Userfom en fonction du nombre de label à afficher
            UserForm10.Height = UserForm10.Height + 36
        
        End If
        
        'Passe au groupe d'appreil suivant
        Colonne = Colonne + 1
        N = N + 1
        
               
    Wend

End Sub


Je vous remercie par avance de votre aide et du temps que vous y avez consacré.

Anthony,
A voir également:

2 réponses

melanie1324 Messages postés 1504 Date d'inscription   Statut Membre Dernière intervention   155
 
bonjour,

je ne sais pas répondre à toutes tes questionsà vrai dire, je ne sais répondre qu'à celle-ci :

Existe t-il un évènement dans le Userform qui détecte quand l'on appuis sur l'un des boutons?

oui ==> sub commandbutton_click
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,


un exemple en partant de votre code, ajout d'une procedure pour la collection bouton(dans le VBA de l'UF) et d'un module de classe pour les clics bouton. Dans ce module de classe, mettez l'appel de votre macro a la place de la msgbox

https://www.cjoint.com/c/FDrrfbwezmf
0
Deudeu79 Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   23
 
Bonjour,

Après essaie de votre solution, elle fonctionne parfaitement et je vous en remercie

Cordialement
0