Mauvaise propriété

Bonjour je n'ai pas exactement la bonne syntaxe. J'ai l'erreur impossible de définir la propriété ColorIndex de la classe Interior .

Dans le code, couleur prend une valeur RGB comme par exemple: 16711680

Private Sub Worksheet_SelectionChange(ByVal target As Range) 'lorsqu'on sélectionne une cellule

If Not Application.Intersect(target, Range("B3:E600")) Is Nothing Then    'clic dans une cellule de colonne B,C,D,E
       Selection.Interior.ColorIndex = couleur

End If
End Sub

Bonjour,

Tu te trompes en effet de propriété !

Target.Interior.Color = couleur

et Target c'est tout de même mieux que cet impersonnel Selection !


Mais à mon avis le bon code devrait plutôt être :

Private Sub Worksheet_SelectionChange(ByVal target As Range) 
    Intersect(Target, Me.Range("B3:E600")).Interior.Color = couleur
End Sub

à condition bien sûr que couleur soit une variable publique déjà initialisée...

Cordialement.

Ca fonctionne tres bien.

Par contre je ne comprend pas ce que tu veux dire par impersonnel Sélection. j'ai toujours utiliser Sélection partout.

Selection est un élément très volatil, instantané, on peut s'en servir pour capter la sélection à l'instant t... autant que possible en l'affectant à une variable de façon que cela reste la sélection à l'instant t !!!

C'est ce que fait VBA en te renvoyant la sélection qui l'a déclenchée par Target ! Il serait absurde de ne pas utiliser Target qui t'est transmis pour revenir à une sélection à rechercher de nouveau dans la feuille.

Par ailleurs les autres utilisations de Selection dans le code ont pour effet de maintenir un taux d'interactions avec Excel supérieur à ce qui est nécessaire au traitement, donc nuit à l'efficacité...

Et je ne parle même pas des enchaînements de commande de type enregistreur telles que :

Plage.Select

Selection.Etc...

à éliminer d'emblée dès qu'on en voit, un véritable handicap !

Cordialement.

Merci MFerrand, je prend note de tout ca!

Bonne continuation.

Rechercher des sujets similaires à "mauvaise propriete"