Je cherche le code pour un Userform avec un Listbox. Mon range de data est
assez grand et je voudrais que lorsque je commence à taper un nom la liste
s'adapte aux premières lettres entrées. Par exemple si je tapes ABC la liste
de choix ne présente que les noms commençant par ABC.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour,
Utilise la propriété "MatchEntry" Choisis l'item : 1-MatchEntryComplete
Et pour que ce soit intéressant, il faut mieux insérer une liste triée par ordre alphabétique. Voici le code que tu peux utiliser pour charger un combobox avec ce que tu désires comme comportement.
Tu ne dois pas avoir renseigné la propriété "RowSource" du contrôle Combobox pour que ce qui suit fonctionne.
Adapte le nom de la feuille et l'adresse de ta plage de cellules. '------------------------------------ Private Sub UserForm_Initialize()
Dim Tblo As Variant, Rg As Range
'A1 étant la ligne d'étiquette With Worksheets("Feuil1") Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row) End With
Tblo = Application.Transpose(Rg) Quick_Sort Tblo, LBound(Tblo), UBound(Tblo) With UserForm1.ComboBox1 .MatchEntry = fmMatchEntryComplete .MatchRequired = True .Style = fmStyleDropDownCombo .List = Application.Transpose(Tblo) End With Set Rg = Nothing End Sub
'------------------------------------ Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long) Dim Low As Long, High As Long Dim Temp As Variant, List_Separator As Variant Low = First High = Last List_Separator = SortArray((First + Last) / 2) Do Do While (SortArray(Low) < List_Separator) Low = Low + 1 Loop Do While (SortArray(High) > List_Separator) High = High - 1 Loop If (Low <= High) Then Temp = SortArray(Low) SortArray(Low) = SortArray(High) SortArray(High) = Temp Low = Low + 1 High = High - 1 End If Loop While (Low <= High) If (First < High) Then Quick_Sort SortArray, First, High If (Low < Last) Then Quick_Sort SortArray, Low, Last End Sub '------------------------------------
"Michel MATHYS" a écrit dans le message de groupe de discussion : e$6DUvD# Je cherche le code pour un Userform avec un Listbox. Mon range de data est assez grand et je voudrais que lorsque je commence à taper un nom la liste s'adapte aux premières lettres entrées. Par exemple si je tapes ABC la liste de choix ne présente que les noms commençant par ABC.
Merci d'avance
Bonjour,
Utilise la propriété "MatchEntry"
Choisis l'item : 1-MatchEntryComplete
Et pour que ce soit intéressant, il faut mieux insérer une liste
triée par ordre alphabétique. Voici le code que tu peux utiliser
pour charger un combobox avec ce que tu désires comme
comportement.
Tu ne dois pas avoir renseigné la propriété "RowSource"
du contrôle Combobox pour que ce qui suit fonctionne.
Adapte le nom de la feuille et l'adresse de ta plage de cellules.
'------------------------------------
Private Sub UserForm_Initialize()
Dim Tblo As Variant, Rg As Range
'A1 étant la ligne d'étiquette
With Worksheets("Feuil1")
Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With
Tblo = Application.Transpose(Rg)
Quick_Sort Tblo, LBound(Tblo), UBound(Tblo)
With UserForm1.ComboBox1
.MatchEntry = fmMatchEntryComplete
.MatchRequired = True
.Style = fmStyleDropDownCombo
.List = Application.Transpose(Tblo)
End With
Set Rg = Nothing
End Sub
'------------------------------------
Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long)
Dim Low As Long, High As Long
Dim Temp As Variant, List_Separator As Variant
Low = First
High = Last
List_Separator = SortArray((First + Last) / 2)
Do
Do While (SortArray(Low) < List_Separator)
Low = Low + 1
Loop
Do While (SortArray(High) > List_Separator)
High = High - 1
Loop
If (Low <= High) Then
Temp = SortArray(Low)
SortArray(Low) = SortArray(High)
SortArray(High) = Temp
Low = Low + 1
High = High - 1
End If
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High
If (Low < Last) Then Quick_Sort SortArray, Low, Last
End Sub
'------------------------------------
"Michel MATHYS" <michel.mathys@skynet.be> a écrit dans le message de groupe de discussion
: e$6DUvD#KHA.5592@TK2MSFTNGP02.phx.gbl...
Je cherche le code pour un Userform avec un Listbox. Mon range de data est
assez grand et je voudrais que lorsque je commence à taper un nom la liste
s'adapte aux premières lettres entrées. Par exemple si je tapes ABC la liste
de choix ne présente que les noms commençant par ABC.
Utilise la propriété "MatchEntry" Choisis l'item : 1-MatchEntryComplete
Et pour que ce soit intéressant, il faut mieux insérer une liste triée par ordre alphabétique. Voici le code que tu peux utiliser pour charger un combobox avec ce que tu désires comme comportement.
Tu ne dois pas avoir renseigné la propriété "RowSource" du contrôle Combobox pour que ce qui suit fonctionne.
Adapte le nom de la feuille et l'adresse de ta plage de cellules. '------------------------------------ Private Sub UserForm_Initialize()
Dim Tblo As Variant, Rg As Range
'A1 étant la ligne d'étiquette With Worksheets("Feuil1") Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row) End With
Tblo = Application.Transpose(Rg) Quick_Sort Tblo, LBound(Tblo), UBound(Tblo) With UserForm1.ComboBox1 .MatchEntry = fmMatchEntryComplete .MatchRequired = True .Style = fmStyleDropDownCombo .List = Application.Transpose(Tblo) End With Set Rg = Nothing End Sub
'------------------------------------ Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long) Dim Low As Long, High As Long Dim Temp As Variant, List_Separator As Variant Low = First High = Last List_Separator = SortArray((First + Last) / 2) Do Do While (SortArray(Low) < List_Separator) Low = Low + 1 Loop Do While (SortArray(High) > List_Separator) High = High - 1 Loop If (Low <= High) Then Temp = SortArray(Low) SortArray(Low) = SortArray(High) SortArray(High) = Temp Low = Low + 1 High = High - 1 End If Loop While (Low <= High) If (First < High) Then Quick_Sort SortArray, First, High If (Low < Last) Then Quick_Sort SortArray, Low, Last End Sub '------------------------------------
"Michel MATHYS" a écrit dans le message de groupe de discussion : e$6DUvD# Je cherche le code pour un Userform avec un Listbox. Mon range de data est assez grand et je voudrais que lorsque je commence à taper un nom la liste s'adapte aux premières lettres entrées. Par exemple si je tapes ABC la liste de choix ne présente que les noms commençant par ABC.
Merci d'avance
Michel MATHYS
Merci beaucoup cela fonctionne comme je voulais. Il ne me reste plus qu'à comprendre la partie Quick_sort ....
encore merci Michel de la part d'un autre Michel
"michdenis" a écrit dans le message de news:
Bonjour,
Utilise la propriété "MatchEntry" Choisis l'item : 1-MatchEntryComplete
Et pour que ce soit intéressant, il faut mieux insérer une liste triée par ordre alphabétique. Voici le code que tu peux utiliser pour charger un combobox avec ce que tu désires comme comportement.
Tu ne dois pas avoir renseigné la propriété "RowSource" du contrôle Combobox pour que ce qui suit fonctionne.
Adapte le nom de la feuille et l'adresse de ta plage de cellules. '------------------------------------ Private Sub UserForm_Initialize()
Dim Tblo As Variant, Rg As Range
'A1 étant la ligne d'étiquette With Worksheets("Feuil1") Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row) End With
Tblo = Application.Transpose(Rg) Quick_Sort Tblo, LBound(Tblo), UBound(Tblo) With UserForm1.ComboBox1 .MatchEntry = fmMatchEntryComplete .MatchRequired = True .Style = fmStyleDropDownCombo .List = Application.Transpose(Tblo) End With Set Rg = Nothing End Sub
'------------------------------------ Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long) Dim Low As Long, High As Long Dim Temp As Variant, List_Separator As Variant Low = First High = Last List_Separator = SortArray((First + Last) / 2) Do Do While (SortArray(Low) < List_Separator) Low = Low + 1 Loop Do While (SortArray(High) > List_Separator) High = High - 1 Loop If (Low <= High) Then Temp = SortArray(Low) SortArray(Low) = SortArray(High) SortArray(High) = Temp Low = Low + 1 High = High - 1 End If Loop While (Low <= High) If (First < High) Then Quick_Sort SortArray, First, High If (Low < Last) Then Quick_Sort SortArray, Low, Last End Sub '------------------------------------
"Michel MATHYS" a écrit dans le message de groupe de discussion : e$6DUvD# Je cherche le code pour un Userform avec un Listbox. Mon range de data est assez grand et je voudrais que lorsque je commence à taper un nom la liste s'adapte aux premières lettres entrées. Par exemple si je tapes ABC la liste de choix ne présente que les noms commençant par ABC.
Merci d'avance
Merci beaucoup cela fonctionne comme je voulais. Il ne me reste plus qu'à
comprendre la partie Quick_sort ....
encore merci Michel de la part d'un autre Michel
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:9AC8698C-4256-4C4E-8650-35E6C80B532F@microsoft.com...
Bonjour,
Utilise la propriété "MatchEntry"
Choisis l'item : 1-MatchEntryComplete
Et pour que ce soit intéressant, il faut mieux insérer une liste
triée par ordre alphabétique. Voici le code que tu peux utiliser
pour charger un combobox avec ce que tu désires comme
comportement.
Tu ne dois pas avoir renseigné la propriété "RowSource"
du contrôle Combobox pour que ce qui suit fonctionne.
Adapte le nom de la feuille et l'adresse de ta plage de cellules.
'------------------------------------
Private Sub UserForm_Initialize()
Dim Tblo As Variant, Rg As Range
'A1 étant la ligne d'étiquette
With Worksheets("Feuil1")
Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With
Tblo = Application.Transpose(Rg)
Quick_Sort Tblo, LBound(Tblo), UBound(Tblo)
With UserForm1.ComboBox1
.MatchEntry = fmMatchEntryComplete
.MatchRequired = True
.Style = fmStyleDropDownCombo
.List = Application.Transpose(Tblo)
End With
Set Rg = Nothing
End Sub
'------------------------------------
Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last
As Long)
Dim Low As Long, High As Long
Dim Temp As Variant, List_Separator As Variant
Low = First
High = Last
List_Separator = SortArray((First + Last) / 2)
Do
Do While (SortArray(Low) < List_Separator)
Low = Low + 1
Loop
Do While (SortArray(High) > List_Separator)
High = High - 1
Loop
If (Low <= High) Then
Temp = SortArray(Low)
SortArray(Low) = SortArray(High)
SortArray(High) = Temp
Low = Low + 1
High = High - 1
End If
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High
If (Low < Last) Then Quick_Sort SortArray, Low, Last
End Sub
'------------------------------------
"Michel MATHYS" <michel.mathys@skynet.be> a écrit dans le message de
groupe de discussion
: e$6DUvD#KHA.5592@TK2MSFTNGP02.phx.gbl...
Je cherche le code pour un Userform avec un Listbox. Mon range de data est
assez grand et je voudrais que lorsque je commence à taper un nom la liste
s'adapte aux premières lettres entrées. Par exemple si je tapes ABC la
liste
de choix ne présente que les noms commençant par ABC.
Merci beaucoup cela fonctionne comme je voulais. Il ne me reste plus qu'à comprendre la partie Quick_sort ....
encore merci Michel de la part d'un autre Michel
"michdenis" a écrit dans le message de news:
Bonjour,
Utilise la propriété "MatchEntry" Choisis l'item : 1-MatchEntryComplete
Et pour que ce soit intéressant, il faut mieux insérer une liste triée par ordre alphabétique. Voici le code que tu peux utiliser pour charger un combobox avec ce que tu désires comme comportement.
Tu ne dois pas avoir renseigné la propriété "RowSource" du contrôle Combobox pour que ce qui suit fonctionne.
Adapte le nom de la feuille et l'adresse de ta plage de cellules. '------------------------------------ Private Sub UserForm_Initialize()
Dim Tblo As Variant, Rg As Range
'A1 étant la ligne d'étiquette With Worksheets("Feuil1") Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row) End With
Tblo = Application.Transpose(Rg) Quick_Sort Tblo, LBound(Tblo), UBound(Tblo) With UserForm1.ComboBox1 .MatchEntry = fmMatchEntryComplete .MatchRequired = True .Style = fmStyleDropDownCombo .List = Application.Transpose(Tblo) End With Set Rg = Nothing End Sub
'------------------------------------ Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long) Dim Low As Long, High As Long Dim Temp As Variant, List_Separator As Variant Low = First High = Last List_Separator = SortArray((First + Last) / 2) Do Do While (SortArray(Low) < List_Separator) Low = Low + 1 Loop Do While (SortArray(High) > List_Separator) High = High - 1 Loop If (Low <= High) Then Temp = SortArray(Low) SortArray(Low) = SortArray(High) SortArray(High) = Temp Low = Low + 1 High = High - 1 End If Loop While (Low <= High) If (First < High) Then Quick_Sort SortArray, First, High If (Low < Last) Then Quick_Sort SortArray, Low, Last End Sub '------------------------------------
"Michel MATHYS" a écrit dans le message de groupe de discussion : e$6DUvD# Je cherche le code pour un Userform avec un Listbox. Mon range de data est assez grand et je voudrais que lorsque je commence à taper un nom la liste s'adapte aux premières lettres entrées. Par exemple si je tapes ABC la liste de choix ne présente que les noms commençant par ABC.