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 :

Saisie semi-automatique moteur de recherche [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 36
    Par défaut Saisie semi-automatique moteur de recherche
    Bonjour,

    Je suis en train de réaliser un formulaire de recherche
    L'idée c'est que l'utilisateur, en tapant quelques lettres dans une ComboBox, excel lui envois toutes les solutions qui ont déjà été mises sur la page.

    J'ai trouvé du code sur Internet qui marche bien.

    En revanche, en tapant quelques lettres on peut voir des propositions, mais en cliquant sur une proposition : celle-ci ne s'affiche pas sur la ComboBox.

    Comment puis-je résoudre cela ? Quel évènement est associé au click dans le menu déroulant ?

    Merci

    Voici le code que j'ai trouvé :


    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
    Private Sub ComboBox1_Change()
     
     
        'Concerne la liste des Sociétaires pour chargement ou enregistrement > GRC
        'Mettre la Combobox en majuscule
        ComboBox1.Text = UCase(ComboBox1.Text)
     
        'Code pour maintenir la liste "restreinte" au fur et à mesure de la saisie du nom dans la combobox1
        SendKeys "{DEL}"
     
        'Appel de la liste des noms à utiliser dans la combobox1
       définitNomGlobal
     
        'Tier la liste apparaissant dans la combobox1 et sans doublons
        Dim d1
        Dim tmp As String
        Dim C As Range
        Dim tbl As Variant 'déclare la variable tbl (TaBLeau)
        Dim z As Integer 'déclare la variable z (incrément)
        Dim j As Integer 'déclare la variable j (incrément)
        Dim temp As Variant 'déclare la variable temp (valeur TEMPoraire)
     
        If Me.ComboBox1 <> "" Then
            Set d1 = CreateObject("Scripting.Dictionary")
            tmp = UCase(Me.ComboBox1) & "*"
            For Each C In
    [listeLJ]
                If UCase(C) Like tmp Then d1(C.Value) = ""
            Next C
     
            tbl = d1.keys 'définit le tableau des valeurs sans doublons
            'tri alphabétique
            For z = 0 To UBound(tbl) 'boucle 1 de 0 au nombre de valeur du tableau
                For j = 0 To UBound(tbl) 'boucle 2 de 0 au nombre de valeur du tableau
                    If tbl(z) < tbl(j) Then 'condition : si la valeur de la boucle 1 est invérieure à la valeur de la boucle 2
                        temp = tbl(z) 'définit la valeur temporaire temp
                        tbl(z) = tbl(j) 'la valeur de la boucle un devient la valeur de la boucle 2
                        tbl(j) = temp 'la valeur de la boucle deux devient la valeur temporaire temp
                    End If 'fin de la condition
                Next j 'prochaine valeur de la boucle 2
            Next z 'prochaine valeur de la boucle 1
     
     
            Me.ComboBox1.List = tbl
            Me.ComboBox1.DropDown
        End If
    End Sub
     
     
    Sub définitNomGlobal()
    ' Code utilisé pour la combobox1 >
    ' Sert à définir le nom du champ sélectionné dans la feuille "LJ"
    Dim derniereLigne As Long
     
     
    derniereLigne = Range("A" & Rows.Count).End(xlUp).Row
    Range("A2:A" & derniereLigne).Name = "listeLJ"
     
    End Sub

  2. #2
    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,


    Faire une recherche Google: saisie intuitive google combobox

    Voir exemple en PJ

    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
     
    Dim a()
    Private Sub UserForm_Initialize()
      a = [liste].Value
      Me.ComboBox1.List = a
    End Sub
     
    Private Sub ComboBox1_Change()
      Set d1 = CreateObject("Scripting.Dictionary")
      tmp = UCase(Me.ComboBox1) & "*"
      For Each c In a
        If UCase(c) Like tmp Then d1(c) = ""
      Next c
      Me.ComboBox1.List = d1.keys
      Me.ComboBox1.DropDown
    End Sub
     
    Private Sub ComboBox1_Click()
      ActiveCell = Me.ComboBox1
      Unload MeEnd Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 36
    Par défaut
    Merci chef !

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 36
    Par défaut
    Bonjour,

    Désolé de revenir vers vous,
    Je n'arrive pas à comprendre où est-ce que la variable "a" est paramétrée, afin qu'elle soit la liste des valeurs de mon tableau.

    J'ai vu que dans votre table BD vous aviez une cellule remplie par :
    =DECALER(BD!$A$2;;;NBVAL(BD!$A:$A)-1)

    Serait-ce avec cette commande ?
    J'ai utilisé cela en l’adaptant à ma feuille de calcul, mais je n'arrive pas à créer une liste de variable.

    En vous remerciant

    EDIT :

    Je suis passé par un autre moyen :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub UserForm_Initialize()
     
    Sheets("Outil").Select
     
    Call nbLigne
     
      For i = 2 To (nb + 1)
        ComboBox1.AddItem Cells(i, 1)
        a = ComboBox1.List
        Next
     
    End Sub
    Si jamais ça peut aider quelqu'un

  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,

    Additem est moins rapide que List

    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
     
    Dim a()
    Private Sub UserForm_Initialize()
      Set f = Sheets("BD")
      a = f.Range("A2:A" & f.[A65000].End(xlUp).Row).Value
      Me.ComboBox1.List = a
    End Sub
     
    Private Sub ComboBox1_Change()
      Set d1 = CreateObject("Scripting.Dictionary")
      tmp = UCase(Me.ComboBox1) & "*"
      For Each c In a
        If UCase(c) Like tmp Then d1(c) = ""
      Next c
      Me.ComboBox1.List = d1.keys
      Me.ComboBox1.DropDown
    End Sub
     
    Private Sub ComboBox1_Click()
      ActiveCell = Me.ComboBox1
      Unload Me
    End Sub
    Boisgontier
    http://boisgontierjacques.free.fr
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Textbox de recherche avec saisie semi-automatique.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/11/2007, 20h55
  2. Bloquer la saisie semi automatique du navigateur
    Par Oluha dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 01/02/2007, 22h53
  3. Saisie semi automatique
    Par Necron dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 06/02/2006, 09h05
  4. Saisie semi-automatique
    Par kurul1 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/01/2006, 08h20
  5. Liste déroulante en saisie semi automatique
    Par pier07 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 29/07/2005, 17h02

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