Recherche aphabétique sur liste

  • Initiateur de la discussion Initiateur de la discussion gg13
  • 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 !

gg13

XLDnaute Occasionnel
Bonjour le forum.
Je vous explique mon problème.
Dans une colonne A17 jusqu’a A2017 par exemple j’ai 2000 noms classés par ordre alphabétique.
Cette colonne apparaît dans une zone de liste sur un USF.
Je voudrai pour éviter de dérouler toute la liste aller par exemple directement au premier nom commençant par un C et que la liste débute sur cette cellule.
Je sais faire en lisant dans chaque case, testant la première lettre et passant à la ligne suivante avec la fonction offset.
Mais en parcourant les sujets sur le forum je m’aperçois qu’il existe certainement une méthode plus rapide que je ne connais pas.
Merci aux doués des bases de données de m’indiquer comment faire.
gg13
 
Re : Recherche aphabétique sur liste

Bonjour gg13,

Il suffit de régler la propriété "MatchEntry" sur 0(fmMatchEntryFirstLetter). Ainsi, la liste déroulante affichera le 1er nom de la série commençant par la lettre tapée.

Espérant avoir répondu.

Cordialement.
 
Re : Recherche aphabétique sur liste

gg13,

Pour améliorer le fonctionnement, tu peux écrire les lignes suivantes dans le code de ta liste déroulante :

Code:
Private Sub ComboBox1_Change()
Select Case Len(ComboBox1)
  Case Is < 2
    ComboBox1.MatchEntry = fmMatchEntryFirstLetter
  Case Is > 1
    ComboBox1.MatchEntry = fmMatchEntryComplete
End Select
End Sub

Cordialement.
 
Re : Recherche aphabétique sur liste

Bonjour gg13,

Plutôt qu'une ListBox dans l'UserForm, utilisez une ComboBox.

Sa liste peut par exemple être définie en donnant à la propriété RowSource la valeur : Feuil1!A17:A2017.

Et donnez à la propriété MatchEntry la valeur : 0 - fmMatchEntryFirstLetter.

Tout a été prévu comme vous le voyez.

Edit : salut Papou-net, désolé je suis resté longtemps sans rafraîchir 🙂

A+
 
Dernière édition:
Re : Recherche aphabétique sur liste

Papou net et job75
Merci de votre réponse mais je ne comprends pas trés bien.
Je dois utiliser une listbox car le programme existe et je ne peux pas changer.

Pour une listbox je pense que l'on peux changer combobox par listbox.
Je ne comprends pas bien à quoi servent les case is ???

Pour donner la valeur 0 est qu'il faut écrire :
ComboBox1.MatchEntry = 0 ????

Merci
gg13
 
Re : Recherche aphabétique sur liste

RE : gg13

Pour une listbox, la démarche est la même que pour le combobox : tu peux mettre indifféremment la propriété MatchEntry à 0 ou en toutes lettres. La première façon est plus rapide à l'écriture mais la seconde est plus "parlante" à la lecture du code.

Toutefois, dans le cas de la listbox, il ne sert à rien d'écrire la macro, la mise à jour de la propriété se suffit à elle-même.

Les Cases Is compris entre Select Case et End Select sont en quelque sorte équivalents à des conditions IF...Then, mais je préfère employer ces aiguillages conditionnels à des tests de conditions successives, surtout si les différentes conditions sont nombreuses.

Il te suffit de taper Select Case dans Google et tu auras toutes les explications nécessaires.

En te souhaitant un bon WE.

Cordialement.

Edit : bonjour job75
 
Re : Recherche aphabétique sur liste

Re,

La TextBox1 ayant été créée, mettre cette macro dans le code de l'UserForm :

Code:
Private Sub TextBox1_Change()
Dim plage As Range, lig As Variant
Set plage = Sheets("Feuil1").[A17:A2017] 'à adapter
lig = Application.Match(TextBox1 & "*", plage, 0)
If IsError(lig) Then lig = 1
ListBox1.ListIndex = lig - 1
End Sub
Si le texte entré dans la TextBox n'est pas trouvé dans la plage, c'est le 1er item de la liste qui est sélectionné.

Edit : bon OK, pour une seule lettre la TextBox ne sert pas à grand'chose...

A+
 
Dernière édition:
Re : Recherche aphabétique sur liste

Voici un fichier exemple avec un combobox et une listbox.

Dans le cas du combobox, j'ai créé une macro événementielle, mais on peut s'en passer. En ce qui concerne la listbox, le simple usage des propriétés donne le résultat escompté.

Cordialement.
 

Pièces jointes

Re : Recherche aphabétique sur liste

