[VBA] changement couleur cellule

Résolu/Fermé
Anuca Messages postés 10 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 24 novembre 2012 - 29 juil. 2012 à 18:58
pompom09 Messages postés 55 Date d'inscription lundi 30 juillet 2012 Statut Membre Dernière intervention 13 août 2012 - 30 juil. 2012 à 09:22
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.

9 réponses

Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
29 juil. 2012 à 20:59
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
0
Anuca Messages postés 10 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 24 novembre 2012
29 juil. 2012 à 21:46
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?
0
Anuca Messages postés 10 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 24 novembre 2012
29 juil. 2012 à 22:03
et au passage, vous avez écris B3:B30 mais je le veux sur toute la page sauf la première ligne et les deux première colonnes je dois faire une boucle?
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
29 juil. 2012 à 22:17
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
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
29 juil. 2012 à 22:18
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Anuca Messages postés 10 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 24 novembre 2012
29 juil. 2012 à 22:34
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 :(
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
29 juil. 2012 à 22:42
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
0
Anuca Messages postés 10 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 24 novembre 2012
29 juil. 2012 à 22:59
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!
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
30 juil. 2012 à 09:13
Re,

ces codes fonctionnent très bien à partir des versions 2003 voire versions antérieurs
0
pompom09 Messages postés 55 Date d'inscription lundi 30 juillet 2012 Statut Membre Dernière intervention 13 août 2012 1
30 juil. 2012 à 09:22
je viens de retirer le commentaire, car en fait oui cela fonctionne, excusez moi. merci
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 29/07/2012 à 21:43
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
-1