Bonjour
une solution entraine un autre probleme
http://www.developpez.net/forums/d14...e/#post8072209

sur ce sujet on a répondu a mon probleme mais maintenant j'ai un autre probleme. j'aimerais avec un code vba qu'il me renvoie le nombre "d'indice" ou "membre de collection" dans une liste déroulante.
J'ai le code exacte ce coup si le voila
Code vba : 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
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
 
 If IsNumeric(TextBox_nb_ruban.Value) Then
        nb_ruban = TextBox_nb_ruban.Value
        If nb_ruban < 16 Then
            Dim TextBox_ruban_(1 To 15)
            Dim Label_ruban_(1 To 15)
            Dim derniere_ligne As Integer
 
            Workbooks.Open Filename:= _
            lien_tableau_base, ReadOnly:=True
 
            derniere_ligne = Workbooks("UPR - Tableau base.xlsx").Sheets("Base").Range("C1").End(xlDown).Row
            k = 0
                For i = 1 To nb_ruban
                     k = k + 1
 
                     Controls("TextBox_ruban_" & i).Visible = True
                     Controls("TextBox_ruban_" & i).Top = debut
                     Controls("TextBox_ruban_" & i).Left = 78
                     Controls("TextBox_ruban_" & i).Width = 114
                     Controls("TextBox_ruban_" & i).Height = 18
                     Controls("TextBox_ruban_" & i).Font.Size = 8
 
                        For j = 1 To derniere_ligne - 1
                            If Workbooks("UPR - Tableau base.xlsx").Sheets("Base").Range("A" & j + 1) = programme Then
                                If Workbooks("UPR - Tableau base.xlsx").Sheets("Base").Range("C" & j + 1) = reference Then
                                    If Workbooks("UPR - Tableau base.xlsx").Sheets("Base").Range("D" & j + 1) = Indice Then
                                        If Workbooks("UPR - Tableau base.xlsx").Sheets("Base").Range("I" & j + 1) = machine Then
                                            MsgBox Split(Workbooks("UPR - Tableau base.xlsx").Sheets("Base").Range("M" & j + 1).Value)
                                                Controls("TextBox_ruban_" & k).Value = Split(Workbooks("UPR - Tableau base.xlsx").Sheets("Base").Range("M" & j + 1).Validation.Formula1, ";")(k - 1) 'voila le code qui pose probleme
                                        End If
                                    End If
                                End If
                            End If
                        Next
 
                     Controls("Label_ruban_" & i).Visible = True
                     Controls("Label_ruban_" & i).Top = Start
                     Controls("Label_ruban_" & i).Left = 6
                     Controls("Label_ruban_" & i).Width = 70
                     Controls("Label_ruban_" & i).Height = 12
                     Controls("Label_ruban_" & i).Caption = "Ruban n°" & i
 
                     UserForm2_inserer_ruban.Height = UserForm2_inserer_ruban.Height + 18
                     CommandButton_retour.Top = CommandButton_retour.Top + 18
                     CommandButton_ajouter.Top = CommandButton_ajouter.Top + 18
                     debut = debut + 18
                     Start = Start + 18
 
               Next
 
            Workbooks("UPR - Tableau base.xlsx").Close SaveChanges:=False
        Else
            MsgBox "Maximum 15 ruban"
        End If
    Else
        MsgBox "entré un nombre ! "
    End If
End Sub

ce code me permet de chercher dans un tableau celon des criteres la case chercher et vouloir remplir les textbox par des value par d'efaut qui sont dans une liste déroulante
Le probleme avec mon code c'est "la limite des liste déroulante" car si le nb_ruban est supérieur a se que contien la liste deroulante ou son entré les valeur par défaut il m'affiche une erreur.
exemple: j'ai une liste déroulante avec 4 indice a l'intérieur.

Si nb_ruban <=4 j'ai pas de probleme le code execute se que je veux.

Mais si nb_ruban >4 il ne peux pas me chercher de valeur dans la liste déroulante car la liste contient que 4 valeur ... mais les liste déroulante peuvent avoir beaucoup de valeur ou 1 seul valeur ...
Donc j'aimerais avant sa que vba reconnaisse le nombre d'indice dans la liste déroualnte.