Couleur sur ligne apres selection

T

tonio

Guest
Bonjour le Forum!

Je débute en VBA et j'aurais besoin d'un petit coup de main.

J'aimerais savoir s'il est possible attribuer une couleur a une ligne entière
(ou partie de la ligne) des con sélectionne une cellule de cette ligne.

D'avance Merci
 
R

Rai

Guest
Bonjour,

Oui, c'est tout à fait possible.
La solution que je te propose colorie la ligne où se trouve la sélection en rouge (colorindex=3) et mémorise la couleur de fond de la sélection pour l'attribuer à nouveau après changement de sélection.
C'est pas l'idéal, puisqu'on ne mémorise pas les fonds de chaque cellule individuellement, mais ça marche !

Le code est à placer dans l'éditeur VBE, dans la feuille concernée :

Public Lig, Coul As Integer

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row <> Lig And Target.Rows.Count = 1 Then
If Lig > 0 Then Rows(Lig).EntireRow.Interior.ColorIndex = Coul
Coul = Target.Interior.ColorIndex
Lig = Target.Row
Target.EntireRow.Interior.ColorIndex = 3
End If
End Sub

Bonne journée

Rai
 
R

Rai

Guest
Re-,

Petit complément.
Ci après une version de la procédure qui mémorise les couleurs de fond de chaque cellule de la ligne pour les restituer après.
Pour accelérer un peu l'appli, la variable MaxCol indique le nombre de colonnes impliquées.

Public Lig As Integer
Dim Coul(256) As Integer

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MaxCol! = 15
If Target.Row <> Lig And Target.Rows.Count = 1 Then
If Lig > 0 Then
For Col = 1 To MaxCol
Cells(Lig, Col).Interior.ColorIndex = Coul(Col)
Next Col
End If
Lig = Target.Row
For Col = 1 To MaxCol
Coul(Col) = Cells(Lig, Col).Interior.ColorIndex
Next Col
Range(Cells(Lig, 1), Cells(Lig, MaxCol)).Interior.ColorIndex = 3
End If
End Sub


A bientôt

Rai
 
T

tonio

Guest
Bonsoir le forum

Bonsoir Rai..

Tout dabort un grand MERCI pour ton attention et pour ta formule magic
qui fonctionne a merveille. Surtout la deuxième, c'est exactement se que je voulais.
Mais (car il y a toujours un mais) peu ton délimiter un nombre de ligne d'entête de feuille ou je n’aurais pas de couleur.
J’ai déjà essayer de modifier les n° de colonne et ligne mais sa ne marche pas.

Aurais-tu la solution.

D’avance Merci
 
R

Rai

Guest
Salut,

Oui, ça doit être possible ;o))

Voyons voir, la variable PremLig contient le N° de la 1ere ligne concernée par le changement de couleur :
(solution "de tête", donc à tester)


Public Lig As Integer
Dim Coul(256) As Integer

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
PremLig!=4
MaxCol! = 15
If Target.Row <> Lig And Target.Rows.Count = 1 and Target.Row>=PremLig Then
If Lig > 0 Then
For Col = 1 To MaxCol
Cells(Lig, Col).Interior.ColorIndex = Coul(Col)
Next Col
End If
Lig = Target.Row
For Col = 1 To MaxCol
Coul(Col) = Cells(Lig, Col).Interior.ColorIndex
Next Col
Range(Cells(Lig, 1), Cells(Lig, MaxCol)).Interior.ColorIndex = 3
End If
End Sub


En théorie ... ça devrait fonctionner


Bye

Rai
 
R

Rai

Guest
re-,

La solution précédente était OK,
j'y ai apporté une petite modif'.

Maintenant, quand on clique dans la zone d'entête, la barre de couleur dispraît.

Public Lig As Integer
Dim Coul(256) As Integer

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
PremLig! = 4
MaxCol! = 15

If Target.Row <> Lig And Target.Rows.Count = 1 Then
If Target.Row >= PremLig Then
If Lig > 0 Then
For Col = 1 To MaxCol
Cells(Lig, Col).Interior.ColorIndex = Coul(Col)
Next Col
End If
Lig = Target.Row
For Col = 1 To MaxCol
Coul(Col) = Cells(Lig, Col).Interior.ColorIndex
Next Col
Range(Cells(Lig, 1), Cells(Lig, MaxCol)).Interior.ColorIndex = 3
Else
For Col = 1 To MaxCol
Cells(Lig, Col).Interior.ColorIndex = Coul(Col)
Next Col
End If
End If
End Sub


bye

Ray
 
T

tonio

Guest
Bonsoir le forum …

Bonsoir Rai ….

Génial ça marche, te un roi …..

Tout a fait se que je voulais
Au comme ça je pourrais voir toutes les données de ma ligne d’un seul cou d’œil.

Je te remercie sincèrement pour ton aide précieuse……

A ++ Rai et bon fil a tous


Restant a l'ecoute ……………TONIO
 

Discussions similaires

Réponses
5
Affichages
363
Réponses
2
Affichages
482

Statistiques des forums

Discussions
312 714
Messages
2 091 244
Membres
104 818
dernier inscrit
DARKDEAMON