Liste déroulante dans un formulaire

Fermé
Bouler1 Messages postés 1 Date d'inscription vendredi 18 novembre 2016 Statut Membre Dernière intervention 18 novembre 2016 - 18 nov. 2016 à 12:13
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 18 nov. 2016 à 14:18
Bonjour à tous

Je débute en VBA.

J'ai créer un classeur Excel avec dans la colonne J une liste de données .

Je crée un formulaire avec une liste déroulante et cherche charger de ces données de la feuille 6 colonne J.
Voici le code créer:
'-------------------------------------------------------------------------------
Private Sub UserForm_Activate()
'-------------------------------------------------------------------------------
Dim y As Integer, i As Integer
Dim TabDonnnée() As Variant

' Coche la case option 1 :
OptionButton1.Value = True

' Charge les données pour la liste ComboBox1 :
y = 2: i = 0
While Sheets("Feuil6").Cells(y, 10) <> "" ' Boucle sur les lignes de la feuille 6.
ReDim Preserve TabDonnnée(i) ' Dimensionne le tableau.
TabDonnnée(i) = Sheets("Feuil6").Cells(y, 10) ' Charge les données en colonne J.
y = y + 1: i = i + 1 ' Passe à la ligne suivante.
Wend
Call VBO.TriRapide(TabDonnnée()) ' Trie les données par ordre croissant.
ComboBox1.Clear ' Efface toutes les anciennes données de la liste.
For i = 0 To UBound(TabDonnnée()) ' Boucle sur le tableau et...
ComboBox1.AddItem TabDonnnée(i) ' alimente la liste déroulante.
Next i

End Sub


Malheureusement, j'ai une erreur dans la ligne Call VBO.TriRapide(TabDonnée()). Cette erreur me dis que la variable n'est pas définie

Je n'arrive pas à corriger cette erreur.
Quelqu'un pourrait-il m'aider

Merci
A voir également:

1 réponse

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
18 nov. 2016 à 14:18
Bonjour,

Call VBO.TriRapide(TabDonnée())

L'erreur est plutot cote du sub TriRapide, mais vous ne montrez pas le dit sub

par contre votre procedure peut etre optimisee
Private Sub UserForm_Activate()
'-------------------------------------------------------------------------------
    Dim y As Integer, i As Integer
    Dim TabDonnée
    
    ' Coche la case option 1 :
    OptionButton1.Value = True
    ' Charge les données pour la liste ComboBox1 :
    With Sheets("Feuil6")
        TabDonnée = .Range("J2:J" & .Range("J" & Rows.Count).End(xlUp).Row) ' Charge les données en colonne J.
    End With
    Call VBO.TriRapide(TabDonnnée) ' Trie les données par ordre croissant.
    ComboBox1.Clear ' Efface toutes les anciennes données de la liste.
    ComboBox1.List = TabDonnée ' alimente la liste déroulante.
End Sub


Par contre le sub TriRapide est a modifier, car:
TabDonnée(x) devient TabDonnée(x, 1)
0