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