Cellule liste semi auto

Dova Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -  
Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je cherche a mettre en place une liste déroulante semi-auto en VBA sauf qu'à chaque fois ça me dit "Erreur de compilation : Membre ou méthode ou données introuvablé" en parlant de Me.ComboBox1.List = a . Je ne comprend pas car je l'avais utilisé sur un autre doc mais là impossible de trouver pourquoi ça ne marche pas.

Es ce car il faut passer MatchEntry en None car je vois pas comment faire vue que les Combobox seulement quand on sélectionne la cellule

Merci d'avance.

Dim a(), mémo, f
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set f = Sheets("bd")
Set zSaisie = Range("A2:A16")
If Not Intersect(zSaisie, Target) Is Nothing And Target.Count = 1 Then
If mémo <> "" Then If IsError(Application.Match(Range(mémo), a, 0)) Then Range(mémo) = ""
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
mémo = Target.Address
Else
Me.ComboBox1.Visible = False
End If
End Sub

Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" And IsError(Application.Match(Me.ComboBox1, a, 0)) 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)
ComboBox1.List = Application.Transpose(f.Range("a2:a" & f.[A65000].End(xlUp).Row))
Me.ComboBox1.DropDown
End Sub

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
If IsError(Application.Match(ActiveCell, a, 0)) Then ActiveCell = ""
ActiveCell.Offset(1).Select
End If
End Sub

7 réponses

  1. Dova Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
     
    0
  2. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Il serait plus profitable de vous aider avec le fichier à disposition. Si possible le mettre sur https://www.cjoint.com/ et poster le lien reçu.
    Note: j'ai l'impression que dans votre code il est fait référence à un formulaire (UserForm) et il n'est pas visible dans votre image du poste 1----!
    0
  3. Dova Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
     
    https://www.cjoint.com/c/KGvuFiv2efd
    c le doc du gars ou j'ai trouvé le code
    sauf que quand je colle sur un nouvel onglet; pareil ça me met l'erreur
    0
    1. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      Bonjour,
      Le gars à un nom. il s'agit de Boisgontier que je salue au passage.
      Salutations.
      Le Pingou
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Dans un premier temps il manque une référence dans VBAProject, Vous devez la cocher (voir en bleu si après :


    Ensuite il n'y a pas de contrôle zone de liste déroulante [ComboBox1] dans la colonne [B] de votre feuille [21] de ce fait le code ne la trouve pas et vous avez le message d'erreur.
    Corriger ses 2 éléments et tout devrait fonctionner
    0
  6. Dova Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
     
    Je n'ai pas Microsoft Form dans la liste. Normal ?
    0
  7. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour c'est normal et plus agréable,
    Soyez sans crainte elle existe bien---!
    Vous devez parcourir la liste déroulante pour trouver la référence et ensuite la cocher.

    0