Probleme VBA et mise en forme conditionnelle
Taltema
-
Taltema Messages postés 10 Statut Membre -
Taltema Messages postés 10 Statut Membre -
Bonjour,
J'ai un petit souci j'aimerais passer une variable dans une MFC mais je n'y arrive pas.
Pour tenter d'etre plus clair voici mon code :
For Nol = 2 To 26
Cells(Nol, 9).Select
Range(Cells(Nol, 9), Cells(Nol, 42)).Select
selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=B9=GRANDE.VALEUR($B:$B;2)"
Next
C'est la variable B9 (que j'ai mis en gras au dessus) que j'aimerais modifier par la cellule active.
Si quelqu'un peut m'eclairer :)
J'ai un petit souci j'aimerais passer une variable dans une MFC mais je n'y arrive pas.
Pour tenter d'etre plus clair voici mon code :
For Nol = 2 To 26
Cells(Nol, 9).Select
Range(Cells(Nol, 9), Cells(Nol, 42)).Select
selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=B9=GRANDE.VALEUR($B:$B;2)"
Next
C'est la variable B9 (que j'ai mis en gras au dessus) que j'aimerais modifier par la cellule active.
Si quelqu'un peut m'eclairer :)
Configuration: Windows XP Internet Explorer 7.0
5 réponses
-
Bonjour
"=B9=GRANDE.VALEUR($B:$B;2)" devient : "=" & activecell.address & "=GRANDE.VALEUR($B:$B;2)"
sinon, plus rapide sans boucle ni select (en fonction de ce que j'ai compriswith Range(cells(2,9),cells(26,42)).formatconditions.add .type = xlexpression .formula1 = "=$B2=Grande.valeur($B:$B;2)" .Interior.ColorIndex = 3 end with--
Cordialement
Wilfried
ps: n'oubliez pas de mettre votre fil sur résolu quand vous obtenez ce que vous cherchez. Merci-
- En modifiant le code avec ce que tu m'as donné, cela ne fonctionne pas encore.
En fait je dois prendre les valeurs de chaque colonne, ces valeurs sont stockées de la ligne 9 à la ligne 42, et je dois identifier les 3 plus grandes valeurs de chaque colonne. Le plus grand chiffre est ainsi sur fond rouge, le 2e sur fond orange et le 3e plus grand est sur fond jaune.
Voici mon code actuel :
For Nol = 2 To 26
Cells(Nol, 9).Select
ActiveWindow.SmallScroll Down:=10
Range(Cells(Nol, 9), Cells(Nol, 42)).Select
selection.FormatConditions.Delete
selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=" & ActiveCell.Address & "=GRANDE.VALEUR($B:$B;2)"
selection.FormatConditions(1).Interior.ColorIndex = 3
selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=" & ActiveCell.Address & "=GRANDE.VALEUR($B:$B;3)"
selection.FormatConditions(2).Interior.ColorIndex = 46
selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=" & ActiveCell.Address & "=GRANDE.VALEUR($B:$B;4)"
selection.FormatConditions(3).Interior.ColorIndex = 27
ActiveWindow.SmallScroll Down:=2
Next
Pour le moment, ce code ne fonctionne pas. Donc si tu peux m'aider... :)
-
-
re:
il faut eviter de confondre colonne et ligne : cells(ligne,colonne)
j'avais compris par ligne et non par colonne
with Range(cells(9,2),cells(42,26)).formatconditions.add .type = xlexpression .formula1 = "=B2=Grande.valeur(B:B;1)" .Interior.ColorIndex = 3 end with with Range(cells(9,2),cells(42,26)).formatconditions.add .type = xlexpression .formula1 = "=B2=Grande.valeur(B:B;2)" .Interior.ColorIndex = 6 end with with Range(cells(9,2),cells(42,26)).formatconditions.add .type = xlexpression .formula1 = "=B2=Grande.valeur(B:B;3)" .Interior.ColorIndex = 9 end with
par contre, j'ajouterais en debut de macro une procedure de suppression de MFCDim Fc as FormatCondition For each Fc in range(cells(9,2),cells(42,26)) fc.delete next-
Au niveau de cette ligne :
With Range(Cells(9, 2), Cells(42, 26)).FormatConditions.Add
Excel me retourne une erreur " Argument non facultatif" en surlignant le .Add alors que logiquement les arguments sont passés sur les lignes en dessous, à savoir :
.type = xlexpression
.formula1 = "=B2=Grande.valeur(B:B;1)"
.Interior.ColorIndex = 3
Pour le moment, je reste dans l'impasse. Merci de ton aide.
-
-
Bonjour taltema, cher Wilfried (ca va?),
A mon avis, il y a une petite faute de frappe dans la proposition de Wilfied:
au lieu de:
with Range(cells(9,2),cells(42,26)).formatconditions.add
.type = xlexpression
saisir
with Range(cells(9,2),cells(42,26)).formatconditions
.add type = xlexpression
-
Ca ne fonctionne pas plus malheureusement. Si cela peut vous aiguiller, j'ai Sub ma_macro() surlignée en jaune lors de l'affichage de l'erreur.
Avec ce code-ci, ca fonctionne presque. En fait la premiere colonne est traitée correctement, c'est a dire que les 3 plus grands chiffres sont identifiés et correctement colorisés mais ensuite toutes les autres colonnes sont coloriées au meme niveau que les chiffres de la 1ere colonne.
voici mon code :
For Nol = 2 To 26
Range(Cells(9, Nol), Cells(42, Nol)).Select
'Cells(9, Nol).Activate
selection.FormatConditions.Delete
selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=B9=GRANDE.VALEUR($B:$B;2)"
selection.FormatConditions(1).Interior.ColorIndex = 3
selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=B9=GRANDE.VALEUR($B:$B;3)"
selection.FormatConditions(2).Interior.ColorIndex = 46
selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=B9=GRANDE.VALEUR($B:$B;4)"
selection.FormatConditions(3).Interior.ColorIndex = 27
Next
Merci d'avance -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
re:, salut michel ça fait plaisir de te croiser
je n'ai pas pu faire autrement, bizarreSub essai() Range(Cells(9, 2), Cells(42, 26)).Select With Selection.FormatConditions.Add(Type:=xlExpression, Formula1:="=B9=Grande.valeur(B:B;1)") .Interior.ColorIndex = 3 End With End Sub
pourtant, j'ai horreur des select
-
Ca ne marche toujours pas désolé.
J'ai une erreur sur la ligne du with "Erreur définie par l'application ou par l'objet".- En fait, après maintes recherches, je sais exactement ce dont j'ai besoin :)
Dans ma macro, j'ai cette ligne :
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=B9=GRANDE.VALEUR(B:B;2)"
Il me faudrait pouvoir changer le B que j'ai mis en gras par une variable afin je puisse faire une boucle qui irait de B à Z.
Si vous pouvez m'aider ... :D
-