Erreur de compilation

Bonjour à tous,

J'ai une erreur dans mon code que je n'arrive pas à résoudre. Je fais donc appelle à votre expérience.

Une erreur "Erreur de compilation : Membre de méthode ou de données introuvable" s'affiche en surlignant .ListBox1. Pourriez vous m'aiguillez ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If ActiveCell.Column = 10 And ActiveCell.Row > 12 Then 'Si on selectionne la cellule "DS"

 site = Cells(ActiveCell.Row, 1).Value

     If site = "" Then 'si  "SITE" n'est pas rempli
         Me.ListBox1.Visible = False
         MsgBox ("Please fill out the Site")
         Exit Sub

     Else 'si la ligne est pleine avec site et material type, on affiche la ListBox

         With Me.ListBox1
             .MultiSelect = fmMultiSelectMulti
             .ListStyle = fmListStyleOption
             .Height = 350
             .Width = 300
             .Top = ActiveCell.Top
             .Left = ActiveCell.Offset(0, 1).Left
             .Visible = True

         End With

     On Error Resume Next

         i = Application.WorksheetFunction.Match(site, Worksheets("DS").Range("DS"), 0) - 1  'numéro de colonne ou se trouve la liste concernée dans "DS" - "DS" étant le nom donné à la ligne n1 de l'onglet DS
                 '-1 car dans Excel on commence à compter les colonnes à 1 mais dans VBA on commence en 0

         If Worksheets("DS").Range("A1").Offset(0, i).End(xlDown).Row = 2 Then 'car dans Excel on commence à compter les lignes à 1 mais dans VBA on commence en 0

         Me.ListBox1.List = Array(Worksheets("DS").Range(Worksheets("DS").Range("A1").Offset(1, i), Worksheets("DS").Range("A1").Offset(0, i).End(xlDown)).Value, "")

         Else

         Me.ListBox1.List = Worksheets("DS").Range(Worksheets("DS").Range("A1").Offset(1, i), Worksheets("DS").Range("A1").Offset(0, i).End(xlDown)).Value 'on attribue la bonne list à la list box

         End If

     On Error GoTo 0

     t = VBA.Split(ActiveCell, ";") 'va récupérer ce qui est déjà coché, pour que si on reclique sur la cellule, on ait déjà les objets selectionnés précochés
        If UBound(t) >= 0 Then 'valeur la plus grande
            For j = 0 To Me.ListBox1.ListCount - 1

                If Not IsError(Application.Match(Me.ListBox1.List(j), t, 0)) Then

                b = True

                Me.ListBox1.Selected(j) = True

                b = False

                End If

            Next

        End If

    End If

ElseIf ActiveCell.Column = 11 And ActiveCell.Row > 12 Then 'Si on selectionne la cellule "DP"

 site = Cells(ActiveCell.Row, 1).Value

     If site = "" Then 'si  "SITE" n'est pas rempli
         Me.ListBox2.Visible = False
         MsgBox ("Please fill out the Site ")
         Exit Sub

     Else 'si la ligne est pleine avec site et material type, on affiche la ListBox

         With Me.ListBox2
             .MultiSelect = fmMultiSelectMulti
             .ListStyle = fmListStyleOption
             .Height = 350
             .Width = 300
             .Top = ActiveCell.Top
             .Left = ActiveCell.Offset(0, 1).Left
             .Visible = True

         End With

         On Error Resume Next

         i = Application.WorksheetFunction.Match(site, Worksheets("DP").Range("DP"), 0) - 1  'numéro de colonne ou se trouve la liste concernée dans "DP" - "DP" étant le nom donné à la ligne n1 de l'onglet DP
                 '-1 car dans Excel on commence à compter les colonnes à 1 mais dans VBA on commence en 0

         If Worksheets("DP").Range("A1").Offset(0, i).End(xlDown).Row = 2 Then

         Me.ListBox2.List = Array(Worksheets("DP").Range(Worksheets("DP").Range("A1").Offset(1, i), Worksheets("DP").Range("A1").Offset(0, i).End(xlDown)).Value, "")

         Else

         Me.ListBox2.List = Worksheets("DP").Range(Worksheets("DP").Range("A1").Offset(1, i), Worksheets("DP").Range("A1").Offset(0, i).End(xlDown)).Value 'on attribue la bonne list à la list box

         End If

     On Error GoTo 0

     t = VBA.Split(ActiveCell, ";") 'va récupérer ce qui est dékà coché, pour que si on reclique sur la cellule, on ait dékà les obkets selectionnés précochés
        If UBound(t) >= 0 Then 'valeur la plus grande
            For k = 0 To Me.ListBox2.ListCount - 1

                If Not IsError(Application.Match(Me.ListBox2.List(k), t, 0)) Then

                b2 = True

                Me.ListBox2.Selected(k) = True

                b2 = False

                End If

            Next

        End If

    End If

Else
If Me.ListBox1.Visible = True Then Me.ListBox1.Visible = False
If Me.ListBox2.Visible = True Then Me.ListBox2.Visible = False

End If

End Sub

Merci d'avance pour votre aide,

Bonjour,

Fournir le fichier KIVABIEN avec.

A+

Hello,

Toutes les données sont confidentielles, je ne pourrais pas partager le fichier. Je peux juste expliquer le fonctionnement. Juste pour le contexte la macro marche sur un autre fichier. Le code est le même mais là il me met une erreur. L'objectif de la macro est de créer une liste dans laquelle le client va pouvoir tické plusieurs item de la liste. Les éléments tickés vont dans une cellule.

Rechercher des sujets similaires à "erreur compilation"