Probleme avec ActiveCell

Bonjour,

Je suis novice, donc souvent pour mes besoins je récupère du code approchant en ligne, mais pour le mettre à niveau, cela devient compliqué pour l'adapter à mon contenu.

Le soucis est ci-dessous avec la commande ActiveCell.column = 41 qui signifie (de ce que j'en comprends) l'endroit (cellule) ou s'applique ce code, et donc l'apparition de la listbox a choix multiples.

En fait avec cette commande dans mon tableau cela prend toute la colonne 41 y compris le Titre et une autre au dessus (deux premières lignes), ou je ne veux pas que ça s'applique.

Car par exemple je ne peux plus appliquer de filtres après dans la colonne en question....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If ActiveCell.Column = 41 Then
    With Me.ListBox1
      .MultiSelect = fmMultiSelectMulti
      .ListStyle = fmListStyleOption
      .Height = 150
      .Width = 100
      .Top = ActiveCell.Top
      .Left = ActiveCell.Offset(0, 1).Left
      .Visible = True
    End With
    On Error Resume Next
    'i = Application.WorksheetFunction.Match(Cells(ActiveCell.Row, 2), Worksheets("Donnée").Range("Familles"), 0) - 1
    i = 0
    If Worksheets("Feuil3").Range("O1").Offset(0, i).End(xlDown).Row = 2 Then
      Me.ListBox1.List = Array(Worksheets("Feuil3").Range(Worksheets("Feuil3").Range("O1").Offset(1, i), _
        Worksheets("Feuil3").Range("O1").Offset(0, i).End(xlDown)).Value, "")
    Else
      Me.ListBox1.List = Worksheets("Feuil3").Range(Worksheets("Feuil3").Range("O1").Offset(1, i), _
        Worksheets("Feuil3").Range("O1").Offset(0, i).End(xlDown)).Value
    End If
    On Error GoTo 0
    a = VBA.Split(ActiveCell, "-")
    If UBound(a) >= 0 Then
      For i = 0 To Me.ListBox1.ListCount - 1
        If Not IsError(Application.Match(Me.ListBox1.List(i), a, 0)) Then
          bTest = True
          Me.ListBox1.Selected(i) = True
          bTest = False
        End If
      Next
    End If
  Else
    Me.ListBox1.Visible = False
  End If

Je ne sais pas si je me fais bien comprendre, j'espère !!

Bonjour,

Dommage d'utiliser ActiveCell alors que l'on en dispose sous la variable Target.

Remplacez la ligne :

If ActiveCell.Column = 41 Then

par :

If Target.Column = 41 And Target.Row > 2 Then '2 pour 2ème ligne

Merci beaucoup pour la réponse qui était en effet si simple....

J'ai une autre question liée a ce code, je ne comprends pas pourquoi quand je sélectionne une des cellules dans la colonne considérée, la ListBox s'affiche mais décalée en bas a droite, alors que je ne vois pas de commande qui demande cela .......

Pour ton autre question, le positionnement de la ListBox se fait ici :

      .Top = ActiveCell.Top
      .Left = ActiveCell.Offset(0, 1).Left

Merci !!

Rechercher des sujets similaires à "probleme activecell"