Probleme VBA et mise en forme conditionnelle
Taltema
-
Taltema Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Taltema Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
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 :)
A voir également:
- Xlexpression
- Mise en forme conditionnelle excel - Guide
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise en forme tableau croisé dynamique - Guide
- Mise a jour windows 10 - Accueil - Mise à jour
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
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 compris
Cordialement
Wilfried
ps: n'oubliez pas de mettre votre fil sur résolu quand vous obtenez ce que vous cherchez. Merci
"=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 compris
with 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
re:
il faut eviter de confondre colonne et ligne : cells(ligne,colonne)
j'avais compris par ligne et non par colonne
par contre, j'ajouterais en debut de macro une procedure de suppression de MFC
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 MFC
Dim 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.
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
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
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, bizarre
pourtant, j'ai horreur des select
je n'ai pas pu faire autrement, bizarre
Sub 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
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
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
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... :)