Colorer x cellule sur x

Bonjour à tous,

est-il possible via une macro, de faire colorer des cellules en fonction de l'endroit où l'on se trouve. Je m'explique :

La personne sélectionne par exemple la cellule A5, puis démarre la macro en question. Cette macro, va ensuite mettre en couleur les cellules C5-D5-G5-H5-O5-P5-S5-T5, etc... mais cela s'arrête à Z5.

Mais si la personne sélectionne A6, cela fera la même chose mais que sur la ligne sélectionnée...

Bonjour vinzu, le forum,

Un essai....

6classeur1.xlsm (16.35 Ko)

Cordialement,

EDIT:

mettre en couleur les cellules C5-D5-G5-H5-O5-P5-S5-T5, etc... mais cela s'arrête à Z5.

2classeur2.xlsm (16.55 Ko)

Jai aussi griffonné un truc à adapter.

Plage A5:Z5 cellule coloriée aléatoirement

A6 couleur bleu

Sub Coloriage()
'A adapter
Dim Cellule As Range, Plage As Range

With ActiveCell
If .Address = "$A$5" Then
'on affecte une couleur aléatoire, tu peux aussi mettre une couleur 'Index = 5'
 Set Plage = ActiveSheet.Range(.Address & ":$Z$5")
    For Each Cellule In Plage.Cells
  Randomize
       Cellule.Interior.Color = RGB(Int(256 * Rnd), Int(256 * Rnd), Int(256 * Rnd))
    Next Cellule
Else
    .EntireRow.Cells.Interior.Color = vbBlue
End If
End With
Set Plage = Nothing
End Sub

Bonjour tout le monde,

une autre idée

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Cancel = True
 If Target.Column = 1 Then
    Range(Cells(Target.Row, 3), Cells(Target.Row, 4)).Interior.Color = vbRed ' C5-D5
    Range(Cells(Target.Row, 7), Cells(Target.Row, 8)).Interior.Color = vbYellow '-G5-H5
    Range(Cells(Target.Row, 15), Cells(Target.Row, 16)).Interior.Color = vbBlue '-O5-P5
    'et ainsi de suite
 End If
End Sub

Merci beaucoup, mais avec vos codes, cela colore toute la ligne. L'idée est de colorier des plages de cellules précises, par exemple : C5-D5-G5-H5-O5-P5-S5-T5

Merci beaucoup, mais avec vos codes, cela colore toute la ligne. L'idée est de colorier des plages de cellules précises, par exemple : C5-D5-G5-H5-O5-P5-S5-T5

bon encore une fois:

pour mettre pour chaque plage une couleur différente utilise ce code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Cancel = True
 If Target.Column = 1 Then
    Range(Cells(Target.Row, 3), Cells(Target.Row, 4)).Interior.Color = vbRed ' C5-D5
    Range(Cells(Target.Row, 7), Cells(Target.Row, 8)).Interior.Color = vbYellow '-G5-H5
    Range(Cells(Target.Row, 15), Cells(Target.Row, 16)).Interior.Color = vbBlue '-O5-P5
    'et ainsi de suite
 End If
End Sub

Pour avoir la même couleur pour toutes les plages utilise ce code

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myArray
myArray = Array(3, 7, 15) ' ici il faut indiquer les numéros des colonnes souhaité (3 c'est la colonne C)
Cancel = True
 If Target.Column = 1 Then
    For i = LBound(myArray) To UBound(myArray)
    Range(Cells(Target.Row, myArray(i)), Cells(Target.Row, myArray(i) + 1)).Interior.Color = vbRed ' C5-D5
    Next i
 End If
End Sub

P.S. il faut bien sûr adapter les plages!

Ce code là est top :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myArray
myArray = Array(3, 7, 15) ' ici il faut indiquer les numéros des colonnes souhaité (3 c'est la colonne C)
Cancel = True
 If Target.Column = 1 Then
    For i = LBound(myArray) To UBound(myArray)
    Range(Cells(Target.Row, myArray(i)), Cells(Target.Row, myArray(i) + 1)).Interior.Color = vbRed ' C5-D5
    Next i
 End If
End Sub

Maintenant dernier point, au lieu qu'il démarre directement lorsque l'on clique sur la case en question, est-il possible de le démarrer manuellement. Dans le sens, la personne se mets dans la cellule A5 par exemple et depuis là, elle démarre la macro ?

Enfin pour terminer, je peux aussi colorer ensuite des cellules d'une ligne suivante, par exemple la cellule F6 et F7 ?

Re,

A tester....à partir du code de M3ellem1....

  • double-clic dans une cellule de la colonne A
6doubleclic.xlsm (13.26 Ko)
  • Sinon sélection d'une cellule en colonne A et CTRL + e pour lancer la macro.
6macro.xlsm (13.54 Ko)

Cordialement,

C'est parfait, merci beaucoup !!!

Dernier détail cosmétique, je souhaite utiliser un gris clair. J'ai mis cela mais ça bug :

Sub test()

Dim myArray
    myArray = Array(3, 7, 15) ' ici il faut indiquer les numéros des colonnes souhaité (3 c'est la colonne C)
Cancel = True
 If ActiveCell.Column = 1 Then
    For i = LBound(myArray) To UBound(myArray)
    Range(Cells(ActiveCell.Row, myArray(i)), Cells(ActiveCell.Row, myArray(i) + 1)).Interior.Color = xlThemeColorDark1.TintAndShade = -0.249977111117893 ' C5-D5
    Range(Cells(ActiveCell.Row + 1, 6), Cells(ActiveCell.Row + 2, 6)).Interior.Color = vbRed ' F5-F6
    Next i
 End If

End Sub

Re,

je souhaite utiliser un gris clair

Peut-être ainsi alors....

Range(Cells(ActiveCell.Row, myArray(i)), Cells(ActiveCell.Row, myArray(i) + 1)).Interior.ColorIndex = 24

https://www.excel-pratique.com/fr/vba/couleurs.php

Range(Cells(ActiveCell.Row, myArray(i)), Cells(ActiveCell.Row, myArray(i) + 1)).Interior.Color = RGB(224, 224, 224)

https://www.excel-pratique.com/fr/vba/liste-couleurs-rgb.php

Cordialement,

Celui-ci est parfait, merci beaucoup !

Range(Cells(ActiveCell.Row, myArray(i)), Cells(ActiveCell.Row, myArray(i) + 1)).Interior.Color = RGB(224, 224, 224)
Rechercher des sujets similaires à "colorer"