Macro Afficher/Masquer des colonnes suivant pls critères
Bonjour,
Je souhaite afficher mes colonnes entières si elles répondent:
au CRITERE 1: (tout seul)
avec bouton d'action dédié
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).
au CRITERE2: (tout seul)
avec bouton d'action dédié
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).
au CRITERE1 ET 2: (simultanément)
en cliquant sur le bouton 1 PUIS sur le bouton 2
Exemple:
________C1_____C2______C3______C4_____C5_____C6
L1_____HIGH____LOW___AVERAGE__LOW__HIGH___AVERAGE
Lxx_____xx______xx______xx_______xx_____xx______xx
L10____191_____220_____195_____198____210_____185
Lyy____yy______yy______yy_______yy_____yy_____yy
si je clique sur le bouton 1 (CRITERE 1: 190-200), je veux afficher/masquer les colonnes entières de cette façon :
________C1_____C2______C3______C4_____C5_____C6
L1_____HIGH____/____AVERAGE___LOW___/_______/
Lxx_____xx______/_______xx_______xx________/_______/
L10____191____/_______195______198______/_______/
Lyy____yy______/_______yy_______yy________/_______/
si je ré-initialise (bouton dédié) et je clique sur le bouton 2 (CRITERE 2: sur le texte "LOW"), je veux afficher/masquer les colonnes entières de cette façon :
________C1_____C2______C3______C4_____C5_____C6
L1______/______LOW_____/______LOW_____/_______/
Lxx_____/_______xx______/_______xx_______/_______/
L10_____/______220_____/_______198_____/_______/
Lyy_____/______yy______/_______yy_______/________/
Enfin, si je ré-initialise (bouton dédié) et je clique sur le bouton 1 PUIS sur le bouton 2 (CRITERE 1 ET 2), je ne veux garder que les colonnes entières de cette façon:
________C1_____C2______C3______C4_____C5_____C6
L1______/_______/________/______LOW____/_______/
Lxx_____/_______/________/_______xx_____/________/
L10_____/_______/_______/_______198____/_______/
Lyy_____/______/________/_______yy_____/________/
où / = colonne masquée
Cela me permettrait d'affiner ma recherche en sévérisant mes critères. C'est finalement exactement ce que fait la fonction filtre d'excel: mais sur les lignes ... (merci de ne pas me proposer de transposer mes données colonnes --> lignes sur ce tableau qui est conçu "en colonne") ...
Toute aide me sera benefique => Merci par avance.
J'ai commencé ce bout de code :
mais il ne marche pas lorsque je cumule mes critères (il sort de la boucle je ne sais pas pourquoi ...)
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 Bonjour
Point 6 de la charte du Forum
Pensez à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de vous faire aider (taille limite : 300ko, n'hésitez pas à compresser vos fichiers).
Cordialement