Mise en forme

Bonjour à tous,

Je voudrais repérer dans un tableau de calcul les résultats négatifs et mettre la cellule en couleur.

J'ai essayé de créer une macro qui remplace la cellule contenant le nombre négatif par une cellule en couleur comme ci-dessous :

Selection.Replace What:="-1", Replacement:="-1", LookAt:=xlWhole, _

SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _

ReplaceFormat:=True

Selection.Replace What:="-2", Replacement:="-2", LookAt:=xlWhole, _

SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _

ReplaceFormat:=True

Le problème c'est que les nombres négatifs obtenus varient à l'infini et je ne vois pas comment construire la macro nombre par nombre.

Est-ce que quelqu'un peut m'aider car le tableau de données est très long et jusqu’à présent je le fais à la main et je suis épuisée !!

Je poste un exemple de tableau de ce que je veux obtenir.

Merci beaucoup pour celui ou celle qui pourra m'aider

Sarah

2calcul-ecarts.xlsm (64.20 Ko)

Bonjour

Un essai à tester. Te convient-il ?

Bye !

Bonjour,

Merci beaucoup la macro fonctionne très bien sur l'exemple de fichier que je t'ai communiqué.

Seul inconvénient c'est que je n'arrive pas à la transférer sur le fichier que j'utilise réellement.

Pourrais-tu me faire la même manip sur le vrai fichier que je poste dans ce mèl.

Comme le fichier est trop gros et ne passe pas dans sa forme initiale, j'ai mis les quatre premiers tableaux sur lesquels je voudrais faire la mise en forme (qui doit avoir lieu sur la colonne Ecarts).

En réalité le tableau contient 150 tableaux d'écarts.

Merci pour ce que tu pourras faire

sarah

7calcul-ecarts.xlsm (64.20 Ko)

Bonjour

Voilà :

Bye !

Bonjour,

Une proposition.

Cdlt.

6xlp-mina-mfc.xlsm (60.39 Ko)
Option Explicit
Option Private Module

Public Sub Number_Format()
Dim ws As Worksheet
Dim lastRow As Long, lastCol As Long
Dim col As Long
Dim rngData As Range, c As Range
Dim calcMode As XlCalculation

    With Application
        calcMode = .Calculation
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
    End With

    Set ws = Feuil1

    With Feuil1
        lastRow = .UsedRange.Rows.Count
        lastCol = .UsedRange.Columns.Count
        For col = 7 To lastCol Step 18
            Set rngData = .Range(.Cells(3, col), .Cells(lastRow, col))
            For Each c In rngData
                c.Interior.Color = xlNone
                If c.Value < 0 Then c.Interior.Color = RGB(255, 0, 255)
            Next
        Next
    End With

    Application.Calculation = xlCalculationAutomatic

    Set rngData = Nothing
    Set ws = Nothing

End Sub

Bonjour,

je suis étonné car d'habitude vous proposez une simple mise en forme conditionnelle,

un code n'étant pas vraiment nécessaire ou au pire, une dizaine de lignes de code suffit …

Rechercher des sujets similaires à "mise forme"