OVH Cloud OVH Cloud

Mefc sur une partie de plage aléatoire en VBA.

19 réponses
Avatar
Patrick BASTARD
Bonsoir à tou(te)s

Je n'arrive pas à écrire le code qui me permettrait, à partir de la
sélection d'une zone (pas toujours la même, mais même nb de colonnes, nb de
lignes différent), d' appliquer une MEFC sur la première colonne dans cette
zone, appliquer une autre MEFC de la 3° à la 5° colonne dans cette zone.
Pas de soucis pour définir les MEFC, mais plutôt pour appliquer ces MEFC aux
parties désirées de la zone sélectionnée.
(Je ne souhaite pas sélectionner manuellement les différentes parties de ma
zone, afin d'automatiser cette opération au maximum.)

Un p'tit coup d'main me serait bien utile, et mes remerciements anticipés
vous sont d'ores et déjà acquis.


--
Bien amicordialement,
P. Bastard

10 réponses

1 2
Avatar
Norvi
Bonsoir,

N'ayant pas plus de detail sur le structure du classeur, ni des
tableaux, ni des critère de selection de la zone ou appliquer la mefc,
je ne peux que te donner les codes pour créer cette mise en forme par
VBA :
With Range(XXX).FormatConditions _
.Add(xlCellValue/xlExpression,
xlBetween/xlNotBetween/xlEqual/xlNotEqual/xlGreater/xlLess/xlGreaterEqual/x lLessEqual,
"=soit une formule, si ti selectionnes xlExpression, soit des
critères")
With .LesCritereDeFormat (Interior.ColorIndex, Border, Font...)
.LesDetailsDuFormat
End With
End With

Bonne soirée,

N.
Avatar
Patrick BASTARD
Bonjour, *Norvi*

Et merci pour ton intervention.

J'ai peur de n'avoir pas été assez clair :
La zone est déjà sélectionnée (par exemple A256:G325, ou A357 : G400)
Je sais appliquer une MEFC.
Ce que je cherche, c'est la syntaxe pour sélectionner par exemple
la partie de colonne A dans cette zone(A256 :A325 dans le 1° exemple,
A357:A400 dans le 2°), pour lui appliquer la 1° MEFC,
la partie des colonnes B et C dans cette zone (B256:C325 dans le 1° exemple,
B357:C400) pour lui appliquer la 2° MEFC.
Est-ce plus explicite ?

--
Bien amicordialement,
P. Bastard

Bonsoir,

N'ayant pas plus de detail sur le structure du classeur, ni des
tableaux, ni des critère de selection de la zone ou appliquer la mefc,
je ne peux que te donner les codes pour créer cette mise en forme par
VBA :
With Range(XXX).FormatConditions _
.Add(xlCellValue/xlExpression,
xlBetween/xlNotBetween/xlEqual/xlNotEqual/xlGreater/xlLess/xlGreaterEqual/xlLessEqual,
"=soit une formule, si ti selectionnes xlExpression, soit des
critères")
With .LesCritereDeFormat (Interior.ColorIndex, Border, Font...)
.LesDetailsDuFormat
End With
End With

Bonne soirée,

N.


Avatar
Norvi
Bonsoir,

Alors comme ça :
'Ca te selectionne la troisième colonne de ta selection. Pour la
premiere colonne, enlève le + 2, pour la deuxième, mets + 1, la
troisième + 2, etc...

Colonne = Selection.Column
NbColonne = Selection.Rows.Count
Ligne = Selection.Row
NbLigne = Selection.Rows.Count

With Range(Cells(Ligne, Colonne + 2), Cells(NbLigne + Ligne - 1,
Colonne + 2)).FormatConditions
......

Bonne soirée,

N.
Avatar
Thierryp
Bonjour Patrick,

Une ébauche de solution ci-dessous :

Sub PlageSelection()
Set plg = Selection
With plg
Plg_Adresse = .Address
Plg_Première = .Item(1).Address
Plg_Dernière = .Item(plg.Count).Address
Nbre_Lignes = .Item(plg.Count).Row - .Item(1).Row
End With
Range(Range(Plg_Première), Range(Plg_Première).Offset(Nbre_Lignes,
0).Address).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual,
Formula1:="10"
Selection.FormatConditions(1).Interior.ColorIndex = 8
End Sub

Tu sélectionnes une zone, ce bout de proc sélectionnes la 1ère colonne
et applique un format conditionnel.

Je devines que tu n'auras pas de mal à adapter..... :-))))))))

@+ thierryp

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

Bonsoir à tou(te)s

Je n'arrive pas à écrire le code qui me permettrait, à partir de la
sélection d'une zone (pas toujours la même, mais même nb de colonnes, nb de
lignes différent), d' appliquer une MEFC sur la première colonne dans cette
zone, appliquer une autre MEFC de la 3° à la 5° colonne dans cette zone.
Pas de soucis pour définir les MEFC, mais plutôt pour appliquer ces MEFC aux
parties désirées de la zone sélectionnée.
(Je ne souhaite pas sélectionner manuellement les différentes parties de ma
zone, afin d'automatiser cette opération au maximum.)

Un p'tit coup d'main me serait bien utile, et mes remerciements anticipés
vous sont d'ores et déjà acquis.




Avatar
Patrick BASTARD
Bonjour, *Norvi*

Ta contribution, et celle de ThierryP devraient me permettre de m'en sortir,
"fingers in the nose " -Pardon, Clément.

Merci.
--
Bien amicordialement,
P. Bastard

Bonsoir,

Alors comme ça :
'Ca te selectionne la troisième colonne de ta selection. Pour la
premiere colonne, enlève le + 2, pour la deuxième, mets + 1, la
troisième + 2, etc...

Colonne = Selection.Column
NbColonne = Selection.Rows.Count
Ligne = Selection.Row
NbLigne = Selection.Rows.Count

With Range(Cells(Ligne, Colonne + 2), Cells(NbLigne + Ligne - 1,
Colonne + 2)).FormatConditions
......

Bonne soirée,

N.


Avatar
Patrick BASTARD
Bonjour, *Thierryp*


Ta contribution, et celle de Norvi devraient me permettre de m'en sortir,
"fingers in the nose " -Re-Pardon, Re-Clément.

Merci.
--
Bien amicordialement,
P. Bastard

Bonjour Patrick,

Une ébauche de solution ci-dessous :

Sub PlageSelection()
Set plg = Selection
With plg
Plg_Adresse = .Address
Plg_Première = .Item(1).Address
Plg_Dernière = .Item(plg.Count).Address
Nbre_Lignes = .Item(plg.Count).Row - .Item(1).Row
End With
Range(Range(Plg_Première), Range(Plg_Première).Offset(Nbre_Lignes,
0).Address).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual,
Formula1:="10"
Selection.FormatConditions(1).Interior.ColorIndex = 8
End Sub

Tu sélectionnes une zone, ce bout de proc sélectionnes la 1ère colonne
et applique un format conditionnel.

Je devines que tu n'auras pas de mal à adapter..... :-))))))))

@+ thierryp

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

Bonsoir à tou(te)s

Je n'arrive pas à écrire le code qui me permettrait, à partir de la
sélection d'une zone (pas toujours la même, mais même nb de
colonnes, nb de lignes différent), d' appliquer une MEFC sur la
première colonne dans cette zone, appliquer une autre MEFC de la 3°
à la 5° colonne dans cette zone. Pas de soucis pour définir les
MEFC, mais plutôt pour appliquer ces MEFC aux parties désirées de la
zone sélectionnée. (Je ne souhaite pas sélectionner manuellement les
différentes parties de ma zone, afin d'automatiser cette opération
au maximum.) Un p'tit coup d'main me serait bien utile, et mes
remerciements
anticipés vous sont d'ores et déjà acquis.




Avatar
Thierryp
Bonjour,

De rien, aider ceux qui aident est toujours un plaisir :-))))))))))))))

@+ thierryp

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

Bonjour, *Thierryp*


Ta contribution, et celle de Norvi devraient me permettre de m'en sortir,
"fingers in the nose " -Re-Pardon, Re-Clément.

Merci.


Avatar
Patrick BASTARD
Bonjour, *Thierryp*

;-)

Bonjour,

De rien, aider ceux qui aident est toujours un plaisir
:-))))))))))))))
@+ thierryp

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

Bonjour, *Thierryp*


Ta contribution, et celle de Norvi devraient me permettre de m'en
sortir, "fingers in the nose " -Re-Pardon, Re-Clément.

Merci.




Avatar
JpPradier
Bonsoir Patrick

Une autre possibilité :

Selection.Columns("A").FormatConditions.Add(....

Selection.Columns("C:E").FormatConditions.Add(...


j-p
Avatar
Patrick BASTARD
Bonsoir, *JpP*


Tout simplement ?
Je m'empresse de tester dès demain matin.

Merci, beaucoup.

--
Bien amicordialement,
P. Bastard


Bonsoir Patrick

Une autre possibilité :

Selection.Columns("A").FormatConditions.Add(....

Selection.Columns("C:E").FormatConditions.Add(...


j-p


1 2