[VBA] changement couleur cellule

Résolu
Anuca Messages postés 10 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.

9 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  2. Anuca Messages postés 10 Statut Membre
     
    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
    1. Anuca Messages postés 10 Statut Membre
       
      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
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Anuca Messages postés 10 Statut Membre
     
    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
  7. Anuca Messages postés 10 Statut Membre
     
    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
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    ces codes fonctionnent très bien à partir des versions 2003 voire versions antérieurs
    0
    1. pompom09 Messages postés 57 Statut Membre 1
       
      je viens de retirer le commentaire, car en fait oui cela fonctionne, excusez moi. merci
      0
  9. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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