Probleme : Erreure de Compilation VBA

Résolu
Bonjour,

J'ai un petit probleme.

Il me met en surbrillance le ".List ="
et je ne sais pas pourquoi.
Le message d'erreure est : "Erreure de Compilation : Membre de méthode ou de données introuvable".
Pourtant j'ai bien une liste et j'ai généré le nom : [Designation]
Mon code :

Private Sub ComboBox2_Change()
Set Mondico = CreateObject("Scripting.Dictionary")
Me.ComboBox2.Clear
For Each d In [Designation]
    If UCase(d.Offset(o,-1)) = UCase(Me.ComboBox2) Then
         If Not Mondico.exists(UCase(c.Value)) And d <> "" Then
             Mondico.Add UCase(d.Value), UCase(d.Value)
         End If 
    End If
Next d
Me.TextBox3.List = Mondico.items

6 réponses

  1. Ah bah oui !
    Merci j'ai créé une ListBox à la place !

    Petit problème, ca ne marche toujous pas . Je dois mettre quoi à la place?
    merci
    1. Modérateur
      Bonjour,

      1-
      Me.ComboBox2.Clear

      Tu supprimes le contenu de ta combobox lorsque tu changes une de ces valeurs... Pourquoi?
      ==> Supprime cette ligne.

      2-
      If Not Mondico.exists(UCase(c.Value)) And d <> "" Then

      Erreur de copié-collé. Une fois c, une fois d. Si tu avais déclaré tes variables tu t'en serais aperçu...
      CEla nous donne donc :

      Private Sub ComboBox2_Change()
      Dim Mondico As Object, d As Variant
      Set Mondico = CreateObject("Scripting.Dictionary")
      
      For Each d In [Designation]
          If UCase(d.Offset(o, -1)) = UCase(Me.ComboBox2) Then
               If Not Mondico.exists(UCase(d.Value)) And d <> "" Then
                   Mondico.Add UCase(d.Value), UCase(d.Value)
               End If
          End If
      Next d
      Me.ListBox1.List = Mondico.items
      End Sub

      1. Merci beaucoup,

        c'est normal que quand je selectionne la valeur de la comboBox2, la listbox m'affiche pas la valeur de la colonne [designation], ca ne m'affiche rien?

        En tout cas merci beaucoup pour ton aide
        1. Modérateur
          Seul toi peut répondre à cette question. Je te rappelle que nous n'avons pas accès à tes données...
          Pour transmettre un fichier, il faut passer par un site de pièce jointe tel que cjoint.com

          Va sur ce site : https://www.cjoint.com/
          Clic sur parcourir,
          Cherche ton fichier,
          clic sur ouvrir,
          Clic sur "Créer le lien cjoint",
          Copier le lien,
          Revenir ici le coller dans une réponse...
        2. Code : Exemple et Utilisateur : exemple
        3. Modérateur
          Je n'ai pas accès au code VBA, tu as mis un mot de passe...........
        4. code : SCH désolé
      2. Modérateur
        Private Sub ComboBox2_Change()
        Dim Mondico As Object, d As Variant
        Set Mondico = CreateObject("Scripting.Dictionary")
        
        For Each d In [Designation]
            If UCase(d.Offset(0, -1)) = UCase(Me.ComboBox1) Then Mondico(d.Value) = ""
        Next d
        Me.ListBox1.List = Mondico.keys
        End Sub


        For Each d In [Designation] => boucle sur toutes les cellules du Range nommé Designation

        If UCase(d.Offset(0, -1)) = UCase(Me.ComboBox1) Then => Si les valeurs sont identiques

        Mondico(d.Value) = "" => Je l'ajoute dans mon dictionary avec impossibilité de doublon

        Me.ListBox1.List = Mondico.keys => Je remplit ma liste

        Que n'as tu pas compris exactement?

        ==> Tutoriel sur l'objet dictionnary
        1. En fait, ca m'as l'air tout bon. Merci beaucoup pour ton aide !