Regarde, quand je change la valeur de la cellule D1 - qui déclenche une macro de filtre - de la feuille “Imprimer” (afin de filtrer la feuille Effectif selon les valeurs prises dans la feuille Données) j’ai ce message d’erreur :
En regardant bien tu as un filtre qui masque les lignes 7 à 13 sur la feuille “Effectif” —> “Encadrant”
et comme la boucle part de la fin jusqu’à la ligne 7, il ne trouve pas et c’est le bug
J’ai modifié le code pour que la boucle s’arrête en ligne 14 cependant j’ai toujours le message d’erreur :
Sub Worksheet_Calculate()
Dim o As Worksheet
Dim COL%, LI%, l%, Dl%
Dim PL As Range, CEL As Range
Dim Site$
Application.ScreenUpdating = False
Sheets(“Effectif”).Activate
Set o = Worksheets(“Effectif”)
o.Rows(“1:100”).Hidden = False
o.Columns(“C:M”).Hidden = False
Dl = Range(“B” & Rows.Count).End(xlUp).Row
For COL = 5 To 11
If o.Cells(2, COL).Value = “” Then o.Columns(COL).Hidden = True
Next COL
For LI = Dl To 14 Step -1
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
Site = VBA.LCase(o.Range(“D2”).Value)
If Site = “quai a et point m” Then
For l = Dl To 14 Step -1
If Rows(l).Hidden = False Then
If VBA.LCase(o.Range(“D” & l).Value) Like “" Then
o.Rows(l).EntireRow.Hidden = False
Else
o.Rows(l).EntireRow.Hidden = True
End If
End If
Next l
Else
For l = Dl To 14 Step -1
If Rows(l).Hidden = False Then
If VBA.LCase(o.Range(“D” & l).Value) Like "” & Site & “*” Then
o.Rows(l).EntireRow.Hidden = False
Else
o.Rows(l).EntireRow.Hidden = True
End If
End If
Next l
End If
If Site = “quai a et point m” Then
o.Rows(Dl - 1).EntireRow.Hidden = False
o.Rows(Dl).EntireRow.Hidden = False
End If
Sheets(“imprimer”).Activate
Application.ScreenUpdating = True
End Sub