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

5test-vba.xlsm (85.94 Ko)

Up

Rechercher des sujets similaires à "suppression ligne fonction choix"