Autres Menu déroulant saisie prédictive

Quicksland

XLDnaute Nouveau
Bonsoir a tous

je souhaiterai avoir une liste déroulante avec saisie prédictive dans plusieurs cellules ( de C10 a C20 et de C31 a C41 )

actuellement il y a une liste déroulante mais vu le nombres de ligne dans a liste source ce n'est pas pratique

merci de votre aide 👍
 

Pièces jointes

  • ECHANTILLON TEST.xlsx
    63.5 KB · Affichages: 10

Dudu2

XLDnaute Barbatruc
Bonjour,

Bien que le sujet soit résolu, à titre d'essai voici une version qui utilise un module gérant une ComboBox dynamique et un module d'assistance à la saisie. Les 2 modules sont indépendants et peuvent fonctionner l'un sans l'autre.

C'est un exercice difficile. Le code de la ComboBox dynamique est complexe, par nature dans ce contexte particulier et aussi pour contrecarrer les divers bugs Excel sur les ComboBoxes. Mais la mise en œuvre est assez simple (voir bouton de Help ajouté).

Un des bugs Excel très difficile à contourner est le Unload sur le 2ème click successifs du bouton DropDown (pour le Drop Up de la liste) qui crash violemment et ferme carrément Excel. Son contournement a d'ailleurs un léger effet négatif sur l'ergonomie.

De plus les évènements sur ComboBox sont totalement insensibles à Application.EnableEvents, et il faut donc gérer ça manuellement.

A essayer. Pas forcément garanti 100% sans bug ! :eek:

Edit: voir nouvelle version ci-dessous
 
Dernière édition:

AtTheOne

XLDnaute Nouveau
Bonjour @Quicksland
Et si on y mettait tous un peu son grain de sel !

Après avoir vu l’outil de Daniel, je me suis rappeler que j'avais déjà fait un truc du même genre du temps où je travaillais ...

J'ai une solution qui utilise les expressions régulières.
L'avantage est que l'on peut taper plusieurs mots (même partiels) séparés par un espace et placés dans n'importe quel ordre :
"far to" te filtrera tous les plats contenant TOMATES FARCIES y compris SP. TOMATES FARCIES.

J'ai placé la Combo sur la feuille (je n'ai pas fait de formulaire).

