ligne active

franck.36

XLDnaute Nouveau
bonjour à tous
j'aurai souhaité savoir comment faire pour que lorsque je selectionne une cellule, les cellules a et b de la ligne active soient en couleur(jaune par exemple). Je précise que je travaille sur un tableau qui est en couleur fait à partir de la palette couleur.
tout ce que j'ai pu essayer jusqu'à maintenant, les couleurs de mon tableau se suppriment.
par avance merci
 

franck.36

XLDnaute Nouveau
Re : ligne active

j'ai réussi à faire cette macro, c'est ok pour les cellules A&B en couleur mais elle me suppriment les couleurs de mon tableau.
quelqu'un aurait-il une solution pour conserver mes couleurs?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Cells.Interior.ColorIndex = xlNone
Dim aa
aa = ActiveCell.Row
Range(Cells(aa, 1), Cells(aa, 2)).Interior.ColorIndex = 6
End Sub
 

Moa

XLDnaute Occasionnel
Re : ligne active

Salut Frank36 !

En premier, il te faut une macro évènementielle qui ne se lancera que lorsque tu cliqueras dans les cellules de ton tableau.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("E7:AI34")) Is Nothing Then


En deuxième, il te faut repèrer l'adresse de ta cellule active.

Dim Test
Test = ActiveCell.Column - 1

En dernier, il te faut colorier tes deux cellules désirées en colonne A et B tout en effaçant simultanément les cellules coloriées ultérieurement par la même macro :

'Nettoyage des cellules
Range("A7:B34").Cells.Interior.ColorIndex = xlNone

'Colorie la cellule en colonne A
ActiveCell.Offset(0, -Test).Interior.ColorIndex = 6

'Colorie la cellule en colonne B
ActiveCell.Offset(0, -Test + 1).Interior.ColorIndex = 6

Ce qui donne :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Test
Test = ActiveCell.Column - 1

If Not Application.Intersect(Target, Range("E7:AI34")) Is Nothing Then
'Nettoyage des cellules
Range("A7:B34").Cells.Interior.ColorIndex = xlNone

'Colorie la cellule en colonne A
ActiveCell.Offset(0, -Test).Interior.ColorIndex = 6

'Colorie la cellule en colonne B
ActiveCell.Offset(0, -Test + 1).Interior.ColorIndex = 6

End If
End Sub

Si tu ne veux pas voir le rafraichissement de l'écran (Petit scintillement), n'oublies pas le "Application.ScreenUpdating = False" au début de ta macro
et le rétablissement "Application.ScreenUpdating = True" en fin de macro.

Regarde ton fichier en pièce jointe et dis nous !

@ +++

ChrisOne
 

Pièces jointes

  • LigneActiveFranck.xls
    34 KB · Affichages: 113

franck.36

XLDnaute Nouveau
Re : ligne active

la macro marche bien, par contre je n'ai pas précisé que toutes mes feuilles de mon classeur sont protégées (mot de passe) par une macro.
lorsque mon classeur est déprotégé, tout marche bien au niveau des cellules actives)
par contre lorsque je protège mon classeur, dès que je clique une cellule, j'ai un message d'erreur d'éxécution"1004" : impossible de définir la propriété ColorIndex de la classe interior. "debogage"
Range("a7:b34").Cells.Interior.colorIndex = xlNone
quelqu'un aurait-il une idée ? merci
 

Pierrot93

XLDnaute Barbatruc
Re : ligne active

Bonjour Franck, Moa, Papapaul, Rico

lorsque tu protèges tes feuilles par macro, mets dans ton code l'argument "UserInterfaceOnly" à "true", comme dans l'exemple ci dessous :

Code:
Sheets(1).Protect "toto", UserInterfaceOnly:=True

Bonne journée
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 016
dernier inscrit
Mokson