Vérifier que range est vide et colorée en noir

Bonjour le Forum,

J'essaye de vérifier qu'une range("B4:AF4") est vide et qu'au moins une cellule est colorée en noir (RGB(0,0,0)) afin de masquer cette ligne.

Pour déterminer que la range ("B4:AF4") soit 31 colonnes est vide, j'ai utilisé en BA4 la formule nb.vide qui donne donc 31 si toutes les cellules de la range sont vides.

J'ai essayé ceci (LR2 est la dernière ligne vide)

For r = LR2 To 4 Step -1

If Range("B" & r & ":AF" & r).Interior.Color = RGB(0, 0, 0) And Range("BA" & r).Value = 31 Then

    Rows(r).Hidden = True

End If

Next

Mais il masque la ligne si nb.vide est 31 même si aucune cellule de la range ("B4:AF4") n'est colorée en noir

N'y a-t-il pas un moyen plus simple de masquer les lignes si la plage est vide et qu'au moins une de ses cellules est colorée en noir?

D'avance merci

Bonjour,

A tester :

Option Explicit

Sub Test()

'Dim R As Integer, LR2 As Integer

    'LR2 = 10

    With ActiveSheet
         .Rows.Hidden = False
        For R = LR2 To 4 Step -1
           If TestVideEtNoire(ActiveSheet, R, "B", "AF") = True Then .Rows(R).Hidden = True
        Next R
    End With

End Sub

Function TestVideEtNoire(ByVal Sh As Worksheet, ByVal LigneEnCours As Long, ByVal Debut As String, ByVal Fin As String) As Boolean

Dim J As Integer, ColDebut As Integer, ColFin As Integer, NbVides As Integer, NbNoires As Integer

    TestVideEtNoire = False
    With Sh
         ColDebut = .Cells(1, Debut).Column
         ColFin = .Cells(1, Fin).Column
         NbVides = WorksheetFunction.CountA(.Range(.Cells(LigneEnCours, ColDebut), .Cells(LigneEnCours, ColFin)))
         For J = ColDebut To ColFin
             If .Cells(LigneEnCours, J).Interior.Color = RGB(0, 0, 0) Then NbNoires = NbNoires + 1
         Next J
        If NbVides = 0 And NbNoires > 0 Then TestVideEtNoire = True
    End With

End Function

Bonjour à tous,

une fonction sans boucle :

Function noir1(plage As Range)
    Dim c As Range
    Application.FindFormat.Clear
    Application.FindFormat.Interior.Color = 0
    With plage
        Set c = .Find(What:="", SearchFormat:=True)
        noir1 = Not c Is Nothing And Application.CountA(.Cells) = 0
    End With
    Set c = Nothing
End Function

Sub test()
    Dim lig As Long
    lig = 4
    With Range("B" & lig).Resize(, 31)
        .EntireRow.Hidden = noir1(.Cells)
    End With
End Sub

retourne True si plage vide et au moins 1 noire.
eric

Edit 9:42 : modif code

Super !

merci Eric(s)

Rechercher des sujets similaires à "verifier que range vide coloree noir"