J'ai ajouté un peu de code pour gérer l'outil Calendrier (faire clic droit sur les cellules de date permet d'afficher le calendrier à proximité de la cellule cliquée.

Il y a aussi un autre exemple (sur un sujet plus macabre) qui permet d'affiche une fiche...

Le code pour "ECHANTILLON" et "Choisir une personne"se trouve respectivement sur Feuil01 et Feuil03.

Cordialement
Alain
 

Pièces jointes

  • Combo filtrée.xlsm
    140 KB · Affichages: 7
Dernière édition:

Dudu2

XLDnaute Barbatruc
@Alain CHEFSON
C'est une option possible et c'est bien de la proposer.

Concernant la solution que j'ai postée, j'ai pu apporter de petites améliorations:
- Meilleur contournement du BUG Excel (en principe 100% des cas de crash sont maintenant couverts),
- Lever du léger inconvénient d'ergonomie liée à ce contournement,
- Petite correction pour éviter un double appel de l'initialisation de la Saisie Assistée sur 2 évènements distincts.

Il y a de multiples possibilités de séquences d'évènements et je pense les avoir toutes couvertes. Mais évidemment personne n'est à l'abri d'un scénario improbable.

Edit: Fichier supprimé cause bug trouvé par @Alain CHEFSON. Voir ci-dessous.
 
Dernière édition:

AtTheOne

XLDnaute Nouveau
@Alain CHEFSON
C'est une option possible et c'est bien de la proposer.

Concernant la solution que j'ai postée, j'ai pu apporter de petites améliorations:
- Meilleur contournement du BUG Excel (en principe 100% des cas de crash sont maintenant couverts),
- Lever du léger inconvénient d'ergonomie liée à ce contournement,
- Petite correction pour éviter un double appel de l'initialisation de la Saisie Assistée sur 2 évènements distincts.

Il y a de multiples possibilités de séquences d'évènements et je pense les avoir toutes couvertes. Mais évidemment personne n'est à l'abri d'un scénario improbable.
Bonsoir @Dudu2
Je viens de jeter un œil sur ta nouvelle version.

J'ai un petit bug dans ComboBoxExit quand je quitte la combo sans sélection,
SetValue = true mais Me.ComboBoxValidation.ListIndex =-1
Pour palier ce bug j'ai fait le test sur Me.ComboBoxValidation.ListIndex>-1
(If Me.ComboBoxValidation.ListIndex > -1 Then
...)
Et j'ai testé avec une liste de 400000 lignes (toujours issue des données INSEE)
Eh bien je suis bluffé 🤩 : c'est un peu ralenti, mais c'est acceptable !

Maintenant je suis titillé par l'envie d'améliorer ma version ... J'ai fais l'essai en me passant des RegExp mais ce n'est pas ça, je vais creuser en m'inspirant de ta méthode.

Amicalement
Alain
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
J'ai un petit bug dans ComboBoxExit quand je quitte la combo sans sélection,
Tu peux me décrire la séquence de ce que tu fais précisément ou ScreenToGif si tu l'as.
Je n'arrive pas à reproduire

En fait, dans cette version, la liste complète des valeurs de la ComboBox n'est chargée QUE SI on entre en modification (modification de la ComboBox.Value) ou si on déclenche le bouton DropDown. De sorte qu'un simple parcours des cellules candidates avec les touches de déplacement n'utilise qu'une liste de 1 valeur (celle de la cellule) et ne nécessite pas les ressources nécessaires au chargement complet de la liste.
 

AtTheOne

XLDnaute Nouveau
Bonsoir @Dudu2
J'ai galéré pour reproduire le bug, mais j'ai enfin trouvé :
  • J'ouvre ton fichier dans Excel directement à partir du forum (version 2021).
  • J'autorise les modifications
  • Je clique dans une cellules "Plats"
  • Je dropdown la liste sans rien sélectionner
  • Je clique dans la zone de saisie...
  • Et là j'ai le bug (j'ai vérifié s'est reproductible)
1637349756906.png


1637349551938.png


Voilà
Bon courage
Alain
 

Dudu2

XLDnaute Barbatruc
OK trouvé en 10 secondes.
C'est bien sûr une modif de dernière minute !
En l'occurrence, la saisie vide est autorisée (paramètre d'appel de la fonction ComboBoxValidationCréation) et ce n'est bien sûr pas une valeur de la ComboBox.List.
Je prends la valeur à placer dans la cellule dans la ComboBox.List et non pas dans le ComboBox.Value pour bien respecter la casse de la liste (qui peut être différence de la casse de la ComboBox.Value saisie), et là patatra.
Merci pour ton debug et le temps passé.
 

Pièces jointes

  • ECHANTILLON TEST.xlsm
    128.6 KB · Affichages: 12

Quicksland

XLDnaute Nouveau
OK trouvé en 10 secondes.
C'est bien sûr une modif de dernière minute !
En l'occurrence, la saisie vide est autorisée (paramètre d'appel de la fonction ComboBoxValidationCréation) et ce n'est bien sûr pas une valeur de la ComboBox.List.
Je prends la valeur à placer dans la cellule dans la ComboBox.List et non pas dans le ComboBox.Value pour bien respecter la casse de la liste (qui peut être différence de la casse de la ComboBox.Value saisie), et là patatra.
Merci pour ton debug et le temps passé.
Bonjour Dudu2

Merci pour ton aide 👍

Je trouve ton fichier vraiment bien surtout que ça améliore grandement la facilité de recherche ;)

Apres réflexion et l'utilisation du fichier de Daniel pendant plusieurs jours serait il possible de faire un mix des deux ?

C'est a dire de garder l 'idée de base de Daniel que je trouve très bien ( fenêtre de recherche qui s'ouvre en faisant un click droit )

et avoir la saisie de ton fichier car je trouve cela très facile d'utilisation

je te remet mon fichier car c'est trop compliquer pour moi :rolleyes:

je te remercie d'avance ;)
 

Pièces jointes

  • ECHANTILLON.xlsm
    77 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
292 810
Messages
1 926 466
Membres
183 092
dernier inscrit
Juvenat