Bonjour,

Je dispose d'un tableau L(300)xC(100) dont mes données d'entrées sont mes colonnes et mes critères sont en ligne : d'après ce que j'ai lu sur internet, pour ce genre de configuration, la fonction "filtrer par ..." n'est plus adaptée car elle permet uniquement de filtrer par ligne (? corriger si nécessaire).

Je me lance donc donc des subroutines dans lesquelles je souhaite afficher ou ne pas afficher mes colonnes suivants mes critères de recherches:

1. CRITERE 1: Valeurs de la ligne 10 = entre 190 et 200 (exemple: si L10xC12 = 198, j'affiche la colonne C12 en entier, sinon je masque les autres colonnes ne répondant pas au critère1).
2. CRITERE 2: Texte de la ligne 1 = "High" / "Low" / ou "Average" (exemple: si L1xC5 = "Low", j'affiche la colonne C5 en entier, sinon je masque les autres colonnes ne répondant pas au critère2).

Ces routines doivent être indépendantes : je veux pouvoir chercher avec le critère 1 ou le critère 2 (séparément).
Mais également avec les critère 1 ET 2 simultanément!! (autrement dit si une colonne est déjà masquée par mon premier critère, elle devra le rester en appliquant mon second critère: ce qui me permettra d'affiner ma recherche ...)

J'ai donc commencé ceci (appelé dans un UserForm):

Sub Lancement1()
Dim FBP1 As Single
Dim FBP2 As Single
Dim i As Integer
Application.ScreenUpdating = False
On Error GoTo fin

FBP1 = InputBox("Trier les data entre FBP1 et FBP2", "valeur FBP1")
FBP2 = InputBox("Trier les data entre FBP1 et FBP2" ", "valeur FBP2")

For i = 2 To 1000
If Columns(i).EntireColumn.Hidden = True Then
GoTo suivant
End If
' Je souhaite ici prendre en compte la possibilité qu'une colonne soit déjà masquée par un autre critère et la garder masquée
' ici cela ne semble pas marcher lorsque je cumule mes critères ...
If Cells(10, i).Value < FBP1 Or Cells(10, i).Value > FBP2 Then
Columns(i).EntireColumn.Hidden = True
Else
Columns(i).EntireColumn.Hidden = False
End If

suivant:
Next

Application.ScreenUpdating = True
Exit Sub
fin:
MsgBox "Vous devez saisir une donnée valide"
End Sub

--------------------------------------------------------------------
Sub Lancement2()
Dim CASE As String
Dim z As String
Dim i As Integer
Application.ScreenUpdating = False
On Error GoTo fin

CASE = InputBox("CASE=?")
For i = 2 To 1000
z = Cells(1, i).Value

If Columns(i).EntireColumn.Hidden = True Then
GoTo suivant
End If
' Je souhaite ici prendre en compte la possibilité qu'une colonne soit déjà masquée par un autre critère et la garder masquée
' ici cela ne semble pas marcher lorsque je cumule mes critères ...

If CASE Like z Then
Columns(i).EntireColumn.Hidden = False
Else
Columns(i).EntireColumn.Hidden = True
End If

suivant:
Next
Application.ScreenUpdating = True

Exit Sub
fin:
MsgBox "Vous devez saisir une donnée valide"
End Sub

PROBLEME:
Je ne parviens pas à sévériser mes recherches lorsque j'applique la subroutine1 PUIS la subroutine2: la macro compile mais n'applique pas ce que je souhaite ? Je ne parvient donc pas à garder uniquement les colonnes avec LOW en ligne L1 ET 190-200 en ligne L10

Qqun pourrait-il me déboguer SVP ? Merci par avance.