[VBA] Changer la couleur d'une case [Fermé]

Signaler
-
 Papi78 -
Bonjour,

Je suis un véritable novice dans le domaine de VBA, il faudra donc m'expliquer un peut le code.

Je cherche donc à changer la couleur d'une case en fonction de la valeur contenue sur d'autres cases (ne se trouvant pas forcement sur la même feuille de calcul)

Autrement dit je veut que la couleur de A1 sur la feuille "truc" change si la case B5=65 sur la feuille "machin" ET si la case F6=48 sur la feuille "chose".

3 réponses

Messages postés
147
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
5 juin 2012
56
Bonjour barberousse

Voici une solution qui me parait simple :

Il te faut créer un nouveau module dans VBA (Menu 'Insertion -> Module'), puis tu tapes le code suivant :

Sub ChgCouleur()
If Sheets("machin").Range("b5").Value = 65 And Sheets("chose").Range("f6") = 48 Then
Sheets("truc").Range("a1").Interior.ColorIndex = 6
Else
Sheets("truc").Range("a1").Interior.ColorIndex = 0
End If
End Sub


Ensuite, dans les événements 'Change' de tes feuilles "machin" et "chose", tu tapes l'appel à cette procésure :

Private Sub Worksheet_Change(ByVal Target As Range)
ChgCouleur
End Sub


Explication :

A chaque changement de valeur dans l'une des 2 feuilles, la procédure ChgCouleur est exécutée.
Cette procédure lit la valeur de la cellule "b5" de la feuille "machin" et de la cellule "f6" de la feuille "chose".
Si les valeurs trouvées sont respectivement 65 ET 48, le programme change alors la couleur de fond de la cellule "a1" de la feuille "truc" (6=jaune). Dans le cas contraire, elle remet la couleur par défaut (0=aucune).
Tu peux tester les différentes couleurs possibles en modifiant la valeur '6').

Espérant t'avoir aidé.

Cordialement.
8
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 87645 internautes nous ont dit merci ce mois-ci


J'aimeeeeeeeee
guadoc
Messages postés
70
Date d'inscription
mercredi 26 mai 2010
Statut
Membre
Dernière intervention
21 octobre 2011
5
En RGB on peut utiliser colorIndex??
On fait comment sinon?
Merci Papou93, nickel chrome
merci je viens d'essayer, j'ai bien réussi à faire le module VBA, mais je ne comprends pas comment aller dans les événements de "machin" et "chose".

Ceci dit ça à l'aire de fonctionner quand je teste le script, mais comment je peut définir la couleur ?
Messages postés
147
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
5 juin 2012
56
Il te suffit, dans l'éditeur VBA, module 'Microsoft Excel Objects', de cliquer sur les feuilles voulues puis choisir 'WorkSheet' dans la liste déroulante en haut à gauche et 'Change' dans la liste déroulante de droite.
Pour définir les couleurs, procèdes par essais en remplaçant le 6 ('Interior.colorindex=6') par un autre chiffre (=57 maxi).

Cordialement.
Bonjour Papou,
dans le même ordre d'idée
je veux que la cellule dans laquelle je fais une condition change de couleur en fonction de la réponse reçue.
Exemple,
dans la cellule F4 de ma feuil1, si ma réponse dans ma cellule est "OUI" alors met la cellule en couleur x,
si c'est "NON" met la cellule de couleur y
sinon pas de changement de couleur.
Je veux pouvoir glisser cette fonction à plusieurs cellules par la suite (ex : F5, F6, F7, F8 etc).
Je me suis appuyé sur le code que tu as fourni au début mais cela ne fonctionne pas, peux-tu m'aider?
Voici le code que j'ai mis :
Sub ChgCouleur()
If Sheets("Feuil1").Range("f4").Value = "OUI" Then
Sheets("Feuil1").Range("f4").Interior.ColorIndex = 6
Else
If Sheets("Feuil1").Range("f4").Value = "NON" Then
Sheets("Feuil1").Range("f4").Interior.ColorIndex = 50
Else
Sheets("Feuil1").Range("f4").Interior.ColorIndex = 0
End If
End Sub

Je suis loin de programmer mais je comprend un peu le langage. De plus, je suis en office 2007 et je voudrais savoir si je codifie au bon endroit c'est à dire l'onglet Developpeur, puis icône de microsoft visual basic.

Merci
avec le Range("f4"), cela ne s'applique qu'à la cellule F4.
il faudrait faire une itération sur les cellules suivantes ? ou utiliser la fonction de 'cellule active' et non de 'cellule F4' (positionnement dynamique, la cellule ACTIVE, et non la cellule F4)
A suivre...
merci pour tt