Microsoft 365 Validation de données et saisie partielle

zedude

XLDnaute Nouveau
Bonjour à tous,

Bien qu'ayant cherché un peu sur le forum, je n'ai pas vraiment trouvé ce que je cherchais et mes recherches google par ailleurs ne m'ont pas permis non plus de trouver une solution même si je pense que c'est parce que je n'ai pas utilisé les bons mots clés.
Je m'en remets donc à vous.
Voilà la "problématique" :

Imaginons un "formulaire" où l'on saisit une commune et sur la ligne du dessous, via une liste déroule de validation de données, on affiche toutes les rues de cette commune.
Aucun soucis sur ce point, j'ai créé une plage nommée portant le nom de la commune, puis une liste de validation de données utilisant la fonction INDIRECT, ma liste apparaît

Cependant, je souhaiterais aller plus loin et faire en sorte que si quelqu'un saisit un nom partiel d'une rue, au moment de cliquer sur la flèche déroulante, que la liste présentée n'affiche plus que les rues contenant ce nom. Comme une sorte de préfiltre. J'ai trouvé certains post où certains recherche une saisie intuitive à la Google où, quand on saisit les premiers caractères, le reste est proposé, mais ce n'est pas ce que je cherche.
Par exemple, si dans ma liste de rue j'ai :
Boulevard Victor Hugo
Impasse Victor Hugo
Rue Victor Hugo

J'aimerais qu'en saisissant "Hugo" et cliquand sur la liste déroulante de validation de données, seules ces 3 valeurs s'affichent. Pensez-vous que cela soit possible ?
Comment ?

Par avance, merci pour votre aide.
 

piga25

XLDnaute Barbatruc
Bonjour,

Avez vous rechercher sur le site de Boisgontier : http://boisgontierj.free.fr/pages_site/donneesvalidation.htm#IntuitifTableur

En particulier : recherche intuitive lettres contenues.

VB:
Private Sub ComboBox1_GotFocus()
  ComboBox1.List = Sheets("BD").Range("liste").Value
End Sub
Private Sub ComboBox1_Change()
 If Me.ComboBox1 <> "" Then
  a = Application.Transpose(Sheets("BD").[Liste])
  Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
  Me.ComboBox1.DropDown
  [e2] = Me.ComboBox1
 End If
End Sub

Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
 ComboBox1.List = Sheets("BD").Range("liste").Value
 Me.ComboBox1.DropDown
End Sub
 

zedude

XLDnaute Nouveau
Bonjour,

Avez vous rechercher sur le site de Boisgontier : http://boisgontierj.free.fr/pages_site/donneesvalidation.htm#IntuitifTableur

En particulier : recherche intuitive lettres contenues.

VB:
Private Sub ComboBox1_GotFocus()
  ComboBox1.List = Sheets("BD").Range("liste").Value
End Sub
Private Sub ComboBox1_Change()
 If Me.ComboBox1 <> "" Then
  a = Application.Transpose(Sheets("BD").[Liste])
  Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
  Me.ComboBox1.DropDown
  [e2] = Me.ComboBox1
 End If
End Sub

Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
 ComboBox1.List = Sheets("BD").Range("liste").Value
 Me.ComboBox1.DropDown
End Sub
Je vais regarder attentivement, merci
Donc néanmoins, de ce que je vois déjà, c'est via du code VBA
Il n'est pas possible de le faire via les fonctions hors programmation ?
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Mon objet ComboBoxLiées ne fait pas de lui même de recherche intuitive, bien que le module central MSujetCBx ait une Function SujCBxLike qui sache extraire les clés contenant un groupe de caractères tapés, mais il est possible de l'ajouter dans la programmation de l'UserForm via son évènement SujFltChg.
C'est fait dans ce classeur pour les Nom et Prénom.
 

Pièces jointes

  • CLsCAsContacts.xlsm
    171.4 KB · Affichages: 3

Discussions similaires

Réponses
5
Affichages
202
Réponses
3
Affichages
435

Statistiques des forums

Discussions
312 820
Messages
2 092 411
Membres
105 411
dernier inscrit
Loasof