IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Alimentation dynamique Combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2012
    Messages : 47
    Par défaut Alimentation dynamique Combobox
    Bonjour,
    En VBA pour excel 2010 j'ai le fichier texte des 36000 communes de France avec le code INSEE de la commune.
    J'ai chargé ce fichier en mémoire et j'ai écrit une recherche dichotomique sur la table correspondant à ce fichier.
    Je veux me servir de cette table pour que sur un userform un utilisateur puisse retrouver rapidement une commune en ne tapant
    que les premières lettres du nom de la commune.
    L'idéee toute simple est d'utiliser un combobox et d'alimenter dynamiquement la liste déroulante au fur et a mesure des caractères frappés par l'utilisateur.
    Je cherche une bonne stratégie de gestion des évènements pour faire face aux comportements imprévisibles de l'utilisateur remplissant sa zone de saisie.
    Je cherche quelqu'un qui s'est déjà frotté à ce genre de situation.
    D'avance merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir,

    Je pense qu'une ListeBox avec une Textbox serait plus indiqué. Le texte est entré dans le TextBox et la liste triée est indiquée dans la ListeBox, une fois le commune trouvée, l'utilisateur peux cliquer dans la ListBox afin de récupérer son choix. Je n'est pas utiliser la propriété "Filter" du tableau car le résultat n'était pas probant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    'au niveau module pour être utilisé par les différentes proc de la Form
    Dim TblVilles() As String
     
    Private Sub UserForm_Initialize()
     
        Dim Plage As Range
        Dim I As Long
     
        'la plage se trouve en colonne A à partire de A2 (A1 = entête) de la feuille nommée "Villes" (<- adapter)
        With Worksheets("Villes")
     
            Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
        'dimensionne le tableau à la plage
        ReDim TblVilles(1 To Plage.Count)
     
        'rempli le tableau
        For I = 1 To Plage.Count
     
            TblVilles(I) = Plage(I)
     
        Next I
     
    End Sub
     
    Private Sub TextBox1_Change()
     
        Dim I As Long
     
        'vide la liste à chaque fois
        ListBox1.Clear
     
        'si le textbox n'est pas vide
        If TextBox1.Text <> "" Then
     
            'boucle sur le tableau et recherche la correspondance
            For I = 1 To UBound(TblVilles)
     
                If UCase(Left(TblVilles(I), Len(TextBox1.Text))) = UCase(TextBox1.Text) Then
     
                    'si trouvé, rempli la listbox
                    ListBox1.AddItem TblVilles(I)
     
                End If
     
            Next I
     
        End If
     
    End Sub
     
    Private Sub ListBox1_Click()
     
        'pour récupérer le choix dans la liste
        MsgBox ListBox1.Text
     
    End Sub
    Hervé.

  3. #3
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 108
    Par défaut
    Bonjour
    Si, par exemple le nombre de colonnes 20
    S'il vous plaît aviser

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/04/2015, 20h55
  2. Alimentation dynamique de la liste d'un ComboBox
    Par GOLDINGMAROC dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/02/2014, 12h47
  3. [C#] Suppression dynamique combobox
    Par diaboloche dans le forum Windows Forms
    Réponses: 7
    Dernier message: 07/03/2006, 08h58
  4. Alimentation dynamique d'un tableau
    Par SheikYerbouti dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/02/2005, 17h42
  5. Réponses: 3
    Dernier message: 25/03/2004, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo