Re : formulaire de choix transporteur à 5 niveaux
Bonsoir,
J'avance un peu dans ma recherche
J'ai trouvé un userform de MyDearFriend qui correspond mieux à ma demande (4 niveaux + ajout d'1 5ème) mais je souhaite que le tarif s'affiche dans une textbox et non dans le combobox.
Voici le code :
Private Sub UserForm_Initialize()
Dim L As Long
'Mémoriser le tableau de données avec une colonne supplémentaire qui servira à la
'gestion des niveaux d'alimentation des combobox
With Sheets(2)
L = .Range("A65536").End(xlUp).Row
TabTemp = .Range(.Cells(1, 1), .Cells(L, 6)).Value
End With
MAJCombo ComboBox1, 0
End Sub
Private Sub ComboBox1_Change()
Dim L As Long
'Remise à zéro des niveaux
For L = 1 To UBound(TabTemp, 1)
TabTemp(L, 6) = 0
Next L
'MAJ du combo n°2 avec un flag de niveau 1
MAJCombo ComboBox2, 1, ComboBox1.Text
'RAZ des combo suivantes
ComboBox3.Clear
ComboBox4.Clear
ComboBox5.Clear
End Sub
Private Sub ComboBox2_Change()
'MAJ du combo n°3 avec un flag de niveau 2
MAJCombo ComboBox3, 2, ComboBox2.Text
ComboBox4.Clear
End Sub
Private Sub ComboBox3_Change()
'MAJ du combo n°4 avec un flag de niveau 3
MAJCombo ComboBox4, 3, ComboBox3.Text
End Sub
Private Sub ComboBox4_Change()
'MAJ du combo n°5 avec un flag de niveau 4
MAJCombo ComboBox5, 4, ComboBox4.Text
End Sub
Private Sub MAJCombo(Combo As ComboBox, Niv As Byte, Optional V As String)
Dim Coll As New Collection
Dim L As Long
'Gestion du flag de niveau dans la colonne supplémentaire (5) du tableau
For L = 1 To UBound(TabTemp, 1)
If Niv = 0 Then
'RAZ du flag de niveau
TabTemp(L, 6) = 0
Else
TabTemp(L, 6) = Application.WorksheetFunction.Min(TabTemp(L, 6), Niv - 1)
'Si l'élément est retenu alors on incrémente le flag de niveau
If TabTemp(L, Niv) = V Then
TabTemp(L, 6) = TabTemp(L, 6) + 1
End If
End If
Next L
'Détermination de la liste sans doublon
On Error Resume Next
For L = 1 To UBound(TabTemp, 1)
If TabTemp(L, 6) = Niv Then
Coll.Add TabTemp(L, Niv + 1), CStr(TabTemp(L, Niv + 1))
End If
Next L
On Error GoTo 0
'Mise à jour du combobox
Combo.Clear
For L = 1 To Coll.Count
Combo.AddItem Coll.Item(L)
Next L
End Sub
merci pour votre aide
a+