Mise en forme couleur

bonjour à tous

j'ai un problème avec la formule dans ma macro, elle bug au même endroit

ci joint le code et une partie du fichier

sub test()
 Range("a2").Select
    With Worksheets("inventaire global au 20-10-17").Range("a2:j12000")

           .FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=RECHERCHEV(a2;Feuil2!b:w;22;faux)=""1"""
        .FormatConditions(.FormatConditions.Count).SetFirstPriority
        With .FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = -0.14996795556505
        End With
        .FormatConditions(1).StopIfTrue = False
    End With
End Sub

en même tant existe t'il panel des shade et des références dans excel.

merci pour votre aide par avance

philippe

15test-shade.xlsm (153.04 Ko)

Bjr,

comme ceci

Sub test()
 Range("a2").Select
    With Worksheets("inventaire global au 20-10-17").Range("a2:j120000")
        '.FormatConditions.Delete

        .FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=RECHERCHEV(a2;Feuil2!b:w;22;faux)=1"
        .FormatConditions(.FormatConditions.Count).SetFirstPriority
        With .FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = -0.14996795556505
        End With
        .FormatConditions(1).StopIfTrue = False
    End With
End Sub
12test-shade.xlsm (151.89 Ko)

bonjour steelson

merci pour ta réponse.

j'ai recopier le code que tu as corrigé , mais c'est toujours pareil, ça bug au même endroit

Philippe

Bonjour, Salut Steelson !

en même tant existe t'il panel des shade et des références dans excel.

L'espace de couleurs de windows est rvb... Toutes les couleurs affichables peuvent être définies par une valeur RGB. Le dispositif mis en place depuis Excel 2007 des Thèmes de couleur ne crée pas de nouvelles couleurs, il s'agit de créer des groupes dans lesquels les variations sont définies par des différences de luminosité (TintAnd Shade). Cela peut être intéressant sans doute de jouer avec des Thèmes pour pouvoir réaliser des gradations nuancées... mais il serait bon alors de disposer d'une documentation de référence (elle existe peut-être, mais je ne suis pas tombé dessus...)

Pour tous ceux qui opèrent avec l'enregistreur, ce dernier selon les touches de couleurs utilisées produira un Thème avec son TintAndShade ou une valeur RGB... Dès lors qu'on ne travaille pas avec un ensemble de couleurs groupées dans un Thème, ce qui est quasiment le cas général, je conseille de se simplifier la vie et de définir systématiquement les couleurs par leur valeur RGB, laquelle est toujours facile à trouver, et à utiliser !

En second lieu, s'agissant de MFC, je conseille aussi de réfléchir et ne pas suivre bêtement l'enregistreur ! Soit éliminer ses scories habituelles (valeurs de propriétés par défaut)... Dans le cas général, la seule susceptible d'avoir un impact est StopIfTrue si l'on a plusieurs MFC qui se recoupent. J'ai en tout cas noté qu'en manuel la case est décoché alors que par macro elle se coche (dans les mêmes conditions), on peut donc la définir sur False (par précaution éventuelle) qui est la valeur à retenir (sauf cas particuliers).

Enfin, ta formule avait un petit problème de références relatives ou absolues (outre l'erreur rectifiée par Steelson)...

Sub test()
    With Worksheets("inventaire global au 20-10-17").Range("a2:j120000").FormatConditions
        .Delete
        With .Add(xlExpression, , "=RECHERCHEV($a2;Feuil2!$b:$w;22;faux)=1")
            .Interior.Color = RGB(217, 217, 217)
            .StopIfTrue = False
        End With
    End With
End Sub

Cordialement.

bonjour MFerrand

merci pour les explication

Pour les shade jai bien compris mais toujours le problème de bug dans le code au niveau de : With .Add(xlExpression, , "=RECHERCHEV($a2;Feuil2!$b:$w;22;faux)=1")

et franchement je ne vois ce qui cloche

par avance merci de votre aide

philippe87

Pour autant que je sache, et après vérification, pas de bogue dans le fichier que j'ai retourné !

Il y a donc autre chose...

Salut Maréchal,

je n'ai pas non plus de bug dans le mien

peux-tu dire quelle est l'erreur ? ou à quel endroit cela bug ?

Bonjour à tous,

Sans avoir fait de tests ... j'aurais eu tendance à dire qu'il faudrait créér un nom pour la plage de la Feuille 2 ...

A valider ...

bonjour

désolé d'insister mais je ne comprends pas pour ça bug chez moi, j'ai renommé la feuil2 par " inv" mais ça ne change rien.

ci joint les fichiers

merci pour votre aide

9bug.pdf (164.38 Ko)

Bonjour,

Ma suggestion ne consistait pas à donner un nom à la Feuille ... mais à la plage, dans la feuille 2, qui sert de référence ...

Ci-joint ton fichier en Version 2 ...

En espèrant que cela t'aide ...

bonjour james007

merci pour ton aide,

j'ai bien compris ou tu veux en venir , mais vue mon niveau de vba ,peux tu me dire exactement comment je déclare ma plage .

cordialement

Philippe

Bonjour à tous,

Une proposition avec les données mises sous forme de tableau et la plage nommée de James007.

A te relire pour le bug.

Cdlt.

Public Sub FCInTable()
Dim rng As Range, fc As FormatCondition
    Set rng = Worksheets("inventaire global au 20-10-17").ListObjects(1).DataBodyRange
    With rng
        .FormatConditions.Delete
        Set fc = .FormatConditions.Add(Type:=xlExpression, _
                                       Formula1:="=RECHERCHEV($A2;References;22;FAUX)=1")
        With fc
            .Interior.Color = RGB(217, 217, 217)
            .StopIfTrue = False
        End With
    End With
    Set fc = Nothing: Set rng = Nothing
End Sub

bonjour james007

merci pour ton aide,

j'ai bien compris ou tu veux en venir , mais vue mon niveau de vba ,peux tu me dire exactement comment je déclare ma plage .

cordialement

Philippe

Re,

Procédons dans l'ordre ...

Est-ce-que le fichier posté ...fonctionne ... chez toi ..... ou pas ...???

bonjour

je viens d'écrire ça

Sub Test2()
Dim MaPlage
MaPlage = Range("inv!B2:W150")

    With Worksheets("inventaire global au 20-10-17").Range("a2:j9").FormatConditions
        .Delete
        With .Add(xlExpression, , "=VLOOKUP($A2,MaPlage,22,FALSE)=1")
            .Interior.Color = RGB(217, 217, 217)
            .StopIfTrue = False
        End With
    End With
End Sub

le bug est toujours au même endroit

philippe

Re,

Avant d'aller plus avant ...

Pourrais-tu avoir la gentillesse de répondre à la question :

Est-ce-que le fichier posté ....... Test V2 ... fonctionne ... chez toi ..... ou pas ...???

Bonjour,

Ton dernier fichier ne bogue pas chez moi... Dans ces conditions, difficile de voir ce qui provoque l'erreur qui se produit chez toi.

Cordialement.

Re,

Si tu tiens à nommer ta plage avec la macro ...

ActiveWorkbook.Names.Add Name:="MaPlage", RefersToR1C1:="=inv!R3C2:R150C23"

En espèrant que cela t'aide ...

A tous

je vous remercie pour votre aide

pour répondre à James007, le fichier test02 bug toujours.

par contre celui de Jean-Eric à l'air de fonctionner , j'ai repris sont code sur mon fichier original et tout est ok.

encore merci de votre aide et votre patience

philippe

Re,

Pour ma part j'avais avec le fichier de James007 (V2), une erreur 5 (Argument ou appel de procédure incorrect), sur la ligne :

With Add (XlExpression, etc...

Que l'on utilise VLOOKUP ou RECHERCHEV...

De plus, je me suis rendu compte que la plage de données pour la MFC existante était A2:J120000.

D'ou une proposition avec la mise sous forme de tableau.

Cdlt.

@ Jean-Eric ...

Merci pour l'info ...

Quelque chose d'étrange ... chez Philippe ... puisqu'aucun fichier ... depuis le début ... n'a de bugs ... chez moi ...

Rechercher des sujets similaires à "mise forme couleur"