Bonjour a tous , deja bonne année a vous .
Je me permet de vous deranger pour vous demander un peu d'aide car je suis un peu perdu .
j'ai un GROS fichier et j'ai deja une vba qui masque les ligne selon la casse cocher dans une autre feuille
et une autre vba qui filtre si une case est vide . j'aimerais fusionner les deux et les mettre en filtre si possible .
De plus j'aimerais avoir si vous auriez une idee pour faire en sorte que les calcul ne ce fasse pas sur toutes les pages a chaque changement .
ma macro avec masquage
[CODE=vb] If Not Intersect(Target, Range("I6:I65")) Is Nothing Then
If Cells(Target.Row, 9) = "X" Then
Cells(Target.Row, 9) = ""
For Each f In Sheets(Array("HJanvier", "Janvier", "BJanvier"))
If f.Range("A6") = "Jours" And f.Range("A8") = Range("X26") Then
For i = 9 To 65
If f.Range("A" & i) = Cells(Target.Row, 8).Value Then
f.Rows(i & ":" & i).EntireRow.Hidden = False
End If
Next i
End If
Next f
Else
Cells(Target.Row, 9) = "X"
For Each f In Sheets(Array("HJanvier", "Janvier", "BJanvier"))
If f.Range("A6") = "Jours" And f.Range("A8") = Range("X26") Then
For i = 9 To 65
If f.Range("A" & i) = Cells(Target.Row, 8).Value Then
f.Rows(i & ":" & i).EntireRow.Hidden = True
End If
Next i
End If
Next f
End If[/CODE]
ma macro filtre
[CODE]Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim WS As Worksheet
Dim wss As Worksheet
For Each WS In Sheets(Array("HJanvier", "HFevrier", "HMars", "HAvril", "HMai", "HJuin", _
"HJuillet", "HAout", "HSeptembre", "HOctobre", "HNovembre", "HDecembre", _
"BJanvier", "BFevrier", "BMars", "BAvril", "BMai", "BJuin", _
"BJuillet", "BAout", "BSeptembre", "BOctobre", "BNovembre", "BDecembre", _
"Bilan"))
If Not Intersect(Target, Range("H5:H69")) Is Nothing Then
WS.Unprotect "azerty"
WS.Range("$A$8:$A$67").AutoFilter Field:=1, Criteria1:="<>", Visibledropdown:=False
WS.Protect ("azerty"), DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering:=True
End If
Next WS
For Each wss In Sheets(Array("Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", _
"Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"))
If Not Intersect(Target, Range("H5:H69")) Is Nothing Then
wss.Unprotect "azerty"
wss.Range("$A$8:$A$67").AutoFilter Field:=1, Criteria1:="<>", Visibledropdown:=False
wss.Protect ("azerty"), DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering:=True
End If
Next wss
Application.ScreenUpdating = True
End Sub
[/CODE]
merci d'avance