Probleme VBA et mise en forme conditionnelle
Fermé
Taltema
-
24 févr. 2009 à 17:21
Taltema Messages postés 8 Date d'inscription dimanche 4 décembre 2005 Statut Membre Dernière intervention 16 mars 2009 - 25 févr. 2009 à 16:59
Taltema Messages postés 8 Date d'inscription dimanche 4 décembre 2005 Statut Membre Dernière intervention 16 mars 2009 - 25 févr. 2009 à 16:59
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 en forme conditionnelle en fonction d'une autre cellule ✓ - Forum Excel
- Mise a jour windows 10 - Accueil - Mise à jour
5 réponses
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
244
24 févr. 2009 à 18:17
24 févr. 2009 à 18:17
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
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
244
25 févr. 2009 à 09:47
25 févr. 2009 à 09:47
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
Taltema
Messages postés
8
Date d'inscription
dimanche 4 décembre 2005
Statut
Membre
Dernière intervention
16 mars 2009
25 févr. 2009 à 10:14
25 févr. 2009 à 10:14
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.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
25 févr. 2009 à 10:35
25 févr. 2009 à 10:35
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
Taltema
Messages postés
8
Date d'inscription
dimanche 4 décembre 2005
Statut
Membre
Dernière intervention
16 mars 2009
25 févr. 2009 à 10:41
25 févr. 2009 à 10:41
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
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
244
25 févr. 2009 à 13:38
25 févr. 2009 à 13:38
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
Taltema
Messages postés
8
Date d'inscription
dimanche 4 décembre 2005
Statut
Membre
Dernière intervention
16 mars 2009
25 févr. 2009 à 13:50
25 févr. 2009 à 13:50
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".
J'ai une erreur sur la ligne du with "Erreur définie par l'application ou par l'objet".
Taltema
Messages postés
8
Date d'inscription
dimanche 4 décembre 2005
Statut
Membre
Dernière intervention
16 mars 2009
>
Taltema
Messages postés
8
Date d'inscription
dimanche 4 décembre 2005
Statut
Membre
Dernière intervention
16 mars 2009
25 févr. 2009 à 16:59
25 févr. 2009 à 16:59
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
24 févr. 2009 à 22:54
25 févr. 2009 à 09:29
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... :)