Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MEFC en VBA, réglage

5 réponses
Avatar
Patrick BASTARD
Bonjour, toutes et tous.

J'avance sur les MEFC d'une sélection, mais je rencontre encore un p'tit
problème :

Set PlG = Selection ' lignes entières concommitentes,
sélection aléatoire
With PlG
DeB = .Item(1).Row
FiN = .Item(PlG.Count).Row
End With
Set colMàS = Range(Range("M" & DeB), Range("S" & FiN))

' Une condition : Les 5 plus grandes valeurs de chaque colonne en blanc gras
sur fond rouge :
For Each c In colMàS
==================
Mefc = "=$M$" & c.Row & ">=GRANDE.VALEUR($M$" & colMàS.Row & ":$M$" &
colMàS(colMàS.Count).Row & ";5)"
me colore toutes les cellules de M à S sur les lignes contenant les 5 plus
grandes valeurs de la zone Mx à Sx .
==================
Mefc = "=$M$" & c.Row & ">=GRANDE.VALEUR(M$" & colMàS.Row & ":S$" &
colMàS(colMàS.Count).Row & ";5)"
me renvoie, par exemple, en M764
=$M$764>=GRANDE.VALEUR(Y$763:AE$793;5)
Et en R773
=$M$773>=GRANDE.VALEUR(AD$763:AJ$793;5)
==================
Quelle syntaxe dois-je utiliser pour colorer les 5 plus grandes valeurs de
chacune des colonnes de la zone sélectionnée ?
Je pense avoir mal placé mes dollars, mais ne parviens pas à trouver mon
erreur.

Merci d'avance du coup de main.
--
Bien amicordialement,
P. Bastard

5 réponses

Avatar
Patrick BASTARD
Bonsoir, toutes et tous.

Vous vous êtes déjà tous envolés pour Rome ?
;-)

A moins que ma question ne soit incompréhensible ?

A tout hasard, je joins un exemple :
http://cjoint.com/?emvmTajRCJ

Le pb se situe sur la Mefc des colonnes M à S, oû je désire repérer les 5
plus grandes valeurs de chacune des 7 colonnes.

Une solution consisterait à faire une MEFC pour chaque colonne, mais
j'aimerais bien ne pas alourdir encore le code...

Merci d'avance pour toute idée de simplification, lien, conseil...


--
Bien amicordialement,
P. Bastard

Set PlG = Selection ' lignes entières concommitentes, sélection aléatoire
With PlG
DeB = .Item(1).Row
FiN = .Item(PlG.Count).Row
End With
Set colMàS = Range(Range("M" & DeB), Range("S" & FiN))

' Une condition : Les 5 plus grandes valeurs de chaque colonne en
blanc gras sur fond rouge :
For Each c In colMàS
================= > Mefc = "=$M$" & c.Row & ">=GRANDE.VALEUR($M$" & colMàS.Row & ":$M$" &
colMàS(colMàS.Count).Row & ";5)"
me colore toutes les cellules de M à S sur les lignes contenant les 5
plus grandes valeurs de la zone Mx à Sx .
================= > Mefc = "=$M$" & c.Row & ">=GRANDE.VALEUR(M$" & colMàS.Row & ":S$" &
colMàS(colMàS.Count).Row & ";5)"
me renvoie, par exemple, en M764
=$M$764>=GRANDE.VALEUR(Y$763:AE$793;5)
Et en R773
=$M$773>=GRANDE.VALEUR(AD$763:AJ$793;5)
================= > Quelle syntaxe dois-je utiliser pour colorer les 5 plus grandes
valeurs de chacune des colonnes de la zone sélectionnée ?
Je pense avoir mal placé mes dollars, mais ne parviens pas à trouver
mon erreur.

Merci d'avance du coup de main.


Avatar
Thierryp
Bonjour Patrick,

Sans avoir regardé ton fichier, une remarque "sémantique" : si tu veux
les 5 plus grandes valeurs de chaque colonne, il me semble que tu dois
avoir une MEFC par colonne; même si la macro qui applique la MEFC est la
même, il suffit d'appliquer un offset sur la colonne pour répéter la macro.


@+ thierryp

------------------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet. (Courteline)
------------------------

Bonsoir, toutes et tous.

Vous vous êtes déjà tous envolés pour Rome ?
;-)

A moins que ma question ne soit incompréhensible ?

A tout hasard, je joins un exemple :
http://cjoint.com/?emvmTajRCJ

