Combobox + recherche

Bonsoir à tous,

J'ai dans un userform, une combobox listant des établissements scolaires, avec leurs communes.

J'ai utilisé RowSource dans les propriétés de là combobox afin d'alimenter celle-ci. (Les données sont dans une feuille du classeur. )

Comme il y a environ 300 références dans la combobox est-il possible de faire une recherche précise ?

Je m'explique, par exemple si je veux le collège Montaigu à Paris :

En ce moment, si je tape M (comme Montaigu), il me sort toutes les communes commençant par M. Je suis donc obligé de taper Paris, et de faire défiler pour trouver le collège montaigu.

J'aimerai donc, juste taper montaigu dans la combobox et tomber dessus tout de suite.

Je sais pas si je suis clair mais je vous remercie par avance de l'aide que vous pourrez me donner.

Bonjour

Pourrais-tu joindre ton fichier ?

Pour le rendre anonyme, au besoin tu peux remplacer le premier nom par Nom 1 et tirer vers le bas jusqu'à Nom 300...

Bye !

Bonsoir,

Exemple en PJ

En frappant Mo dans le combobox College, il montre les villes avec un lycée Montaigu

En frappant Pa dans le combobox Ville, il montre les lycées de Paris

Ceuzin

38college-2.zip (165.00 Ko)

Merci beaucoup à vous deux, merci ceuzin pour le travail accompli.

C'est tout à fait ce que je recherche. En revanche je bloque pour adapter ton code à mon fichier :

Dans "private sub userform initialize" j'ai déjà un code qui me sert pour une autre fonction de mon classeur.

Est-il de possible de faire plusieurs codes distinct dans une même procédure "userform initialize" ?

J'ai essayé plein de truc sans succès, comme mettre un "end" entre les deux codes, j'ai essayé userform initialize2, enfin bref j'ai pas réussi lol.

Merci encore


si besoin, le code contenu dans userform initialize est le suivant :

Private Sub USERFORM_INITIALIZE()

'placer les données dans l'onglet selectionné dans le menu déroulant
Dim ER As Worksheet

ONGLET.Clear
For Each ER In ThisWorkbook.Worksheets
 If ER.Name <> "vierge" Then
  ONGLET.AddItem ER.Name
 End If
Next ER

End Sub

Bonjour,

Il faudrait poster le fichier

Ceuzin

Ci-joint le fichier, merci.

ça concerne donc l'userform s'affichant avec le bouton "saisie rapide" sur l'onglet "accueil" et combobox "établissement d’accueil"

Base de donnée sur l'onglet f1

J'ai simplifié le fichier au maximum pour pouvoir le joindre...

Merciiiii

Steven

Saisie intuitive

En frappant Lang dans le combobox2 (établissement d'accueil), on fait apparaître les collèges Paul Langevin.

Il suffit de choisir.

En frappant Ferry dans le combobox2 (établissement d'accueil), on fait apparaître les collèges Jules Ferry.

Il suffit de choisir.

Dim f, rng, choix1()
Private Sub USERFORM_INITIALIZE()
  Set f = Sheets("F1")
  Set rng = f.Range("A2:A" & f.[A65000].End(xlUp).Row)
  choix1 = Application.Transpose(rng)
  Me.ComboBox2.List = choix1
End Sub

Private Sub ComboBox2_Change()
 If Me.ComboBox2.ListIndex = -1 And IsError(Application.Match(Me.ComboBox2, choix1, 0)) Then
   Me.ComboBox2.List = Filter(choix1, Me.ComboBox2.Text, True, vbTextCompare)
   Me.ComboBox2.DropDown
  Else

  End If
End Sub

Ici, la recherche intuitive se fait sur un seul mot. On peut la faire sur plusieurs mots si nécessaire.

Ceuzin

Merciii infiniment ceuzin, ça marche super bien sur la copie du fichier que tu m'as joint.

En revanche, lorsque je copie et colle le code dans mon fichier original, impossible d'ouvrir le formulaire. J'ai erreur 70, permission réfusée ?

As-tu une idée ?

Un grand merci

  • Supprimer Combobox2
  • Le créer à nouveau
  • Modifier la propriété Match Entry (option 2)

Ceuzin

Un grand merciii, c'est nickel


Rechercher des sujets similaires à "combobox recherche"