Macro VBA- Couleur en fonction de la valeur d'une cellule

Bonsoir,

Je suis débutante en VBA. Ci-joint un fichier Excel.

A partir des données source suivante

image

J'aimerais que la macro fasse le test suivante sur les cell source B2:G7 et applique la règle suivante sur les cell de destination (onglet DEST)

Si B2 (source)= "A" alors couleur orange en B2 (dest), si B2 (source)= "B" alors couleur rouge en B2 (dest),B2 (source)=ni "A" ni "B" alors pas de couleur orange en B2 (dest)

idem en cell C2, D2... jusque G7

Est-ce que qlq'un peut m'aider pour la macro?

Merci!

Sandr

77test.xlsx (15.63 Ko)

Salut Sandr,

ainsi, sans doute..

Private Sub Worksheet_Change(ByVal Target As Range)
'
If Not Intersect(Target, Range("B2:G7")) Is Nothing Then
    With Worksheets("DEST").Range(Target.Address)
        .Value = Target
        .Interior.Color = xlNone
        If .Value = "A" Or .Value = "B" Then _
            .Interior.Color = IIf(.Value = "A", RGB(255, 190, 0), RGB(255, 0, 0))
    End With
End If
'
End Sub
238sandr.xlsm (16.17 Ko)


A+

Merci!

Petite question: est-ce que je dois commencer le code par "sub macro ()?

Si non, comment je relie ta macro à un bouton pour la lancer?

Sandr

Salut Sandr,

pas besoin de bouton : Private Sub Worksheet_Change est une macro événementielle, c-à-d qu'au moindre changement de valeur détecté dans la Range("B2:G7"), elle calcule automatiquement les changements à effectuer dans 'DEST'...

Pourquoi se compliquer la vie ?
Si ton besoin est plus complexe au point de vouloir un bouton de commande, prière de mieux l'exprimer, stp !


A+

Merci pour les précisions!

Dans la macro, où est défini l'onglet source?

Encore merci

Sandr

Salut Sandr,

- ouvre le fichier ;
- ALT - F11 pour ouvrir l'environnement VBA ;
- dans la fenêtre-explorateur de projet à gauche en haut de l'écran, double-clic sur l'intitulé de 'SOURCE' ;
- dans la grande fenêtre à droite (si tu n'as pas fait tout à l'envers ! ), devrait s'afficher le code de la macro.

Voilà l'explication de ta demande.
Pas besoin de préciser l'origine 'SOURCE' : l'emplacement du code spécifie ipso facto l'origine.

Ainsi, ci-dessous, on "sait" de source sûre que Range("B2:G7") a sa source en 'SOURCE' puisque le code source est en 'SOURCE'...
Faut vraiment pas être sourcier pour comprendre ce qui coule de source...

If Not Intersect(Target, Range("B2:G7")) Is Nothing Then

Par contre, si tu veux préciser une destination "extérieure" à la feuille de codage, il faut travailler avec WITH...

With Worksheets("DEST")

... et comme les cellules-sources sont identiques aux cellules-cibles, je peux même spécifier avec quelle cellule-cible je travaille

With Worksheets("DEST").Range(Target.Address)

Toutes les Range se référant à ce With doivent alors être précédés d'un point . ce qui équivaut à écrire..

Worksheets("DEST").Range(Target.Address).Value = Target

Cela simplifie l'écriture et la re-lecture.

Très simple, VBA : suffit de connaître le mandarin !


A+

Bonjour Curulis,

Désolée de ne te répondre que maintenant.

J'aimerais préciser les onglets source et destination dans le code VBA.

Comment préciser le nom de l'onglet source dans le code ci-dessous par exemple?

If Not Intersect(Target, Range("J7:H8")) Is Nothing Then

Par avance merci,

Sandr

Bonjour Curulis,

As-tu eu le temps de regarder ma question de vendredi dernier?
Par avance merci,
Sandr
Rechercher des sujets similaires à "macro vba couleur fonction valeur"