Userform: Recherche plus rapide d'un Combobox

  • Initiateur de la discussion Initiateur de la discussion Aragon10
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Aragon10

XLDnaute Occasionnel
Bonjour,

J'ai créé un combobox qui contient une liste des clients. Le problème se pose pendant ma recherche. par exemple dans le cas ou le client s'appelle " STE DE TRANSPORT ET DE SERVICE" et je veux rechercher cette relation parmi plusieurs. le combobox facilite notre recherche dans le cas ou je tape "STE" mais pas lorsque je tape "TRANSPORT" ou "SERVICE". y'a t-il un moyen qui facilite la recherche au sein du combobox (afficher le client en tapant n'importe quel mot qui le compose) ?

Merci pour votre réponse.
 
Re : Userform: Recherche plus rapide d'un Combobox

Bonsoir,

Saisie intuitive (type Google) dans un ComboBox d'un Formulaire
(Frapper les lettres contenues dans l'item cherché)

Code:
Dim a()
Private Sub UserForm_Initialize()
  a = Application.Transpose([liste])
  Me.ComboBox1.List = a
End Sub

Private Sub ComboBox1_Change()
 If Me.ComboBox1.ListIndex = -1 And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
   Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
   Me.ComboBox1.DropDown
  Else
    ActiveCell = Application.Proper(Me.ComboBox1)
    Unload Me
  End If
End Sub

http://boisgontierjacques.free.fr/fichiers/DonneesValidation/ListeIntuitiveFormulaireFilter.xls
http://boisgontierjacques.free.fr/fichiers/DonneesValidation/DVComboBoxIntuitif_lettresContenues.xls

Saisie_intuitive.gif

http://boisgontierjacques.free.fr/fichiers/DonneesValidation/ListeIntuitiveFormContenu.xls

Autres exemples à plusieurs niveaux:


Saisie intuitive tableur et formulaire directement dans un ComboBox

JB
Formation Excel VBA JB
 

Pièces jointes

Dernière édition:
Re : Userform: Recherche plus rapide d'un Combobox

Merci pour votre réponse.

Dans le cas ou on a un combobox lié à plusieurs Textbox (disons 4) .par exemple si on choisit le item dans le combo il affiche les informations dans chacunes des TEXTBOX . Comment activer la saisie intuitive dans ce cas la au sein du combobox ?
 
Dernière édition:
Re : Userform: Recherche plus rapide d'un Combobox

Bonsoir.

Au lieu de TextBox vous ne pourriez pas mettre aussi des ComboBox pour les autres infos ? (si toutefois il faut pouvoir rechercher dessus, évidemment)
Et aussi dissocier en 2 combobox un pour le nom du client et un autre pour tous les mots trouvés dans tous les noms de clients.
 
Re : Userform: Recherche plus rapide d'un Combobox

Pour moi une saisie dans un ComboBox est toujours intuitive si sa liste est classée: on peut taper jusqu'à ce que le mot existant recherché est affiché, et si on ne sait plus quoi taper (rarement), on affiche la liste positionnée à partir du mot retenu momentanément. Avec deux ComboBox vous auriez une telle recherche intuitive pour un mot du nom de client, avec affichage dans l'autre des seuls clients qui le comportent, ou une saisie intuitive du nom du client.
 
Re : Userform: Recherche plus rapide d'un Combobox

oui c'est pas mal comme solution. j'ai un autre petit problème , ma liste contient des doublons y'a t-il un moyen d'ajouter un code pour ne pas avoir des doublons dans la saisie intuitive du deuxième combobox ?
 
Re : Userform: Recherche plus rapide d'un Combobox

Si un 2ième critère permet de les départager, qu'il fasse l'objet d'un 3ieme ComboBox, sinon on est réduit à les parcourir positionnellement par des boutons toupies, ou s'il peuvent différer peu et de façon irrégulière, tout afficher dans une ListBox multi colonnes. Il n'y a de toute façon jamais de doublon dans les listes de mes ComboBox liées.
 
Dernière édition:
Re : Userform: Recherche plus rapide d'un Combobox

Merci beaucoup pour votre suivi.

juste je veux insister sur l'ajout d'un truc pour le code ci-dessous afin qu'il ne tient pas compte des doublons si c'est possible:

Code:
Dim a()
Private Sub UserForm_Initialize()
  a = Application.Transpose([liste])
  Me.ComboBox1.List = a
End Sub

Private Sub ComboBox1_Change()
 If Me.ComboBox1.ListIndex = -1 And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
   Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
   Me.ComboBox1.DropDown
  Else
    ActiveCell = Application.Proper(Me.ComboBox1)
    Unload Me
  End If
End Sub

Merci.
 
Dernière édition:
Re : Userform: Recherche plus rapide d'un Combobox

Voici 4 infos associées

Code:
Dim a()
Private Sub UserForm_Initialize()
  a = Application.Transpose([liste])
  Me.ComboBox1.List = a
End Sub

Private Sub ComboBox1_Change()
 If Me.ComboBox1.ListIndex = -1 And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
   Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
   Me.ComboBox1.DropDown
   Me.TextBox1 = ""
  Else
    p = Application.Match(Me.ComboBox1, a, 0)
    For i = 1 To 4
     Me("textbox" & i) = Range("info")(p).Offset(, i - 1)
    Next i
  End If
End Sub

Elimine les doublons (Argentine qui est 3 fois dans la BD n'apparaît qu'une fois dans le ComboBox)

filtre.gif

Code:
Dim a()
Private Sub UserForm_Initialize()
  a = Application.Transpose([liste])
  Me.ComboBox1.List = a
End Sub

Private Sub ComboBox1_Change()
If Me.ComboBox1.ListIndex = -1 And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
  Set d1 = CreateObject("Scripting.Dictionary")
  tmp = UCase(Me.ComboBox1) & "*"
  For Each c In a
     If UCase(c) Like tmp Then d1(c) = ""
  Next c
  Me.ComboBox1.List = d1.keys
  Me.ComboBox1.DropDown
 Else
   p = Application.Match(Me.ComboBox1, a, 0)
   For i = 1 To 4
     Me("textbox" & i) = Range("info")(p).Offset(, i - 1)
   Next i
 End If
End Sub

Avec un fichier exemple, il serait + simple de répondre à la question qui est floue.


S'agit-il de choisir parmi les doublons?
Ceci est un exemple de recherche intuitive en cascade dans 2 combobox (département/ville)
-Choix du département (doublons)
-Choix de la ville dans le département choisi.

La recherche se fait sur les premiers caractères (il suffit de changer tmp = UCase(Me.ComboBox1) & "*" par tmp = "*" & UCase(Me.ComboBox1) & "*" pour obtenir une recherche sur le contenu)

http://boisgontierjacques.free.fr/f...ConditionSaisieIntuitiveFormCascade2Choix.xls

Un autre exemple de 2 comboboxs en cascade:Choix du Nom puis du Prénom ).
Seul le premier combobox est intuitif

