Microsoft 365 Macro pour sélectionner une plage de cellules selon une couleur de remplissage donnée

vash966

XLDnaute Nouveau
Bonjour à tous !

Je vous contacte car je suis en plein désespoir, et en quête d'aide :)

Je cherche, dans un fichier Excel, à sélectionner, pour une plage donnée, toutes les cellules de couleurs vertes (code couleur 5296274).

Pour le détail, j'ai sur ma feuille (il s'agit d'un bon de commande) dans la plage B19:O144 plusieurs lignes de données, et j'aimerais sélectionner seulement les lignes coloriées en vert (code couleur de remplissage : 5296274).

Je joins un fichier exemple en PJ.

J'y suis presque parvenu avec une macro via des solutions trouvées sur le web :

Sub SelectionCelluleParCouleur()
'Pour sélectionner uniquement les cellules de couleur verte (code couleur 5296274) dans la plage (B19:O144)

Dim couleur As Long
couleur = 5296274

Dim plage As Range
Set plage = Range("B19")

For Each c In Range("B19:O144")
If c.Interior.Color = couleur Then
Set plage = Application.Union(plage, c)
End If
Next

plage.Select

End Sub


Mais seul problème, après avoir effectuer la macro, ma cellule "B19" est toujours sélectionnée, qu'elle soit coloriée en vert ou non.

J'imagine que le problème vient de la ligne
"Set plage = Range("B19")"

Y'a-t-il une solution pour que ma plage de cellules vertes soit créée et sélectionnée, mais PAS la cellule B19 si celle-ci n'est pas verte ?

Que la macro "scanne" la plage "B19:O144" et sélectionne seulement les cellules/lignes de couleur verte ?

Je précise si besoin que le but serait au final de copier/coller ces lignes vertes dans la feuille "BL Expé 1", en commençant à la cellule B17.

En espérant que vous pourrez m'aider, n'hésitez pas s'il vous faut des infos en plus, etc, etc.

Très bonne journée à tous !
 

Pièces jointes

  • Fichier test.xlsx
    37.4 KB · Affichages: 3
Solution
Bonjour Vash,
Essayez d'utilisez les balises </> ( près de l'icone GIF ) pour le code c'est plus lisible.
Sans changer l'architecture de votre macro on peut peut être faire ceci :
Code:
Sub SelectionCelluleParCouleur()
'Pour sélectionner uniquement les cellules de couleur verte (code couleur 5296274) dans la plage (B19:O144)
    Dim couleur As Long
    couleur = 5296274
    Dim plage As Range
    N = 0
    For Each c In Range("B19:O144")
        If c.Interior.Color = couleur Then
            If N = 0 Then
                Set plage = c
                N = N + 1
            Else
                Set plage = Application.Union(plage, c)
            End If
        End If
    Next
    plage.Select
End Sub
Plage est initialisée avec la première...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Vash,
Essayez d'utilisez les balises </> ( près de l'icone GIF ) pour le code c'est plus lisible.
Sans changer l'architecture de votre macro on peut peut être faire ceci :
Code:
Sub SelectionCelluleParCouleur()
'Pour sélectionner uniquement les cellules de couleur verte (code couleur 5296274) dans la plage (B19:O144)
    Dim couleur As Long
    couleur = 5296274
    Dim plage As Range
    N = 0
    For Each c In Range("B19:O144")
        If c.Interior.Color = couleur Then
            If N = 0 Then
                Set plage = c
                N = N + 1
            Else
                Set plage = Application.Union(plage, c)
            End If
        End If
    Next
    plage.Select
End Sub
Plage est initialisée avec la première cellule verte rencontrée.
 

vash966

XLDnaute Nouveau
Bonjour sylvanu,

et bien écoutez, ça a l'air de marcher parfaitement :)

Merci beaucoup !!!

(Autant pour moi pour le code avec les balises </>, j'essaie de m'en souvenir pour la prochaine fois.)

Merci encore, et une excellente journée à vous, vous avez égayé la mienne :)
 

Discussions similaires