Le pb se situe sur la Mefc des colonnes M à S, oû je désire repérer les 5
plus grandes valeurs de chacune des 7 colonnes.

Une solution consisterait à faire une MEFC pour chaque colonne, mais
j'aimerais bien ne pas alourdir encore le code...

Merci d'avance pour toute idée de simplification, lien, conseil...




Avatar
Thierryp
Bonjour,

ps : je réponds parce que je suis la cloche qui reste.......;-))))

@+ thierryp

------------------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet. (Courteline)
------------------------

Bonsoir, toutes et tous.

Vous vous êtes déjà tous envolés pour Rome ?
;-)

A moins que ma question ne soit incompréhensible ?

A tout hasard, je joins un exemple :
http://cjoint.com/?emvmTajRCJ

Le pb se situe sur la Mefc des colonnes M à S, oû je désire repérer les 5
plus grandes valeurs de chacune des 7 colonnes.

Une solution consisterait à faire une MEFC pour chaque colonne, mais
j'aimerais bien ne pas alourdir encore le code...

Merci d'avance pour toute idée de simplification, lien, conseil...




Avatar
Patrick BASTARD
Bonjour, *Thierryp*

Je comprends ta remarque, mais si, "à la mimine", il est possible
d'appliquer une MEFC sur une zone en jouant de manière délicate et subtile
avec les références absolue/relative, je serais surpris que VBA ne le
permette pas.
Mais c'est là que je bloque, et mes recherches sur Google n'ont, jusque là,
pas donné grand-chose.

En te remerciant de t'être intéressé à mon soucis,

--
Bien amicordialement,
P. Bastard, l'autre cloche.
;-)



Bonjour Patrick,

Sans avoir regardé ton fichier, une remarque "sémantique" : si tu veux
les 5 plus grandes valeurs de chaque colonne, il me semble que tu dois
avoir une MEFC par colonne; même si la macro qui applique la MEFC est
la même, il suffit d'appliquer un offset sur la colonne pour répéter
la macro.

@+ thierryp

------------------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet. (Courteline)
------------------------

Bonsoir, toutes et tous.

Vous vous êtes déjà tous envolés pour Rome ?
;-)

A moins que ma question ne soit incompréhensible ?

A tout hasard, je joins un exemple :
http://cjoint.com/?emvmTajRCJ

Le pb se situe sur la Mefc des colonnes M à S, oû je désire repérer
les 5 plus grandes valeurs de chacune des 7 colonnes.

Une solution consisterait à faire une MEFC pour chaque colonne, mais
j'aimerais bien ne pas alourdir encore le code...

Merci d'avance pour toute idée de simplification, lien, conseil...




Avatar
Thierryp
Bonjour,

J'ai essayé de jeter un couop d'oeil à ton fichier, mais bon il est un
peu tard et les journées sont longues !!
Dans ta boucle :
For Each c In ColMàS
' Une condition : Les 5 plus grands de chaque colonne en blanc gras
sur fond rouge :

'==================================================================================================== Mefc = "=$M$" & c.Row & ">=GRANDE.VALEUR($M$" & ColMàS.Row &
":$S$" & ColMàS(ColMàS.Count).Row & ";5)"

'===================================================================================================== c.FormatConditions.Add Type:=xlExpression, Formula1:=Mefc
c.FormatConditions(1).Interior.ColorIndex = 3
With c.FormatConditions(1).Font
.Bold = True
.ColorIndex = 2
End With
Next c

il faudrait que tu identifies le moment où tu changes de colonne en
comparant les adresses (row et column) pour incrémenter ton n° de
colonne et repartir dans ta boucle de MEFC. Dans la boucle actuelle, tu
cherches les plus grandes valeurs de la plage complète (M...:S....) sans
distinction de colonne.

Désolé de ne pouvoir t'aider plus....mais en fin de compte c'est
toujours le boss qui commande et je vais m'absenter quelques jours.

@+ thierryp

------------------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet. (Courteline)
------------------------

Bonjour, *Thierryp*

Je comprends ta remarque, mais si, "à la mimine", il est possible
d'appliquer une MEFC sur une zone en jouant de manière délicate et subtile
avec les références absolue/relative, je serais surpris que VBA ne le
permette pas.
Mais c'est là que je bloque, et mes recherches sur Google n'ont, jusque là,
pas donné grand-chose.

En te remerciant de t'être intéressé à mon soucis,