http://boisgontierjacques.free.fr/fichiers/Formulaire/FormCascade2nivPcMacIntuitif.xls



JB
 

Pièces jointes

Dernière édition:
Re : Userform: Recherche plus rapide d'un Combobox

juste je veux insister sur l'ajout d'un truc pour le code ci-dessous afin qu'il ne tient pas compte des doublons si c'est possible:
Vous voulez donc laisser tomber complètement mon histoire de ComboBox liées de façon automatique par des modules de service extérieurs ?
 
Re : Userform: Recherche plus rapide d'un Combobox

Bonjour Aragon10, Bernard, JB, le forum,

Toujours avec ma ListBox, cette fois avec le filtre avancé :

Code:
Sub Recherche()
Application.ScreenUpdating = False
With Feuil1
  .[B2] = "=COUNTIF(A2,""*" & TextBox1 & "*"")*COUNTIF(A2,""*" & TextBox2 & _
  "*"")*COUNTIF(A2,""*" & TextBox3 & "*"")*COUNTIF(A2,""*" & TextBox4 & "*"")"
  .[A:A].AdvancedFilter xlFilterInPlace, Feuil1.[B1:B2]
  Feuil2.[A:A] = ""
  .[A:A].Copy Feuil2.[A1]
  Feuil2.Rows(1).Delete
  .[A:A].AdvancedFilter xlFilterInPlace, ""
  .[B2] = ""
End With
'au moins 2 éléments pour définir la liste
ListBox1.List = Feuil2.UsedRange.Resize(, 2).Value
Application.ScreenUpdating = True
End Sub
Fichier (2).

Bonne journée.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
125
Affichages
13 K
Retour