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 :

Recherche rapide dans une combobox [XL-2016]


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
    Autodidact en VBA pour un ami indépendant
    Inscrit en
    Février 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidact en VBA pour un ami indépendant

    Informations forums :
    Inscription : Février 2019
    Messages : 29
    Par défaut Recherche rapide dans une combobox
    Bonjour le forum,

    J'ai une combobox alimentée par la méthode "Additem".

    j'aimerais savoir s'il est possible quand on tape un ou plusieur caractères dans la combo-box, qu'il y apparaisse uniquement les lignes qui contiennent ces caractères et peu importe leur position.

    exemple :

    si ma combobox contient ces 5 lignes

    - Création mur
    - Création faut plafond
    - Isolation mur
    - Pose carrelage murale
    - Pose carrelage sol

    Si je tape "mur" dans ma combo-box j'aimerais qu'il n'y est plus que les 3 lignes qui contiennent "mur".

    - Création mur
    - Isolation mur
    - Pose carrelage murale

    Je devrais pouvoir le faire grâce à une textbox supplémentaire qui refait un additem avec sur les caractères qu'elle contient, mais je voudrai si possible le faire directement en live dans la combobox.


    Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Autodidact en VBA pour un ami indépendant
    Inscrit en
    Février 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidact en VBA pour un ami indépendant

    Informations forums :
    Inscription : Février 2019
    Messages : 29
    Par défaut
    J'ai posé ma question trop vite, j'ai trouvé la solution tout seul.

    Voici le code si ça peut servir à quelqu'un.

    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
    Private Sub cboPosteDevis_change()
     
    If cboPosteDevis.Value = "" Then
      M = ['Tableaux'!J2]
      Dim j As Integer
     
            For j = 3 To M Step 5
              cboPosteDevis.AddItem Sheets("postes de travail").Range("A" & j)
            Next j
     
    End If
     
     
    If cboPosteDevis.Value <> "" Then
     
    cboPosteDevis.Clear
     
        With Sheets("Postes de travail").Columns("A:A")
            Set tr = .Find(cboPosteDevis.Value)
            If Not tr Is Nothing Then
                    Dep_Tri = tr.Address
                Do
                    cboPosteDevis.AddItem tr
                    Set tr = .FindNext(tr)
                Loop While Not tr Is Nothing And tr.Address <> Dep_Tri
            End If
       End With
     
    End If
     
    End Sub

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonsoir,


    Avec un seul ComboBox et la fonction Filter()
    La liste du ComboBox se réduit au fur et à mesure de la frappe des caractères dans le ComboBox.

    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
    Dim choix1()
    Private Sub UserForm_Initialize()
      choix1 = Application.Transpose([liste])
      Me.ComboBox1.List = choix1
    End Sub
     
    Private Sub ComboBox1_Change()
     If Me.ComboBox1.ListIndex = -1 Then
       Me.ComboBox1.List = Filter(choix1, Me.ComboBox1.Text, True, vbTextCompare)
       Me.ComboBox1.DropDown
      End If
    End Sub
     
    Private Sub ComboBox1_click()
      ActiveCell = Me.ComboBox1
    End Sub

    Boisgontier
    Fichiers attachés Fichiers attachés

  4. #4
    Membre averti
    Homme Profil pro
    Infirmier à dom
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Infirmier à dom
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Par défaut
    Bonjour,
    je cherche depuis un moment ce genre de solution mais pour une simple liste déroulante, est-il possible de l'adapter?
    Quelques commentaires m'aideraient à comprendre
    Merci

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    1-Avec Données/Validation, il faut frapper les premières lettres puis cliquer sur la flèche. Le menu est copiable.
    2-Avec Données/Validation, il faut frapper des lettres contenues puis cliquer sur la flèche. Le menu n'est pas copiable.
    3- Avec un Combobox dans la feuille , la liste affichée dans le ComboBox se réduit au fur et à mesure de la frappe des caractères.

    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
    Dim a()
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect([A2:A10], Target) Is Nothing And Target.Count = 1 Then
        Set f = Sheets("BD")
        a = Application.Transpose(f.Range("A2:A" & f.[A65000].End(xlUp).Row))
        Me.ComboBox1.List = a
        Me.ComboBox1.Height = Target.Height + 3
        Me.ComboBox1.Width = Target.Width
        Me.ComboBox1.Top = Target.Top
        Me.ComboBox1.Left = Target.Left
        Me.ComboBox1 = Target
        Me.ComboBox1.Visible = True
        Me.ComboBox1.Activate
      Else
        Me.ComboBox1.Visible = False
      End If
    End Sub
     
    Private Sub ComboBox1_Change()
     If Me.ComboBox1 <> "" Then
       Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
       Me.ComboBox1.DropDown
     End If
       ActiveCell.Value = Me.ComboBox1
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Homme Profil pro
    Infirmier à dom
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Infirmier à dom
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Par défaut
    Super, et merci pour la rapidité
    j'avais pensé à la fonction EQUIV mais je n'avais aucune idée de comment la placer! je potasse ça de plus prés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche dans une Combobox
    Par jlm22 dans le forum VB.NET
    Réponses: 3
    Dernier message: 08/04/2011, 10h44
  2. recherche avancée dans une combobox
    Par Chico_Latino dans le forum C#
    Réponses: 1
    Dernier message: 07/05/2010, 11h08
  3. Comment faire une recherche dans une combobox et une sélection automatique
    Par VictoriusDan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2009, 16h17
  4. Recherche rapide dans une liste
    Par jblecanard dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/09/2008, 23h53
  5. Réponses: 7
    Dernier message: 15/02/2006, 11h52

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