Suppression de ligne en fonction de plusieurs choix
Bonjour à tous,
Je suis novice en VBA et j'ai besoin de votre aide pour un projet au travail.
Dans le document joint en objet, il y a 3 feuilles :
- "Questionnaire" doit permettre à l'utilisateur de choisir différentes caractéristiques propres à son projet.
- "Liste" me permet de lister les choix dans mon questionnaire.
- "Listing_projet" ou se situe les données que l'utilisateur doit voir après avoir rempli le questionnaire (les colonnes de J à Y contiennent les "critères" des listes et les cases contenant des croix permettent de montrer quand la ligne n'est pas concerné par le critère).
J'ai actuellement la macro suivante :
"
Option Explicit
Dim ws As Worksheet
Dim Table As ListObject
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lCol As Double, i As Long
If Not Intersect(Target, [D3,F3,H3,J3,L3,D6]) Is Nothing Then
Set ws = Worksheets("Listing_Projet")
Select Case Target
Case [D3]
Set Table = ws.ListObjects("TBL_Domaines")
Case [F3]
Set Table = ws.ListObjects("TBL_Décrets")
Case [H3]
Set Table = ws.ListObjects("TBL_Modifs_Elec")
Case [J3]
Set Table = ws.ListObjects("TBL_PTFs")
Case [L3]
Set Table = ws.ListObjects("TBL_MC4_MC6")
Case [D6]
Set Table = ws.ListObjects("TBL_MCFS_Oui")
End Select
With Table
On Error GoTo err_Handler
lCol = Application.Match(CStr(Target.Value), .HeaderRowRange, 0)
.Range.AutoFilter Field:=lCol, Criteria1:="="
For i = 1 To .ListColumns.Count
If .ListColumns(i) <> .HeaderRowRange(lCol) Then
.HeaderRowRange(i).EntireColumn.Hidden = True
Else
.HeaderRowRange(i).EntireColumn.Hidden = False
End If
Next i
End With
End If
exit_Handler:
Set Table = Nothing
Set ws = Nothing
Exit Sub
err_Handler:
With Table
If .AutoFilter.FilterMode Then .AutoFilter.ShowAllData
.HeaderRowRange.EntireColumn.Hidden = False
End With
End Sub
"
Mais malheureusement, seul le dernier choix dans la liste déroulante est pris en compte.
Auriez vus une solution pour que tous les choix sélectionnés dans la feuille "Questionnaire" permettent de faire les choix correspondant ?
Par exemple :
En sélectionnant : "Ligne Aérienne";"92";"Oui";"Non";"Oui" pour les choix de niveau 1, je souhaite que toutes les lignes correspondant à ces choix soient masquées dans l'onglet "Listing_Projet".
J'espère avoir été plutôt clair et reste à votre disposition pour tout ajout complémentaire.
Merci d'avance.
Xavier