Re : Combobox et textbox
Bonjour Robert,
Mercipour l'accueil et les précisions.
Voici où j'en suis avec mes faibles connaissances et des codes récupérés ici et là.
Si cela peut aider, tant mieux.
Option Explicit
Dim TableauTemp As Variant
Private Sub UserForm_Initialize()
Dim Ligne As Long
With Sheets(2)
Ligne = .Range("A65536").End(xlUp).Row
TableauTemp = .Range(.Cells(1, 1), .Cells(Ligne, 7)).Value
End With
MajCBox ComboBox1, 0
End Sub
Private Sub ComboBox1_Change()
Dim Ligne As Long
'Remise à zéro
For Ligne = 1 To UBound(TableauTemp, 1)
TableauTemp(Ligne, 7) = 0
Next Ligne
'MAJ du ComboBox2 avec un flag de niveau 1
MajCBox ComboBox2, 1, ComboBox1.Text
'Remise à zéro du ComboBox2
ComboBox2.Clear
End Sub
Private Sub ComboBox2_Change()
'MAJ du ComboBox2 avec un flag de niveau 2
MajCBox ComboBox2, 2, ComboBox1.Text
End Sub
Private Sub MajCBox(Combo As ComboBox, Niv As Byte, Optional V As String)
Dim Coll As New Collection
Dim Ligne As Long
'Gestion du flag de niveau dans la colonne supplémentaire (5) du tableau
For Ligne = 1 To UBound(TableauTemp, 1)
If Niv = 0 Then
'RAZ du flag de niveau
TabTemp(Ligne, 7) = 0
Else
TableauTemp(Ligne, 7) = Application.WorksheetFunction.Min(TableauTemp(Ligne, 7), Niv - 1)
'Si l'élément est retenu alors on incrémente le flag de niveau
If TableauTemp(Ligne, Niv) = V Then
TableauTemp(Ligne, 7) = TableauTemp(Ligne, 7) + 1
End If
End If
Next Ligne
'Détermination de la liste sans doublon
On Error Resume Next
For Ligne = 1 To UBound(TableauTemp, 1)
If TableauTemp(Ligne, 7) = Niv Then
Coll.Add TableauTemp(Ligne, Niv + 1), CStr(TableauTemp(Ligne, Niv + 1))
End If
Next Ligne
On Error GoTo 0
'Mise à jour du combobox
Combo.Clear
For Ligne = 1 To Coll.Count
Combo.AddItem Coll.Item(Ligne)
Next Ligne
'Affiche dans le TextBox1 la cellule de la colonne C (3)
TextBox1 = Sheets("Données").Cells(Ligne, 3)
'Affiche dans le TextBox2 la cellule de la colonne D (4)
TextBox2 = Sheets("Données").Cells(Ligne, 4)
'Affiche dans le TextBox3 la cellule de la colonne E (5)
TextBox3 = Sheets("Données").Cells(Ligne, 5)
'Affiche dans le TextBox4 la cellule de la colonne F (6)
TextBox4 = Sheets("Données").Cells(Ligne, 6)
End Sub