halecs93
XLDnaute Impliqué
Bonjour,
J'ai tenté une macro qui me permet de masquer des lignes où n'apparaissent pas de cellules colorées de ma feuille.
Elle fonctionne mais elle est très longue dans son déroulement.
Une autre approche permettrait de l'accélérer ?
Merci
J'ai tenté une macro qui me permet de masquer des lignes où n'apparaissent pas de cellules colorées de ma feuille.
Elle fonctionne mais elle est très longue dans son déroulement.
Une autre approche permettrait de l'accélérer ?
VB:
Sub MasquerLignesSansCouleur()
Dim ws As Worksheet
Dim cell As Range
Dim row As Long
Dim firstRowWithColor As Long
Dim lastRowWithColor As Long
' Utiliser la feuille active
Set ws = ActiveSheet
' Initialiser la première et la dernière ligne contenant une cellule colorée à 0
firstRowWithColor = 0
lastRowWithColor = 0
' Parcourir les lignes de 5 à 61
For row = 5 To 61
' Parcourir les cellules de la plage B:P de la ligne actuelle
For Each cell In ws.Range("B" & row & ":P" & row)
' Vérifier si la cellule est colorée
If cell.Interior.ColorIndex <> xlNone Then
' Mettre à jour la première ligne contenant une cellule colorée
If firstRowWithColor = 0 Then
firstRowWithColor = row
End If
' Mettre à jour la dernière ligne contenant une cellule colorée
lastRowWithColor = row
Exit For ' Sortir de la boucle si une cellule colorée est trouvée
End If
Next cell
Next row
' Si une cellule colorée a été trouvée
If lastRowWithColor > 0 Then
' Masquer les lignes situées en dessous de la dernière ligne colorée jusqu'à la ligne 61
For row = lastRowWithColor + 1 To 61
ws.Rows(row).EntireRow.Hidden = True
Next row
End If
' Si une cellule colorée a été trouvée
If firstRowWithColor > 0 Then
' Masquer les lignes situées au-dessus de la première ligne colorée jusqu'à la ligne 5
For row = 5 To firstRowWithColor - 1
ws.Rows(row).EntireRow.Hidden = True
Next row
End If
End Sub
Merci