Re bonjour
Merci à vous deux Papou-net et job 75.
Vous allez dire que je suis null,n'hésitez pas c'est vrai.
En fait j'ai 26 boutons sous la liste et chaqu'un renvoie une lettre j'ai testé avec la lettre B.
Ce que je voudrai c'est trouver la premiere ligne avec un nom commençant par B dans la colonne de C17 à C2017.(C29 dans ce cas) récuperer l'adresse et que la liste affichée dans la Listbox commence à cette adresse.
J'ai testé vos codes.
Job75
Private Sub CommandButton62_Click()
Dim plage As Range, lig As Variant

Lettre = Sheets("Init").Range("C18").Value ' valeur B pour l'exemple renvoyée par un bouton
'le premier nom commençant par la lettre B est en C29

Set plage = Sheets("Data_gen").[A17:A2017] 'à adapter
lig = Application.Match(Lettre & "*", plage, 0)
If IsError(lig) Then lig = 1
List_membres.ListIndex = lig - 1
End Sub

Rien ne ce passe sur la feuille contenant la liste et la cellule C29 n'est pas séléctionnée
et pourquoi lig-1 etpas lig+1 pour descendre la liste.

Papou net
Private Sub CommandButton62_Click()
Select Case Len(List_membres) 'zone de liste [A17:A2017]
Case Is < 2
List_membres.MatchEntry = fmMatchEntryFirstLetter
Case Is > 1
List_membres.MatchEntry = fmMatchEntryComplete
End Select
End Sub

Rien ne se passe non plus et je ne vois pas ou on rentre la lettre à chercher et ou récupérer l'adresse trouvée.
 
Re : Recherche aphabétique sur liste

Vous allez dire que je suis null,n'hésitez pas c'est vrai.
En fait j'ai 26 boutons sous la liste et chaqu'un renvoie une lettre j'ai testé avec la lettre B.
Ce que je voudrai c'est trouver la premiere ligne avec un nom commençant par B dans la colonne de C17 à C2017.(C29 dans ce cas) récuperer l'adresse et que la liste affichée dans la Listbox commence à cette adresse.

Rien ne se passe non plus et je ne vois pas ou on rentre la lettre à chercher et ou récupérer l'adresse trouvée.

Alors là, ça se précise : j'ai modifié ton fichier pour te faire une ébauche de ce que tu envisages. Dis-moi si j'ai bien tout compris.

A te lire.

Cordialement.
 

Pièces jointes

Re : Recherche aphabétique sur liste

Papou-net
Petit problème la fonction
AfficheListe Me.ActiveControl.Caption
ne passe pas je reçois un message "propriété non gérée par cet objet".
J'ai mis dans un module la macro Afficheliste adaptée

Sub AfficheListe(Lettre As String)
With Main
.List_membres.Clear
For Each cel In Sheets("Data_gen").Range("A:A").SpecialCells(xlCellTypeConstants)
If UCase(Left(cel.Value, 1)) = Lettre Then .List_membres.AddItem (cel.Value)
Next
End With
End Sub

Mon USF s'appelle" Main" et la liste "List_membres"
Le tout est sur une même page d'un multipage mais en fait l'erreur arrive de suite
en utilisant le bouton alors que sur ton fichier c'est OK.
Sais-tu pourquoi ?
Question subsiliaire ou trouver toutes ces informations ,je ne connais pas du tout .
gg13
 
Re : Recherche aphabétique sur liste

Re

C'est normal si tes contrôles sont sur un multipage : il faut alors citer la page pour obtenir le contrôle actif, sans quoi c'est la page qui est considérée active.

Essaies donc comme ceci :

Code:
AfficheListe Me.MultiPage1.page1.ActiveControl.Caption

Remplace éventuellement les noms de Page1 par celui que tu as choisi.

Pour répondre à ta question subsidiaire :

ou trouver toutes ces informations ,je ne connais pas du tout

C'est en fouillant un peu partout. Si tu es un "grand débutant", je te conseillerais d'user sans modération de l'enregistreur de macros d'Excel, puis de les modifier et de contrôler leur comportement en utilisant le pas-à-pas de l'éditeur VBE. N'hésites pas non plus à utiliser l'aide de VBE, en sélectionnant un mot-clé puis en appuyant sur F1 : tu auras la syntaxe et les paramètres détaillés pour cette instruction. Consulter les forums, celui-ci étant parmi les meilleurs, ne pourra que t'aider à progresser. Enfin, il existe en librairie des dizaines d'ouvrages consacrés à Excel et VBA, dont certains sont bon marché.

Espérant t'avoir aidé.

Cordialement.
 
Dernière édition:
- 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

B
Réponses
4
Affichages
2 K
benoitoleron
B
M
Réponses
3
Affichages
1 K
mtinard
M
E
  • Question Question
Réponses
11
Affichages
3 K
B
Réponses
3
Affichages
833
F
Réponses
11
Affichages
1 K
F
Réponses
15
Affichages
5 K
thierdau
T
M
  • Question Question
Réponses
3
Affichages
1 K
Michel C
M
D
Réponses
5
Affichages
1 K
Rénato
R
Retour