Bonsoir,
je voudrais initialiser un userform et créer automatiquement les labels sur base d'un tableau
ex :
A1 txt1
A2 Txt2
B1 Or1
B2 OR2
Je voudrais label 1 = txt 1 et etc
Merci de m'orienter..
Bonsoir,
je voudrais initialiser un userform et créer automatiquement les labels sur base d'un tableau
ex :
A1 txt1
A2 Txt2
B1 Or1
B2 OR2
Je voudrais label 1 = txt 1 et etc
Merci de m'orienter..
Bonjour,
C'est tout à fait possible de le faire avec un code dans ce style :
Tu définis la variable 'obj' par exemple : Dim obj As Control
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Set obj = Me.Controls.Add("Forms.Label.1", "nom" & numéro, True) With obj .Left = 'position gauche .Top = 'position haut .Caption = 'intitulé de ta rubrique End With
tu adaptes les rubriquess soulignées à ton cas
et tu peux initialiser toutes les propriétés de tes contrôles (taille,police,etc) de même que leur position que tu dois bien sûr adapter.
Tu peux insérer ainsi tous tes titres et bien sûr rajouter les textbox ou combobox de saisie afférents.
Bonjour
Voilà un "etc" bien inquiétant, surtout si pléthorique ...Je voudrais label 1 = txt 1 et etc
Les contrôles Labels n'étant que des étiquettes (non éditables), il parait bien plus sage d'utiliser en leurs lieu et place une listbox, plutôt que de charger un userform d'une énorme quantité de labels
Bonjour,
dans l'exemple, les entetes de ListBox sont crées avec des labels.
Boisgontier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub EnteteListBox() x = Me.ListBox1.Left + 8 Y = Me.ListBox1.Top - 12 For i = 1 To NbCol Set lab = Me.Controls.Add("Forms.Label.1") lab.Caption = Rng.Offset(-1).Cells(1, i) lab.Top = Y lab.Left = x x = x + Rng.Columns(i).Width * 1.1 temp = temp & Rng.Columns(i).Width * 1.1 & ";" Next temp = Left(temp, Len(temp) - 1) Me.ListBox1.ColumnWidths = temp End Sub
Bonjour …
« Voilà un "etc" bien inquiétant, surtout si pléthorique ... »
Salut unparia, il est vrai qu’une éruption de boutons peut générer des alarmes inquiétantes donc, on peut s’amuserà réduire leur nombre comme dans l’exemple suivant :
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 Option Explicit Dim dc As Byte, n As Byte, L As Integer, t As Byte Private Sub UserForm_Initialize() Me.Height = 160 dc = [Bd].Columns.Count Lst.ColumnCount = dc For n = 1 To dc: Lst.ColumnWidths = [Bd].Columns(n).Width: Next Lst.Width = 80 * dc + 80: Usf.Width = Lst.Left + Lst.Width + 80 Lst.RowSource = [Bd].Address Col.List = Application.Transpose([Bd].Rows(0)) End Sub Private Sub Lst_Click() L = Lst.ListIndex + 1 Me.Height = 200 End Sub Private Sub Col_Click() If Lst.ListIndex < 0 Then Exit Sub t = Col.ListIndex Modif = Lst.List(Lst.ListIndex, t) End Sub Private Sub Modif_Change() Change.Visible = Modif <> "" End Sub Private Sub Change_Click() If MsgBox("Accepter ?", vbYesNo, "Attention, la base sera changée !") = vbNo Then Modif = "" Else [Bd].Item(L, t + 1) = Modif.Value UserForm_Initialize End If End Sub
Partager