Option Explicit
Dim WithEvents CBL As ComboBoxLiés ' Déclaration avec évènements d'un objet de type ComboBoxLiés.
Rem. Sélectionnez votre objet CBL dans la liste de gauche au dessus de la fenêtre de code.
' Liste de droite: voir explications des modèles de procédures implantables en face des
' instructions Event situées en tête du module ComboBoxLiés.
Dim TLgn() As Long ' Table des numéros de lignes chargés dans la ListBox1 (mais commence à l'indice 1)
Dim LCou As Long ' Numéro de la ligne courante à mettre à jour (sélectionnée dans la ListBox1)
Private Sub UserForm_Initialize()
Set CBL = New ComboBoxLiés ' Allocation de nouvelles ressources de mémoire à l'objet.
CBL.Plage Feuil2.[A3] ' Prend en fait toutes les lignes utilisées à partir de là. Définit CBL.PlgTablo
CBL.Add Me.CbxNom, "B"
CBL.Add Me.CbxPrenom, "C"
CBL.CorrespRequise = True
CBL.Actualiser
CmdToutAfficher_Click
End Sub
Private Sub CmdToutAfficher_Click()
InitTbLong TLgn, CBL.PlgTablo.Rows.Count
GarnirListe
End Sub
Private Sub BtnEffacer_Click() ' Je vous conseille de mettre un bouton pour effacer les ComboBox
CBL.Nettoyer ' C'est une procédure Public dans le module de classe du nom de son type.
' Et du coup, pour ne pas répéter cette définition, ça s'appelle une méthode.
Rem. Pareil: Une variable déclarée Public dans le module de classe du nom de son type
' telle que CBL.PlgTablo s'appelle une propriété en lecture/écriture.
End Sub
Private Sub CBL_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long) ' 1er évènement principal.
ListBox1.Clear
LCou = 0
If NbrLgn = 0 Then ReDim TLgn(0 To 0)
End Sub
Private Sub CBL_Résultat(Lignes() As Long) ' 2ième évènement principal.
Dim T(), N As Long, L As Long, C As Long
TLgn = Lignes
GarnirListe
End Sub
Private Sub GarnirListe()
Dim T(), N As Long, L As Long, C As Long
T = CBL.PlgTablo.Resize(, 11).Value
For N = 1 To UBound(TLgn)
L = TLgn(N)
ListBox1.AddItem
For C = 2 To 11: ListBox1.List(N - 1, C - 2) = T(L, C): Next C
Next N
End Sub
Private Sub ListBox1_Click()
Dim T(), C As Long
LCou = TLgn(ListBox1.ListIndex + 1) ' (La ListIndex commence à l'indice 0)
T = CBL.PlgTablo.Rows(LCou).Resize(, 11).Value
For C = 1 To 10: Me.Controls("TextBox" & C).Text = T(1, C + 1): Next C
End Sub
Private Sub CmdEnregist_Click()
Dim T(), C As Long
If LCou = 0 Then
LCou = CBL.PlgTablo.Rows.Count
With CBL.PlgTablo.Rows(LCou): .Copy: .Insert: End With
ReDim T(1 To 1, 1 To 11): T(1, 1) = CBL.PlgTablo(LCou, 1) + 1
LCou = LCou + 1
Else
T = CBL.PlgTablo.Rows(LCou).Resize(, 11).Value: End If
For C = 2 To 11: T(1, C) = Me.Controls("TextBox" & C).Text: Next C
CBL.PlgTablo.Rows(LCou).Resize(, 11).Value = T
CBL.Actualiser
End Sub
Private Sub BtnFermer_Click()
Unload Me
End Sub