Mise en forme conditionnelle des cellules d'une plage de données
Dernière réponse : dans Programmation
Bonsoir à tous,
Dans mon programme, j’ai introduit dans la colonne « H » une fonction qui test à la fois la colonne « B » et « G » et met en conclusion dans « H » des observations (Texte)..
1- Reco
2- Test
3- Demo
En fonction de ces observations j’ai programmé une couleur sur toute la ligne allant de (B :H)
Par ailleurs, la formule renvoi des erreurs dans la collonne « H » #VALEUR! Si elle ne trouve rien dans la colonne « b » (le premier test), c’est normal..
J’ai pensé donc, de mettre une couleur de fond « Blanc »pour ces erreurs de formules afin de les dissimulées et parfaire l’affichage.
Le programme fonctionne à merveille sur mon PC sous Excel 2010, mais sur d’autres (sous Excel 2007 & 97) sa beug, il renvoi une erreur ‘1004’.. ?? à la ligne 28 :.ThemeColor = xlThemeColorDark1
Ci-après le code:
Est-ce que c’est un problème de version ?? si Oui, comment dois-je l'écrire pour qu'il soit déroulé même sur des anciennes versions?
Je vous remercie par avance pour votre aide.
Dans mon programme, j’ai introduit dans la colonne « H » une fonction qui test à la fois la colonne « B » et « G » et met en conclusion dans « H » des observations (Texte)..
1- Reco
2- Test
3- Demo
En fonction de ces observations j’ai programmé une couleur sur toute la ligne allant de (B :H)
Par ailleurs, la formule renvoi des erreurs dans la collonne « H » #VALEUR! Si elle ne trouve rien dans la colonne « b » (le premier test), c’est normal..
J’ai pensé donc, de mettre une couleur de fond « Blanc »pour ces erreurs de formules afin de les dissimulées et parfaire l’affichage.
Le programme fonctionne à merveille sur mon PC sous Excel 2010, mais sur d’autres (sous Excel 2007 & 97) sa beug, il renvoi une erreur ‘1004’.. ?? à la ligne 28 :.ThemeColor = xlThemeColorDark1
Ci-après le code:
Range("H2").Select ActiveCell.FormulaR1C1 = _ "=IF(SEARCH(""total"",C[-6], 1), IF(RC[-1]=0, ""Reco "", IF(RC[-1]>0, ""TEST"",""Demo"")))" Do While Not (IsEmpty(ActiveCell)) Cells(ActiveCell.Row, 8).Formula = "=IF(SEARCH(""total"",C[-6], 1), IF(RC[-1]=0, ""Reco "", IF(RC[-1]>0, ""TEST"",""Demo"")))" Selection.Offset(1, 0).Select Loop Sheets("Feuil5").Select lig = Cells.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row col = Cells.Find("*", , xlFormulas, , xlByColumns, xlPrevious).Row Dim derlig As Long derlig = Range("A65536").End(xlUp).Row Range(Cells(1, 2), Cells(derlig, 8)).Select With Selection .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=$H1=""Reco""" .FormatConditions(1).Interior.ColorIndex = 15 .FormatConditions.Add Type:=xlExpression, Formula1:="=$H1=""Demo""" .FormatConditions(2).Interior.ColorIndex = 40 .FormatConditions.Add Type:=xlExpression, Formula1:="=$H1=""TEST""" .FormatConditions(3).Interior.ColorIndex = 35 End With Columns("H:H").Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=ESTERREUR(H1)" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With
Est-ce que c’est un problème de version ?? si Oui, comment dois-je l'écrire pour qu'il soit déroulé même sur des anciennes versions?
Je vous remercie par avance pour votre aide.
Autres pages sur : mise forme conditionnelle cellules plage donnees
Karim_1972 a édité ce message
Lassé par la pub ? Créez un compte
Salut Karim,
Oh le beau message bien formaté
Ton problème est effectivement dû au versionning.
En effet, les propriétés ThemeColor et TintAndShade n'existent pas dans ces versions inférieures.
-------------------------------
Sinon, bouh que ce code est laid !
A chaque fois que tu utilises Select ou Activate, il y a une erreur de conception.
Veux-tu vraiment sélectionner ces objects ? Non, tu veux y faire référence !
Alors fais les choses bien.
A chaque fois que tu écris :
T'inquiète pas, t'es pas le 1er, si je ne l'ai pas fait remarquer 500 fois sur ce site, c'est que je ne l'ai jamais dit !
Ça donne :
Il y a mille bonnes raisons pour faire comme ça
Revenons à ta solution qui consiste à changer les couleurs pour cacher tes erreurs !
Et si à la place, tu compliquais tes formules avec un =IF(ISERROR(formule);"";formule) ?
Oh le beau message bien formaté
Ton problème est effectivement dû au versionning.
En effet, les propriétés ThemeColor et TintAndShade n'existent pas dans ces versions inférieures.
-------------------------------
Sinon, bouh que ce code est laid !
A chaque fois que tu utilises Select ou Activate, il y a une erreur de conception.
Veux-tu vraiment sélectionner ces objects ? Non, tu veux y faire référence !
Alors fais les choses bien.
A chaque fois que tu écris :
remplace par :
' Pas bon Truc.Select Selection.Machin()
' Ah, là c'est mieux Truc.Machin()
T'inquiète pas, t'es pas le 1er, si je ne l'ai pas fait remarquer 500 fois sur ce site, c'est que je ne l'ai jamais dit !
Ça donne :
Dim ta_cellule As Range Dim ta_derlig As Range Set ta_cellule = Worksheets("???").Range("H2") Set f5 = Worksheet("Feuil5") ta_cellule.FormulaR1C1 = "=IF(SEARCH(""total"",C[-6], 1), IF(RC[-1]=0, ""Reco "", IF(RC[-1]>0, ""TEST"",""Demo"")))" Do While Not (IsEmpty(ta_cellule)) ta_cellule.Cells(ActiveCell.Row, 8).Formula = "=IF(SEARCH(""total"",C[-6], 1), IF(RC[-1]=0, ""Reco "", IF(RC[-1]>0, ""TEST"",""Demo"")))" Set ta_cellule = ta_cellule.Offset(1, 0) Loop lig = f5.Cells.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row col = f5.Cells.Find("*", , xlFormulas, , xlByColumns, xlPrevious).Row Set derlig = f5.Range("A65536").End(xlUp) With f5.Range(f5.Cells(1, 2), derlig.Cells(8)) .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=$H1=""Reco""" .FormatConditions(1).Interior.ColorIndex = 15 .FormatConditions.Add Type:=xlExpression, Formula1:="=$H1=""Demo""" .FormatConditions(2).Interior.ColorIndex = 40 .FormatConditions.Add Type:=xlExpression, Formula1:="=$H1=""TEST""" .FormatConditions(3).Interior.ColorIndex = 35 End With With f5.Columns("H") .FormatConditions.Add Type:=xlExpression, Formula1:="=ESTERREUR(H1)" .FormatConditions(.FormatConditions.Count).SetFirstPriority End With f5.Columns("H").FormatConditions(1).Font.ColorIndex = 3
Il y a mille bonnes raisons pour faire comme ça
Revenons à ta solution qui consiste à changer les couleurs pour cacher tes erreurs !
Et si à la place, tu compliquais tes formules avec un =IF(ISERROR(formule);"";formule) ?
zeb a édité ce message
Bonsoir Zeb;
Merci infiniment pour ces éclaircissements, car là j'apprends vraiment des choses... De fait, le programme est devenu très souple et facile à lire..Merci encore.
J'ai pas pu tester la solution que tu m'a proposée car je viens de rentrer d'une mission en France.. je le ferais dès demain et je te tiendrais au courant.
J'espere que je vais réussir à compliquer encore plus la fonction;)
A bientôt.
Merci infiniment pour ces éclaircissements, car là j'apprends vraiment des choses... De fait, le programme est devenu très souple et facile à lire..Merci encore.
J'ai pas pu tester la solution que tu m'a proposée car je viens de rentrer d'une mission en France.. je le ferais dès demain et je te tiendrais au courant.
J'espere que je vais réussir à compliquer encore plus la fonction;)
A bientôt.
Eh, ce n'est plus de la programmation VB, mais de l'art d'utiliser ton tableur.
Ce qui est ici hors sujet.
Qu'importe si on n'en abuse pas
Tu as ton résultat, éventuellement en erreur dans une cellule de la colonne A.
Dans la colonne B, tu ajoute une formule telle que cette que je te proposais et qui fait référence à la cellule de la colonne A.
Et tu caches la colonne A.
Ce qui est ici hors sujet.
Qu'importe si on n'en abuse pas
Tu as ton résultat, éventuellement en erreur dans une cellule de la colonne A.
Dans la colonne B, tu ajoute une formule telle que cette que je te proposais et qui fait référence à la cellule de la colonne A.
Et tu caches la colonne A.
zeb a édité ce message
J'ai réussi tout de même à faire quelque chose en VB
mais il reste à le parfaire avec ton aide:
J'ai mis à la place:
J'aimerais affiché à la place du "0" un caractère blanc (Espace) comment pourais-je l'écrire en VB??
Merci par avance.
mais il reste à le parfaire avec ton aide:
J'ai mis à la place:
With Selection Columns("H:H").Select .SpecialCells(xlCellTypeFormulas, xlErrors).Value = 0 End With On Error GoTo 0
J'aimerais affiché à la place du "0" un caractère blanc (Espace) comment pourais-je l'écrire en VB??
Merci par avance.
Karim_1972 a édité ce message
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumMise en forme conditionnelle plusieurs conditions
- articlesMise forme conditionnelle couleur
- articlesMise en forme conditionnelle plusieurs critã res
- articlesMise en forme conditionnelle limitã e
- ForumMise en forme conditionnelle ligne vba
- ForumMise en forme conditionnelle excel sous access
- ForumMise en forme conditionnelle vba excel
- ForumExcel mise en forme conditionnelle
- ForumAjouter mise en forme conditionnelle
- ForumVba mise en forme conditionnelle
- Voir plus