Bonjour à tous !!!
Et merci d’avance pour vos lumières!
J’aimerais que les lignes d’un tableau soient masquées/affichées en fonction de la valeur prise par une cellule de la feuille, appelée “Effectif”.
Les macros précédentes masquent les lignes et colonnes qui n’ont pas de critères cochés (avec un X).
C’est surtout important pour les lignes, afin de masquer les lignes n’ayant pas au moins un critère de coché.
[ Il faut que la manip passe par une macro VBA (en effet, d’autres opérations sont declenchées par des macros, je dois ajouter celle là au fichier) ]
Si la cellule D2 prend la valeur “Quai A”, toutes les lignes de D6 à D100 ne contenant pas cette valeur sont masquées.
Même chose si la cellule prend la valeur “Point M”, je précise CONTENANT et non pas égal.
Le but est que, les lignes avec les cellules de D6 à D100 prenant pour valeur “Quai A et Point M” restent affichées quand D2 prend “Quai A” ou “Point M” pour valeur.
Vous suivez? J’imagine que cela n’est absolument pas clair, toutes mes excuses. J’ai essayé de procéder avec une macro qui se trouve dans le module1, “MaskSite” et qui est appelée dans le code de la feuille (“imprimer”).
Voici le code du module 1
Sub Worksheet_Calculate()
Dim o As Worksheet
Dim COL As Byte
Application.ScreenUpdating = False
Set o = Worksheets("Effectif")
o.Rows("1:100").Hidden = False
o.Columns("C:M").Hidden = False
For COL = 5 To 11
If o.Cells(2, COL).Value = "" Then o.Columns(COL).Hidden = True
Next COL
Application.ScreenUpdating = True
End Sub
Sub Masquer_lignes()
Dim o As Worksheet
Dim LI As Integer
Dim PL As Range
Dim CEL As Range
Set o = Worksheets("Effectif")
Application.ScreenUpdating = False
For LI = 6 To 100
Set PL = o.Range(o.Cells(LI, 5), o.Cells(LI, 11)).SpecialCells(xlCellTypeVisible)
For Each CEL In PL
If CEL.Value <> "" Then GoTo suite
Next CEL
o.Rows(LI).Hidden = True
suite:
Next LI
Application.ScreenUpdating = True
End Sub
Sub MaskSite()
Dim Site As String
Dim l As Integer
Dim o As Worksheet
Set o = Worksheets("Effectif")
Site = o.Range("D2").Value
For l = 7 To 100
o.Rows(l).EntireRow.Hidden = False
If InStr(o.Range("D" & l).Value, Site) > 0 Then
o.Rows(l).EntireRow.Hidden = False
Else: o.Rows(l).EntireRow.Hidden = True
End If
Next l
End Sub
Je joins le fichier au post.
Merci merci !!!
Emargement - 2018.xls (265 Ko)