Private Sub Worksheet_Change(ByVal Target As Range)
Dim Adr As String
Dim KeyCells As Range
'si A2
If Target.Address(0, 0) = "A2" Then
With Worksheets("Données")
'vide la colonne C
.Range("C:C").Clear
'filtrage de la plage (qui peut être rallongée)
.Range("B1:B" & .Cells(.Rows.Count, 2).End(xlUp).Row).AutoFilter 1, Range("A2") & "*"
'copie du résultat en colonne C
.AutoFilter.Range.Copy .Range("C1")
'suppression du filtre
.Range("B1:B" & .Cells(.Rows.Count, 2).End(xlUp).Row).AutoFilter
'défini la plage
Adr = "=Données!C2:C" & .Cells(.Rows.Count, 3).End(xlUp).Row
End With
'recrée la liste de validation avec les valeurs de la colonne C
With Range("B2").Validation
.Delete
.Add xlValidateList, , , Adr
End With
End If
' La variable KeyCells contient les cellules qui déclencheront une alerte si elles sont modifiées.
Set KeyCells = Range("a2:b3")
If Not Intersect(KeyCells, Target) Is Nothing Then
' Affichage d'un message lorsque l'une des cellules désignées a été modifiée.
'MsgBox "La cellule " & Target.Address & " a été modifiée."
If Range("A2") <> 0 Then
A2
End If
If Range("A2") <> 0 And Range("b2") <> 0 Then
A2B2
End If
End If
End Sub