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 :
Cette macro est appelé à l'initialisation de l'UserForm_SelectionInt.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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
Mais bien entendu ça n'a pas fonctionné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Private Sub CommandButton_ & AgencementUF.UF_selectionInt.i & _Click()
Merci d'avance pour vote aide.
SamSam
Partager