Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim OB As Worksheet 'déclare la variable OB (Onglet BASE ARTICLES GE)
Set OB = Worksheets("BASE ARTICLES GE") 'définit l'onglet OE
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
OB.ShowAllData 'affiche tous les éléments sans aucun filtre (génère une erreur si c'est déjà le cas)
If Err <> 0 Then Err.Clear 'si une erreur a été générée supprime l'erreur
On Error GoTo 0 'annule la gestion des erreurs
Select Case Target.Address 'agit en fonction de l'adresse de la cellule modifiée
Case "$B$1" 'cas B1
If Target.Value = "" Then 'condition : si la cellule est effacée
Exit Sub 'sort de la procédure
Else 'sinon
OB.Range("A1").CurrentRegion.AutoFilter Field:=2, Criteria1:=Target.Value 'filtre la colonne 2 avec la valeur de B1 comme critère
End If 'fin de la condition
Case "$B$3" 'cas B3
If Target.Value = "" Then 'condition 1 : si la cellule est effacée
Exit Sub 'sort de la procédure
Else 'sinon (condition 1)
If Range("B1").Value = "" Then 'condition 2 : si B1 est vide
OB.Range("A1").CurrentRegion.AutoFilter Field:=7, Criteria1:=Target.Value 'filtre la colonne 7 avec la valeur de B3 comme critère
Else 'sinon (condition 2)
OB.Range("A1").CurrentRegion.AutoFilter Field:=2, Criteria1:=Range("B1") 'filtre la colonne 2 avec la valeur de B1 comme critère
OB.Range("A1").CurrentRegion.AutoFilter Field:=7, Criteria1:=Target.Value 'filtre la colonne 7 avec la valeur de B3 comme critère
End If 'fin de la condition2
End If 'fin de la condition 1
Case "$B$5" 'cas B5
If Target.Value = "" Then Range("B7").Value = "" 'si B5 est effacée, efface la cellule B7
If Range("B7").Value = "" Then Exit Sub 'si B7 est vide, sort de la procédure
OB.Range("A1").CurrentRegion.AutoFilter Field:=5, Criteria1:=Target.Value 'filtre la colonne 5 avec la valeur de B5 comme critère
OB.Range("A1").CurrentRegion.AutoFilter Field:=6, Criteria1:=Range("B7").Value 'filtre la colonne 6 avec la valeur de B7 comme critère
Case "$B$7" 'cas B7
If Target.Value = "" Then Range("B5").Value = "" 'si B7 est effacée, efface la cellule B5
If Range("B5").Value = "" Then Exit Sub 'si B5 est vide, sort de la procédure
OB.Range("A1").CurrentRegion.AutoFilter Field:=5, Criteria1:=Range("B5").Value 'filtre la colonne 5 avec la valeur de B5 comme critère
OB.Range("A1").CurrentRegion.AutoFilter Field:=6, Criteria1:=Target.Value 'filtre la colonne 6 avec la valeur de B7 comme critère
Case Else 'tous les qutres cas
Exit Sub 'sort de la procédure
End Select 'fin de l'action en fonction de l'adresse de la cellule modifiée
End Sub