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 :

autocomplétion d'après une colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 344
    Par défaut autocomplétion d'après une colonne
    Bonjour,
    j'ai une feuille Excel, je voudrais que pour une certaine cellule si l'on commence à taper du texte ça ouvre une boîte déroulante avec les 10 plus proches valeurs d'une certaine colonne de 6000 lignes autre part. A noter que par exemple si je tape "si" ça doit me proposer "asi", "psic", "sic", "g si", etc et ça ne doit pas être sensible à la casse. Les accents doivent être bien gérés.
    Voilà donc en entrée du programme :
    - la colonne de propositions
    - la cellule où l'on tape (qui ne sera bien sûr pas sur la même colonne)
    Merci de votre aide
    Bonne journée

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 344
    Par défaut
    j'ai trouvé la solution, je la mets pour ceux que ça intéresse :

    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
    Private Sub UpdateComboBox()
        liste = Worksheets("Feuil1").Range("A1:A9015").Value ' la liste des valeurs, changer 9015 par la vraie valeur
        texte = UserForm1.ComboBox1.Text
        If UserForm1.ComboBox1.ListIndex >= 0 Then
            Exit Sub
        End If
        UserForm1.ComboBox1.Clear 'vide la liste
        For i = 1 To 9015 ' changer 9015 par la vraie valeur
            Dim pattern
            pattern = "*" + Replace(LCase(texte), " ", "*") + "*" ' création du pattern (* = de 0 à n caractères)
            If LCase(liste(i, 1)) Like pattern Then ' si l'élément de la liste est comme le pattern
                UserForm1.ComboBox1.AddItem liste(i, 1) ' ajoute l'entrée à la liste
            End If
        Next i
        ' Simule l'appui sur [ENTER] pour changer le focus -> La liste déroulante se ferme
        SendKeys ("{ENTER}"), True
        SendKeys ("{F4}"), True 'pour ouvrir la boîte déroulante
    End Sub
    Private Sub ComboBox1_Change()
        UpdateComboBox
    End Sub
     
    Private Sub UserForm_Activate()
        UpdateComboBox
    End Sub

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 344
    Par défaut
    à noter que pour que ça fonctionne
    il faut mettre tabstop de tous les contrôles sauf le combobox à false
    mettre matchentry de combobox à fmMatchEntyNone

    le sendkey enter est pour corriger un bug de rafraîchissement d'Excel

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

Discussions similaires

  1. Trouver nom d'une table d'après une colonne Oracle
    Par hichem0550 dans le forum Administration
    Réponses: 1
    Dernier message: 04/09/2017, 13h37
  2. Réponses: 3
    Dernier message: 26/02/2010, 11h18
  3. Calcul de la somme d'une colonne apres la derniere ligne non vide
    Par lilp1 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/06/2009, 11h14
  4. Obtenir l'index d'une colonne d'après son nom
    Par The eye dans le forum VB.NET
    Réponses: 6
    Dernier message: 05/03/2008, 18h48
  5. Affichage d'une colonne après migration
    Par fefe44 dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 04/03/2008, 19h56

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