[VBA] changement couleur cellule
Résolu
Anuca
Messages postés
10
Statut
Membre
-
pompom09 Messages postés 57 Statut Membre -
pompom09 Messages postés 57 Statut Membre -
Bonjour,
Je souhaiterais changer la couleur d'une cellule lorsqu'on clique sur cette cellule.Par exemple, je clique sur ma cellule une première fois elle devient verte, et si je clique à nouveau dessus elle redevient blanche Est-ce que quelqu'un pourrait m'aider s'il-vous-plaît? (Je commence à peine à utiliser vba, donc je ne connais pas trop ce langage)
Je travaille sur Excel 2010.
Merci d'avance.
Anuca.
Je souhaiterais changer la couleur d'une cellule lorsqu'on clique sur cette cellule.Par exemple, je clique sur ma cellule une première fois elle devient verte, et si je clique à nouveau dessus elle redevient blanche Est-ce que quelqu'un pourrait m'aider s'il-vous-plaît? (Je commence à peine à utiliser vba, donc je ne connais pas trop ce langage)
Je travaille sur Excel 2010.
Merci d'avance.
Anuca.
9 réponses
-
Salut,
essaye comme cela
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Not Intersect(Selection, Range("B3:B30")) Is Nothing Then
With Target
If Selection.Interior.ColorIndex = xlNone Then
Selection.Interior.ColorIndex = 4
Else
Selection.Interior.ColorIndex = xlNone
End If
End With
End If
End Sub
-
Bonsoir Mike-31 et ccm81,
d'abord merci pour votre réponse et j'ai une deuxième question un peu bête pour quelqu'un qui connaît: quand j'exécute le code j'ai cette erreur qui s'affiche: erreur d'exécution 91: variable d'objet ou variable de bloc With non définie et .Interior.ColorIndex = 4 + xlNone - .Interior.ColorIndex est en jaune. Pourtant je pensais avoir défini Target mais sans doute mal: Dim Target As Range. Comment dois-je la déclarer svp? -
Re,
tu as cette possibilité en définissant la plage à surveiller ou inversement
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Selection, Range("B2:Z200")) Is Nothing Then
With Target
.Interior.ColorIndex = 4 + xlNone - .Interior.ColorIndex
End With
End If
End Sub -
1. tu n'as pas à redéfinir Target (cette variable est définie dans l'en tête de la procedure)
2. remplacer B2:B30 par la plage qui t'intéresse -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
D'accord, à présent j'ai compris pour la plage, en revanche (excusez moi d'être si cruche..). J'essaie dans un programme annexe à celui que je dois créer votre code, et donc dans mon module je mets votre code, ensuite j'appelle dans le même module Call Worksheet_SelectionChange(ByVal Target) et l'erreur 421 s'affiche: objet requis. Je suis donc aller voir dans outils références et je ne sais pas ce qu'il faut que je coche ou décoche?! je suis totalement perdue :(
-
je ne comprends pas bien ce que tu veux faire
vérifies tout de même que ta procédure est bien écrite au bon endroit
https://www.cjoint.com/?0GDwPJXHW3x -
ok, je ne savais pas qu'il fallait la mettre dans un autre endroit que général. donc maintenant ça marche :) mille merci. c'était l'erreur!
-
Re,
ces codes fonctionnent très bien à partir des versions 2003 voire versions antérieurs -
bonjour Anuka, bonjour Mike
ou en plus bref
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Selection, Range("B3:B30")) Is Nothing Then With Target .Interior.ColorIndex = 4 + xlNone - .Interior.ColorIndex End With End If End Sub
cordialement