XL 2016 Combobox pour liste déroulante avec beaucoup d'occurences sous excel 2016

CROUTE

XLDnaute Nouveau
Bonjour à tous !

J'aurai bien besoin de quelqu'un qui sait bien se servir d'une Combobox...où une idée tout autre je prend aussi.
La liste "AGENT" a environ 500 occurrences le menu déroulant doit pouvoir être filtré pour faciliter la sélection

Il s'agit d'un plan de charge avec action à réaliser.

Contraintes : Excel 2016 et le fichier doit pouvoir être partagé.

Le fichier est joint ci-dessous.
 

Pièces jointes

  • Maquette Combobox vierge.xlsx
    214.5 KB · Affichages: 9

crocrocro

XLDnaute Occasionnel
2 petites corrections à apporter, (voir code ci-dessous CountLarge et pComboBox.Text = "").
VB:
Public Sub WS_SelectionChange(ByVal pTarget As Range, ByRef pComboBox As Object)
        
    AjusteParamComboBox pTarget
    
    'If AvecCombo And pTarget.Count = 1 Then
    If AvecCombo And pTarget.CountLarge = 1 Then

....


    Else
        Application.EnableEvents = False
        ' Ligne mise en commentaire
        '''''''''''''pComboBox.Text = ""
        Application.EnableEvents = True
        pComboBox.Visible = False
    End If
End Sub


Je vais créer une V3 pour mon fichier dans Téléchargements - Utilitaires Liste Déroulante Auto-Filtrée Dynamique
 

CROUTE

XLDnaute Nouveau
Bonjour,

J'avoue que pour une première approche je suis complètement dépassée j'imaginais un truc plus simple sans me lancer sur du code VBA. Besoin d'aide svp. Par quoi dois-je commencer ? Le débogage se lance dans le fichier transmis. Vous parlez de 2 corrections mais je ne sais pas quoi en faire.
 

crocrocro

XLDnaute Occasionnel
Bonjour,
avez-vous consulté le lien que j'ai mis dans le post #4 ?
Tout est détaillé dans la description et dans le fichier Excel (du lien) une page réexplique le tout en détail. Il y a des exemples.
J'ai fait le "travail" sur votre fichier. Il n'y a donc RIEN à faire de plus sauf la petite correction :
Comme je l'ai écrit dan le post #6, elle consiste simplement à remplacer les 2 lignes que j'ai signalées.
Pour faire simple :
- Ouvrir Visaul Basic (Alt + F11)
- Afficher le code du module Module_Gestion_ComboBox (double-clic sur le nom du module)
- Sélectionner tout le code de la macro WS_SelectionChange (entre Public Sub et End Sub)
- Supprimer
- remplacer par le code ci-dessous
C'est fini (mis en place pour décembre et janvier seulement)

Code:
Public Sub WS_SelectionChange(ByVal pTarget As Range, ByRef pComboBox As Object)
      
    AjusteParamComboBox pTarget
  
    If AvecCombo And pTarget.CountLarge = 1 Then
            TabCombo = Sheets(F_ListeRefCombo).Range(ListeRefCombo).Value
            With pComboBox
                .Visible = False 'ajout à cause du pb du DropDown pas au bon endroit
                .List = TabCombo
                '.Clear
                .Height = pTarget.Height + 3
                .Width = pTarget.Width
                .Top = pTarget.Top
                .Left = pTarget.Left
                .BackColor = pTarget.Interior.Color
                .Font.Name = pTarget.Font.Name
                .ForeColor = pTarget.Font.Color
                .Font.Bold = pTarget.Font.Bold
                .Font.Size = pTarget.Font.Size
                .MatchEntry = fmMatchEntryNone
                '.ListRows = 8  'nb max lignes affichées dans la combo
                .Text = pTarget.Value
                .Visible = True
                .Activate
                ' pas de DropDown, car masque les lignes suivantes et donc impossible de les sélectionner par clic
                '''.DropDown
            End With
    Else
        pComboBox.Visible = False
    End If
End Sub
 
Dernière édition:

crocrocro

XLDnaute Occasionnel
Voici un nouveau fichier :
J'ai complété la liste des prénoms-Noms de la feuille BaseDonnées avec des valeurs permettant de mettre en évidence les différents modes (paramétrés) des listes déroulantes, avec en particulier :
- une série, pour un même prénom, de noms Commençant par A (A1, A2, ... A9)
- une série où les personnes ont les mêmes initiales (M A)
La liste (tableau AGENT Nommé TAB_AGENT dans le Gestionnaire de noms) est triée par ordre alphabétique croissant.
La Combobox de la feuille Janvier 2025 est en mode "COMMENCE PAR"
La Combobox de la feuille Décembre 2024 est en mode "PROCHE"

dans la feuille de janvier
sur saisie de m , on obtient toutes les personnes dont le prénom commence par m
si on saisit mi ,, on obtient toutes les personnes dont le prénom commence par mi
1717429191231.png

1717429342291.png

dans la feuille de décembre
on est en mode PROCHE, la sélection est différente, elle se fait par mot et par ressemblance (je vous renvoie sur les explications du lien déjà donné).
sur saisie de m a , on obtient globalement d'abord toutes les personnes dont le prénom (ou le nom) commence par m et le nom (ou le prénom) commence par a
sur saisie de m a1 , on obtient globalement d'abord toutes les personnes dont le prénom (ou le nom) commence par m et le nom (ou le prénom) commence par a1
L'algorithme de sélection est un peu plus compliqué. Il tient compte également de la longueur des mots.

A Noter : La Liste déroulante est triée conformément au tableau AGENT (Nommé TAB_AGENT dans le Gestionnaire de noms) de la feuilles BaseDonnées et au Mode de la comboBox
- en mode "COMMENCE PAR" : La liste déroulante est triée exactement comme le tableau
- en mode "PROCHE" : le facteur de ressemblance est prioritaire sur le tri mais à ressemblance identique, c'est le tri du tableau qui définit l'ordre.

1717430165772.png

1717430314757.png
 

Pièces jointes

  • Maquette Combobox vierge crocrocro.xlsm
    194.3 KB · Affichages: 3
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 864
Messages
2 093 006
Membres
105 599
dernier inscrit
p.trivalle