Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA creer une macro

  • Initiateur de la discussion Initiateur de la discussion atoss77
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

atoss77

XLDnaute Nouveau
Bonjour

j'ai une fichier excel avec des valeurs en % en A et B. En colonne C je voudrais faire C= A-B

Je voudrais une macro pour faire :
si C% est inférieur à 0 format cellule = rouge
sinon si C% supérieur à 0 format cellule = vert foncé
sinon si C% = 0 alors vert clair


Merci
 

Pièces jointes

Re : VBA creer une macro

Bonjour,

dans le code de la feuille

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 3 Then Exit Sub
    If Target = "" Then Exit Sub
    If Target < 0 Then Target.Interior.Color = RGB(255, 0, 0)
    If Target = 0 Then Target.Interior.Color = RGB(20, 255, 210)
    If Target > 0 Then Target.Interior.Color = RGB(0, 255, 0)
End Sub
 
Re : VBA creer une macro

Bonjour, atoss77, gilbert_RGI, le Forum,

Une autre suggestion avec le présent code, placé dans un module standard.


Code:
Option Explicit
Sub Couleur_selon_valeur()
    Dim i As Long
    Application.ScreenUpdating = False
    For i = Cells(Rows.Count, "a").End(xlUp).Row To 2 Step -1
        With Range("c" & i)
            .FormulaR1C1 = "=RC[-1]-RC[-2]"
            If .Value < 0 Then .Interior.ColorIndex = 3
            If .Value > 0 Then .Interior.ColorIndex = 43
            If .Value = 0 Then .Interior.ColorIndex = 4
        End With
    Next i
    Application.ScreenUpdating = True
End Sub

A bientôt 🙂
 
Re : VBA creer une macro

ou une autre

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [c1:c100]) Is Nothing And Target.Count = 1 Then
        Select Case Target.Value
        Case Is < 0
            Target.Interior.ColorIndex = 3
        Case Is = 0
            Target.Interior.ColorIndex = 4
        Case Is > 0
            Target.Interior.ColorIndex = 35
        Case Else
            Target.Interior.ColorIndex = xlNone
        End Select
    End If
End Sub

Edit: Bonjour 00
 
Re : VBA creer une macro

Merci pour vos réponse

et si j'ai 2 fois la même chose

en plus des colonnes a, b, c j'ai les colonnes FGH avec h=F-G

comment je modifie pour la macro fonctionne en colonne C et En colonne H
 

Pièces jointes

Re : VBA creer une macro

Re-bonjour,

Comme ceci ?

Code:
Option Explicit
Sub Couleur_selon_valeur_V2()
    Dim c As Range
    Application.ScreenUpdating = False
    For Each c In Union(Range("a2", Cells(Rows.Count, "a").End(xlUp)), Range("f2", Cells(Rows.Count, "f").End(xlUp)))
        With c.Offset(, 2)
            .FormulaR1C1 = "=RC[-1]-RC[-2]"
            If .Value < 0 Then .Interior.ColorIndex = 3
            If .Value > 0 Then .Interior.ColorIndex = 43
            If .Value = 0 Then .Interior.ColorIndex = 4
        End With
    Next c
    Application.ScreenUpdating = True
End Sub

A bientôt 🙂
 
Dernière édition:
Re : VBA creer une macro

Re-bonjour,

Si les colonnes a et f devaient comporter des "trous"...

Code:
Option Explicit
Sub Couleur_selon_valeur_V3()
    Dim c As Range
    Application.ScreenUpdating = False
    For Each c In Union(Range("a2", Cells(Rows.Count, "a").End(xlUp)), Range("f2", Cells(Rows.Count, "f").End(xlUp))).SpecialCells(xlCellTypeConstants, 23)
        With c.Offset(, 2)
            .FormulaR1C1 = "=RC[-1]-RC[-2]"
            If .Value < 0 Then .Interior.ColorIndex = 3
            If .Value > 0 Then .Interior.ColorIndex = 43
            If .Value = 0 Then .Interior.ColorIndex = 4
        End With
    Next c
    Application.ScreenUpdating = True
End Sub

A bientôt 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Formule si ?
Réponses
7
Affichages
297
Réponses
8
Affichages
312
Réponses
5
Affichages
461
Réponses
8
Affichages
653
Réponses
4
Affichages
411
Réponses
5
Affichages
316
Réponses
6
Affichages
467
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…