Détecter le clic sur un bouton de UserForm généré par une macro
Bonjour,
j'ai réalisé une macro (contenu dans le module Agencemment UF) permettant d'afficher un UserForm (UserForm_SelectionInt) qui comporte le même nombre de boutons qu'il y a de lignes dans une cellule (ici la C26). Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
Option Explicit
Sub UF_selectionInt()
'GLOSSAIRE
Dim Obj As Control
Dim i As Integer
i = 1
Dim debutLigne As Integer
debutLigne = 1
Dim finLigne As Integer
Dim widthUF As Integer
widthUF = 10
Dim heightUF As Integer
heightUF = 25 + UserForm_SelectionInt.Label_consigne.Height + UserForm_SelectionInt.Label_consigne.Top
Dim clic As Boolean
Do
finLigne = InStr(debutLigne, Range("C26"), Chr(10)) 'permet de connaître la position d'un retour chariot, donc la fin d'une ligne
If finLigne = 0 Then finLigne = Len(Range("C26")) 'si InStr renvoie 0, c'est qu'on a parcourou toutes les lignes de la cellule
'on ajoute un commandButton pour chaque ligne de la cellule
Set Obj = UserForm_SelectionInt.Controls.Add("forms.CommandButton.1")
With Obj
.Name = "CommandButton_" & i
.Object.Caption = Mid(Range("C26"), debutLigne, finLigne - debutLigne + 1) 'affiche chaque ligne de la cellule sur son bouton correspondant
.Left = 2
.Top = 30 * i + 10
.Object.AutoSize = True
If .Width > widthUF Then widthUF = .Width + 10 'definie la largeur du UserForm comme étan celle du bouton le plus large, + 10 pixel
End With
debutLigne = finLigne + 1 'on pase à la deuxième ligne
i = i + 1
Loop While finLigne < Len(Range("C26")) 'on exécute la boucle tant que l'on a pas parcouru toutes les lignes
'Mise en forme du UserForm
With UserForm_SelectionInt
.Width = widthUF
.Height = heightUF + 30 * i + 10
.Label_consigne.Left = (.Width - .Label_consigne.Width) / 2
.Repaint
End With
End Sub |
Cette macro est appelé à l'initialisation de l'UserForm_SelectionInt.
Maintenant passons au problème:
j'aimerais pouvoir détecter le clic sur un des boutons, sachant que le ne connaît pas le nombre de ligne de la cellule C26 (d'où l'intérêt de générer automatiquement les boutons en fonction du nombre de lignes de cette cellule).
J'ai tester des choses telles que
Code:
1 2
|
Private Sub CommandButton_ & AgencementUF.UF_selectionInt.i & _Click() |
Mais bien entendu ça n'a pas fonctionné.
Merci d'avance pour vote aide.
SamSam