Liste déroulante intuitive (auto-complétion)

Résolu
CidjyStar Messages postés 9 Statut Membre -  
CidjyStar Messages postés 9 Statut Membre -
Bonjour la communauté CCM,

J'ai une liste de noms et de prénoms (sur 1 colonne, A2:A362) sur une 2 ème feuille et je souhaiterais que lorsque je tape des lettres dans une cellule (qui se trouve sur la 1 ère feuille, en L2) les noms ou prénoms qui correspondent aux lettres tapées soient proposés.

Je sais qu'il faut utilisé une macro-commande ou combobox mais malgré avoir suivi plusieurs tutos et essayer de comprendre via les réponses des autres sur plusieurs sites (3 jours), j'ai finalement décidé d'exposé mon incompréhension en ligne afin d'avoir de l'aide, je souhaiterais que l'on m'explique pas à pas ce qu'il faut faire pour que je puisse comprendre la logique.

Merci d'avance à ceux qui prendront de leur temps pour m'aider.

3 réponses

  1. Boisgontierjacques Messages postés 177 Statut Membre 64
     
    Bonjour,

    Une VRAIE saisie intuitive (la liste se réduit au fur et à mesure de la frappe des caractères)

    http://boisgontierjacques.free.fr/pages_site/listes_cascade.htm#Simul_DV

    Boisgontier
    3
    1. CidjyStar Messages postés 9 Statut Membre
       
      Bonjour,

      Merci d'avoir pris de votre temps pour me répondre, lors de mes précédentes recherches sur le net je suis souvent tombé sur vos propositions, vos réponses et je sais que ce que vos solutions fonctionnent, cependant je n'arrive pas à mettre en forme les codes et solutions que vous proposé.

      Dans le code suivant, dois-je remplacer [A2:A16] par [Feuille2.A2:A362] ?

      Et ma cellule en L2 correspond à quoi dans ce code ?

      J'ai vraiment du mal à comprendre (j'ai pourtant compris certains points), lorsque j'aurais du temps je vais m'y mettre franchement. Je reviens la semaine prochaine vous dire ce qu'il en résulte, je vais voir si je peux me dégagé une demi-journée ce week-end.

      Merci de bien vouloir m'aidé.

      Dim a()
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect([A2:A16], Target) Is Nothing And Target.Count = 1 Then
      a = Sheets("bd").Range("liste").Value
      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
      'If Target <> "" Then SendKeys "{esc}"
      'Me.ComboBox1.DropDown ' ouverture automatique au clic dans la cellule (optionel)
      Else
      Me.ComboBox1.Visible = False
      End If
      End Sub

      Private Sub ComboBox1_Change()
      If Me.ComboBox1 <> "" Then
      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 If
      ActiveCell.Value = Me.ComboBox1
      End Sub

      Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
      Me.ComboBox1.List = a
      Me.ComboBox1.Activate
      Me.ComboBox1.DropDown
      End Sub

      Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
      If KeyCode = 13 Then ActiveCell.Offset(1).Select
      End Sub
      0
    2. CidjyStar Messages postés 9 Statut Membre
       
      Bonjour Boisgontier Jacques,

      Je mets un lien pour vous aider à visualiser, pour indication la cellule L2 qui doit contenir la liste avec autocomplétion qui se trouve sur la feuille Calcul et la feuille Liste des agents qui contient la plage de données (A2:A362).

      https://www.cjoint.com/c/HGzbRucdzox

      Si il vous faut plus de détails, dîtes le moi j'en rajouterais selon ce que vous me demanderais.

      Merci.
      0
  2. thev Messages postés 2010 Date d'inscription   Statut Membre Dernière intervention   723
     
    Bonjour,

    ci-jointe une proposition via :
    1- l'utilisation d'une Combobox nommée "Choix_Nom" , rattachée à la 1ère feuille
    2- un code VBA rattaché à la 1ère feuille

    Ne connaissant pas votre niveau de programmation, vous devrez être plus précis dans vos demandes d'explication.

    https://cjoint.com/c/HGtkEzLUHDI
    0
    1. CidjyStar Messages postés 9 Statut Membre
       
      Bonjour,

      Merci pour votre réponse et votre aide.
      J'ai un soucis car lorsque je clic sur la combobox, j'arrive à insérer des lettres mais ça s'arrête là, j'essaie de comprendre mais je peine sérieusement.
      Je vais me penché plus sérieusement sur le fichier que vous m'avez mis en pièce-jointe un peu plus tard et je reviendrais dans 1 ou 2 jours vous dire ce qu'il en résulte (actuellement je n'ai pas le temps, de-plus je suis sous Open Office Calc, je switch selon le bureau où l'on m'affecte), j'essaie d'adapté les solutions que je trouve sur internet ou que l'on me propose mais ce n'est pas évident pour moi, j'ai trop de lacunes et il y a beaucoup de manips que je n'arrive pas à effectué.

      Merci :)
      0
      1. thev Messages postés 2010 Date d'inscription   Statut Membre Dernière intervention   723 > CidjyStar Messages postés 9 Statut Membre
         
        Normalement :

        1- Vous tapez vos lettres en cellule L2, puis Entrée
        2- La combobox apparait alors et affiche la liste des noms correspondant à vos lettres
        3- Sélectionner le nom désiré
        4- Cliquer sur le nom sélectionné, la combobox disparait et le nom sélectionné apparait dans la cellule L2
        0
    2. CidjyStar Messages postés 9 Statut Membre
       
      Désolé sur Calc ça ne marche pas (la combobox semble ne pas être active, lorsque je sélectionne la cellule L2 il y a juste les petits carrés pour redimensionné la taille de la combobox), j'ai pas encore pu testé sur Excel car pour le moment je suis sur Calc, mais merci de l'aide.
      0
    3. CidjyStar Messages postés 9 Statut Membre
       
      Bonjour,

      Je mets un lien pour vous aider à visualiser, pour indication la cellule L2 qui doit contenir la liste avec autocomplétion qui se trouve sur la feuille Calcul et la feuille Liste des agents qui contient la plage de données (A2:A362).

      https://www.cjoint.com/c/HGzbRucdzox

      Si il vous faut plus de détails, dîtes le moi j'en rajouterais selon ce que vous me demanderais.

      Merci.
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous les deux

    Tu as aussi une solution sans macro
    https://www.cjoint.com/c/HGtmTviMEkB

    Cdlmnt
    0
    1. CidjyStar Messages postés 9 Statut Membre
       
      Bonjour,

      Merci de me répondre et de m'aidé.
      Je n'ai pas encore testé ta méthode car je n'ai pas trop de temps actuellement, j'ai jeté un rapide coup d’œil et j'avais déjà une liste déroulante avec la fonction DECALER, cependant je crois que ta méthode est plus complexe et complète que celle que j'ai, donc je vais testé tout cela un peu plus tard et je reviendrais dans quelques jours te dire ce qu'il en advient.

      Merci :)
      0
    2. CidjyStar Messages postés 9 Statut Membre
       
      Salut,

      Je mets un lien pour vous aider à visualiser, pour indication la cellule L2 qui doit contenir la liste avec autocomplétion qui se trouve sur la feuille Calcul et la feuille Liste des agents qui contient la plage de données (A2:A362).

      https://www.cjoint.com/c/HGzbRucdzox

      Si il vous faut plus de détails, dîtes le moi j'en rajouterais selon ce que vous me demanderais.

      Merci.
      0