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 SubMerci
 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		