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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
Dim TblTxt() As New Classe1
Private Sub UserForm_Initialize()
Dim Txt As MSForms.TextBox
Dim NbCtrl As Integer
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim Haut As Integer
Dim Gauche As Integer
Dim Largeur As Integer
Dim Hauteur As Integer
Dim Espace As Integer
Dim Barre As Integer
Dim LaDate As Date
Dim Cel As Range
'date pour entrée des valeur
LaDate = Date
'recherche la date afin de récupérer le numéro de ligne
Set Cel = Range("N:N").Find(LaDate, , xlValues, xlWhole)
'si pas trouvé, fin !
If Cel Is Nothing Then Exit Sub
'hauteur de la barre de titre de la Form
Barre = 18
'dimensions des contrôles
Hauteur = 20
Largeur = 20
'espace les séparant
Espace = 5
'nombre de contrôles
NbCtrl = 80
'point de départ
Haut = Espace
Gauche = Espace
'numéro de la première ligne devant recevoir les données
K = Cel.Row
'boucle sur le nombre
For I = 1 To NbCtrl
'création des TextBox
Set Txt = Me.Controls.Add("Forms.TextBox.1", "Txt" & I, True)
J = J + 1
'définition de certaines propriétés des TextBox
With Txt
.Top = Haut
.Left = Gauche
.Height = Hauteur
.Width = Largeur
.Tag = Chr(78 + J) & K
End With
'stocke le TextBox dans le tableau
ReDim Preserve TblTxt(1 To I)
Set TblTxt(I).GroupeTxt = Txt
Gauche = Gauche + Largeur + Espace
'si 10 contrôles ont été créés, passe à la ligne suivante
If I Mod 10 = 0 Then
Haut = Haut + Hauteur + Espace
Gauche = Espace
J = 0
K = K + 1
End If
Next I
'adapter si besoin de plus de place sur la Form
Me.Width = Espace * 12 + Largeur * 10
Me.Height = Barre + Espace * 10 + Hauteur * 8
End Sub |