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 :

liste déroulante avec autocomplétion


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut liste déroulante avec autocomplétion
    Bonjour,

    Aprés maintes et maintes recherche sur google, ou sur des forms...je ne sais plus ou aller .
    Voici ma question : Exciste il un programme vba qui permet de réaliser une liste déroulante avec une autocompletion.
    Je précise bien vba car sur google ou sur des forums, on me parle de java, html alors que ce sont deux programmes qui me sont totalement inconnu.

    Voici un exemple de ce que je souhaiterais avoir sur mon fichier ci joint :

    Lorsque j'inscris les premiers chiffres dans la cellule E8, et que je clic sur la flèche de la liste déroulante, j'ai uniquement la liste des données qui commence par les lettres choisies et c'est super. Mais ensuite, je suis obligé de sélectionner sur cette liste, la valeur que je désire voir afficher;

    Ne pourrais t on pas améliorer la lise déroulante de telle sorte que

    Dans la cellule E8 (par exemple), si je commence à rentrer les premiers chiffres et ces chiffres correspondent a une valeur unique, celle-ci s'afficherait directement dans la cellule E8.
    Et si les premiers chiffres correspondent à plusieurs valeurs, je continuerais avec la première lettre, voir la deuxième lettre.

    Par exemple:
    1er cas) Dans ma liste déroulante, j'ai la valeur 433 ELP 92 et 433 EHS 92
    et c'est la valeur 433 ELP 92 que je veux voir afficher dans la cellule E8.
    Dans cette cellule E8, je commence à noter 433 et les valeurs commençant par 433 s'affichent dans la liste déroulante (dans ca cas, j'aurais 433 ELP 92 et 433 EHS 92).
    Je souhaiterais que, si je continue avec les lettres EL (donc 433 EL), la valeur 433 ELP 92 s'affiche directement dans la cellule E8.

    2ieme cas) Dans ma liste déroulante, j'ai qu'une seule valeur 687 FHS 92. Je souhaiterais que, si dans la cellule E8, je commence à noter 687, la valeur 687 FHS 92 s'affiche directement dans la cellule E8.

    Merci grandement de votre aide

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Sans avoir regardé ton fichier... J'ai tout de même fait ce petit test, qui marche bien (sans avoir testé toutes les possibilités) mais qui nécessitera sans doute un quelconque paufinement.

    Directement sur la feuille de calcul, place un ComboBox (de la barre 'Boîte à outils Contrôles') en mode création (activer le bouton Mode création et afficher la page de propriétés, voir l'illustration en bas), donner le nom cmbSaisie et mettre la propriété Visible à False. Désactiver le mode création et fermer la boîte de dialogue Propriétés.

    Le code qui suit doit être placé dans la page de code de la feuille où se trouve 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Option Explicit
     
    Private Sub cmbSaisie_Click()
        ActiveCell.Value = cmbSaisie.Text
        cmbSaisie.Text = ""
        ActiveCell.Offset(1, 0).Activate
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target.Offset(-1, 0).Value <> "" Then
            With cmbSaisie
                .Left = Target.Left
                .Top = Target.Top
                .Width = Target.Width
                .ListFillRange = IIf(Target.Offset(-1, 0).Row = 1, _
                                     Target.Offset(-1, 0).Address, _
                                     Target.Offset(-1, 0).Address & ":" & _
                                           Target.Offset(-1, 0).End(xlUp).Address)
                .Visible = True
            End With
          Else
            With cmbSaisie
                .Text = ""
                .Left = Range("D1").Left    ' retourne à son poste de départ
                .Top = Range("D1").Top
                .ListFillRange = ""
                .Visible = False
            End With
        End If
    End Sub
    En espérant que ça t'aidera.

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut bonjour
    Merci pour cette réponse zazaraignée;
    mais je t'avouerais que je ne sais pas par ou commencer avec ce code .
    Serait il possible, à l'aide du fichier joins, que tu m'indiques les étapes à suivre pour enregistrer ton code dans le comboBox .
    je te joins a nouveau le fichier ....

Discussions similaires

  1. Liste déroulante avec une autocomplétion
    Par ARROWPHIL dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 02/10/2008, 07h56
  2. Réponses: 5
    Dernier message: 13/10/2005, 10h19
  3. liste déroulante avec ajout possible
    Par bachilbouzouk dans le forum ASP
    Réponses: 5
    Dernier message: 19/04/2005, 11h48
  4. liste déroulante avec données mysql
    Par fab44 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/02/2005, 19h45
  5. liste déroulante avec session
    Par leeloo076 dans le forum ASP
    Réponses: 3
    Dernier message: 19/03/2004, 11h01

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