XL 2021 Sélectionner une ligne contenant cellule en couleur

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Romain31

XLDnaute Occasionnel
Bonjour à tous,

Je cherche à sélectionner les lignes dont les cellules sont colorées en bleu dans la colonne P.

Elles sont colorées à l’aide de la palette et non par MFC.

J’arrive cependant à un résultat avec un filtre par couleur mais je souhaiterai une procédure en VBA.

Fichier joint en PJ avec un essai.

Merci pour votre aide.
 

Pièces jointes

Hello,

VB:
derniereLigne = Cells(Rows.Count, "L").End(xlUp).Row
permet de connaitre le numéro de ligne CONTENANT une donnée, une couleur n'est pas une donnée !

Question, plus concrètement, vous voulez faire quoi ? Parce que Rows(i).Select dans une boucle ne va sélectionner qu'une seule ligne
 
Bonjour,
Ce code n'est qu'un de mes nombreux essais.
Je cherche juste à sélectionner les lignes qui contiennent cette cellules à fond bleu.
J'ai cherché en vain sans rien trouvé.
Bonjour à tous et bonne année
Ceci copie en feuil2 toutes les lignes qui sont coloriées en colonne L sur la feuil1
VB:
Sub test()
    Dim Plage
    Sheets("Feuil2").Cells.Clear
    Sheets("Feuil1").[A1:a2].Copy Sheets("Feuil2").[A1]
    Set Plage = Feuil1.UsedRange
    Plage.AutoFilter Field:=12, Criteria1:=RGB(22, 54, 92), Operator:=xlFilterCellColor
    Plage.Offset(1).SpecialCells(xlCellTypeVisible).Copy Sheets("Feuil2").[a3]
    Plage.AutoFilter
End Sub
 

Pièces jointes

Bonjour Jacky,
Je te remercie pour ta réponse qui apporte un plus à mon filtre avec la copie sur la feuille2.
Ma question porte surtout sur la manipulation de cellules colorées (format) par rapport à du contenu texte.
Pour une MFC, j'ai vu que l'on pouvait interroger la condition. Dans le cas de cellules mises en couleurs par la palette, cela ne semble pas évident.
Pour procéder par étape, un code VBA pour sélectionner déjà la première cellule contenant cette couleur serait bien.
Merci pour vos contributions et belle année à tous
 
Bonjour Jacky,
Je te remercie pour ta réponse qui apporte un plus à mon filtre avec la copie sur la feuille2.
Ma question porte surtout sur la manipulation de cellules colorées (format) par rapport à du contenu texte.
Pour une MFC, j'ai vu que l'on pouvait interroger la condition. Dans le cas de cellules mises en couleurs par la palette, cela ne semble pas évident.
Pour procéder par étape, un code VBA pour sélectionner déjà la première cellule contenant cette couleur serait bien.
Merci pour vos contributions et belle année à tous
Ok!
Bien que je ne saisisse pas le but de cette opération, ce code passe en revue toutes les cellules coloriées et peut s'arrêter à la première.
VB:
Sub test2()
    For Each c In Feuil1.UsedRange.Columns(12).Rows
        If c.Interior.Color = RGB(22, 54, 92) Then
            MsgBox "La cellule: " & c.Address & " est colorée"
            'Exit For    's'il faut s'arreter à la première
        End If
    Next
End Sub
 

Pièces jointes

Bonjour le fil,
Une autre approche en VBA avec :
VB:
Sub Selectionlignesbleu()
    Dim Cell As Range, Couleur
    For Each Cell In [L1:L1000]
        If Cell.Interior.Color <> vbWhite And Cell.Interior.Color <> xlNone Then
            Couleur = RGB(180, 255, 255)
        Else
            Couleur = xlNone
        End If
        Range("A" & Cell.Row & ":K" & Cell.Row).Interior.Color = Couleur
    Next Cell
End Sub
 

Pièces jointes

Re,
"Just for the fun", en automatique.
Un appui sur une cellule colonne L colore la ligne. Un second appui sur la même cellule efface la couleur. Avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [L:L]) Is Nothing Then
        If Target.Interior.Color <> RGB(23, 56, 93) Then
            Range("L" & Target.Row).Interior.Color = RGB(23, 56, 93)
            Range("A" & Target.Row & ":K" & Target.Row).Interior.Color = RGB(180, 255, 255)
        Else
            Range("A" & Target.Row & ":L" & Target.Row).Interior.Color = xlNone
        End If
            Range("M" & Target.Row).Select
    End If
Fin:
End Sub
Test5.gif
 

Pièces jointes

Bonjour Sylvanu,
Merci pour ta réponse qui est très intéressante et permet d'avancer.
Dans ta proposition, la portion de ligne (et non la ligne entière) se trouve bien identifiée.
Et cette plage est donc mise en couleur.
Partant de là, il doit être possible de procéder à une sélection (de la ligne entière ou non).

J'essaye de mon côté à partir d'exemples proches dont je joint le fichier
 

Pièces jointes

Ok!
Bien que je ne saisisse pas le but de cette opération, ce code passe en revue toutes les cellules coloriées et peut s'arrêter à la première.
VB:
Sub test2()
    For Each c In Feuil1.UsedRange.Columns(12).Rows
        If c.Interior.Color = RGB(22, 54, 92) Then
            MsgBox "La cellule: " & c.Address & " est colorée"
            'Exit For    's'il faut s'arreter à la première
        End If
    Next
End Sub
Re..
Remplace " MsgBox "La cellule: " & c.Address & " est colorée"
Par ==> c.select
 
bonjour
VB:
Sub TrouverCellulesBleues_ColonneL_DisplayFormat()
    Dim c As Range, u As Range, CouleurBleue As Long, plage As Range, nbrows&
    CouleurBleue = 6043158 'couleur recherchée dans la colonne L
    'on determine la plage maximale pour la recherche
    Set plage = Range(ActiveSheet.[a1], ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Cells.Count))
    For Each c In plage.Columns(12).Cells
        ' DisplayFormat prend en compte ThemeColor et TintShadecomme ca on est sur pour le interior.color et mfc
        If c.DisplayFormat.Interior.Color = CouleurBleue Then
            If u Is Nothing Then Set u = Range("a" & c.Row & ":" & "l" & c.Row) Else Set u = Union(u, Range("a" & c.Row & ":" & "l" & c.Row))
        nbrows = nbrows + 1
        End If
    Next c
        'selection des lignes si trouvées
    If Not u Is Nothing Then
        u.Select
        MsgBox nbrows & " lignes avec la cellule  bleue trouvée en colonne L"
    Else
        MsgBox "Aucune cellule bleue trouvée"
    End If
    
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
203
Réponses
4
Affichages
239
Retour