OVH Cloud OVH Cloud

Mise en form conditionnelle VBA 5 conditions

11 réponses
Avatar
Mardellat
je souhaite cr=E9er une mise en forme conditionelle
a plus de trois conditions en VBA
Le code suivant ne fonctionne pas , comme si la=20
fonction MFC refusait d'acc=E9der au objets de la feuille .=20
Pourtant Application.Caller.Address renivoie bien la valeur
de la cellule appelante dans laquele j'ai ins=E9r=E9 la formule
=3DMFC(25) .

Une id=E9e de r=E9solution ou un contournement ?


Function MFC(Valeur As Variant) As Variant
' Cellule =3D Replace(Application.Caller.Address, "$", "")
=20
' Application.Caller.Address d=E9signe l'adresse absolue=20
' ( $A$1 ) de la cellule ou est ins=E9r=E9e la formule =3DMFC(25)
'

If Valeur >=3D 100 Then

Range(Application.Caller.Address).Interior.Color =3D
RGB(100, 100, 100)

ElseIf Valeur >=3D 75 Then
Range(Application.Caller.Address).Interior.Color =3D
RGB(75, 75, 75)
=20
ElseIf Valeur >=3D 50 Then
Range(Application.Caller.Address).Interior.Color =3D
RGB(50, 50, 50)

Else
Range(Application.Caller.Address).Interior.Color =3D
RGB(10, 10, 10)
End If
MFC =3D Valeur
End Function

10 réponses

1 2
Avatar
LeSteph
Bonsoir,
oui , il y a cela sur excelabo pour plus de conditions!

lsteph

"Mardellat" a écrit dans le message de
news:349401c4a280$526a2c60$
je souhaite créer une mise en forme conditionelle
a plus de trois conditions en VBA
Le code suivant ne fonctionne pas , comme si la
fonction MFC refusait d'accéder au objets de la feuille .
Pourtant Application.Caller.Address renivoie bien la valeur
de la cellule appelante dans laquele j'ai inséré la formule
=MFC(25) .

Une idée de résolution ou un contournement ?


Function MFC(Valeur As Variant) As Variant
' Cellule = Replace(Application.Caller.Address, "$", "")

' Application.Caller.Address désigne l'adresse absolue
' ( $A$1 ) de la cellule ou est insérée la formule =MFC(25)
'

If Valeur >= 100 Then

Range(Application.Caller.Address).Interior.Color RGB(100, 100, 100)

ElseIf Valeur >= 75 Then
Range(Application.Caller.Address).Interior.Color RGB(75, 75, 75)

ElseIf Valeur >= 50 Then
Range(Application.Caller.Address).Interior.Color RGB(50, 50, 50)

Else
Range(Application.Caller.Address).Interior.Color RGB(10, 10, 10)
End If
MFC = Valeur
End Function
Avatar
AV
Je ne vois rien qui s'oppose à une MEFC car tu n'as que 3 conditions !
La 4° est assimilée au format par défaut !

AV
Avatar
sabatier
un coup à s'immoler par défi....
avant que GD n'intervienne
jps

"AV" a écrit dans le message de
news:%
Je ne vois rien qui s'oppose à une MEFC car tu n'as que 3 conditions !
La 4° est assimilée au format par défaut !

AV




Avatar
LeSteph
Bonjour JP, AV,... tous..
;-))))
Faut toujours que quelqu'un retonde la pelouse ,
même quand il n'y a plus d'herbe!
A la vôtr!

"sabatier" a écrit dans le message
de news:
un coup à s'immoler par défi....
avant que GD n'intervienne
jps

"AV" a écrit dans le message de
news:%
Je ne vois rien qui s'oppose à une MEFC car tu n'as que 3 conditions !
La 4° est assimilée au format par défaut !

AV








Avatar
Il reste des brins qui rebiquent sur la pelouse. J'ai bien
vu dans excelabo le code listé plus bas . Le problème , ou
plutot la limitation c'est :
1) qu'il effectue une MEFC sur toutes les plages de la feuille
2) que la macro doit être déclarée dans toutes les feuilles
qui nécéssitent ce type particulier de MEFC

J'espérait qu'il serait possible de disposer dune fonction
"universelle" qui fixerait des couleurs en fonction de la
valeur du paramètre passé à la fonction:
Ex :
MEFC(1) affiche "1" sur fond vert
MEFC(2) affiche "2" sur fond jaune
MEFC(3) affiche "3" sur fond orange
MEFC(4) affiche "4" sur fond rouge
MEFC(5) affiche "5" sur fond gris

au gré des couleur illimitées affectées à des plages
de valeur du paramètre de la fonction .

Pas si simple que ça ....



Private Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range)
Select Case UCase(Target) 'UCASE = convertion de la
frappe en
majuscule
Case "ZAZA"
With Selection.Interior
.ColorIndex = 7
.Pattern = xlSolid
End With
Case "ZEZETTE"
With Selection.Interior
.ColorIndex = 8
.Pattern = xlSolid
End With
Case "JEAN-PAUL"
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
Case "PAUL"
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Select

End Sub

-----Message d'origine-----
Bonjour JP, AV,... tous..
;-))))
Faut toujours que quelqu'un retonde la pelouse ,
même quand il n'y a plus d'herbe!
A la vôtr!

"sabatier" a
écrit dans le message

de news:
un coup à s'immoler par défi....
avant que GD n'intervienne
jps

"AV" a écrit dans le message de
news:%
Je ne vois rien qui s'oppose à une MEFC car tu n'as
que 3 conditions !



La 4° est assimilée au format par défaut !

AV








.





Avatar
LeSteph
Re,
Tu noteras que ce n'est pas VBA qui limite les MEFC mais
le menu d'excel.
Alors peut être que si tu adaptais le select au nombre de case
souhaités
et que plus particulièrement dans un évènement de feuille
sur target tu déterminais
les zones que tu veux impacter par un format....
Et cette fois cette métaphore est pour toi...
tu obtiendrais autant de petites fleurs sur ta pelouse que tu le souhaite..
alors pardon et
Merci encore!!!


a écrit dans le message de
news:1ec101c4a2f6$f5c9bcb0$
Il reste des brins qui rebiquent sur la pelouse. J'ai bien
vu dans excelabo le code listé plus bas . Le problème , ou
plutot la limitation c'est :
1) qu'il effectue une MEFC sur toutes les plages de la feuille
2) que la macro doit être déclarée dans toutes les feuilles
qui nécéssitent ce type particulier de MEFC

J'espérait qu'il serait possible de disposer dune fonction
"universelle" qui fixerait des couleurs en fonction de la
valeur du paramètre passé à la fonction:
Ex :
MEFC(1) affiche "1" sur fond vert
MEFC(2) affiche "2" sur fond jaune
MEFC(3) affiche "3" sur fond orange
MEFC(4) affiche "4" sur fond rouge
MEFC(5) affiche "5" sur fond gris

au gré des couleur illimitées affectées à des plages
de valeur du paramètre de la fonction .

Pas si simple que ça ....



Private Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range)
Select Case UCase(Target) 'UCASE = convertion de la
frappe en
majuscule
Case "ZAZA"
With Selection.Interior
.ColorIndex = 7
.Pattern = xlSolid
End With
Case "ZEZETTE"
With Selection.Interior
.ColorIndex = 8
.Pattern = xlSolid
End With
Case "JEAN-PAUL"
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
Case "PAUL"
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Select

End Sub

-----Message d'origine-----
Bonjour JP, AV,... tous..
;-))))
Faut toujours que quelqu'un retonde la pelouse ,
même quand il n'y a plus d'herbe!
A la vôtr!

"sabatier" a
écrit dans le message

de news:
un coup à s'immoler par défi....
avant que GD n'intervienne
jps

"AV" a écrit dans le message de
news:%
Je ne vois rien qui s'oppose à une MEFC car tu n'as
que 3 conditions !



La 4° est assimilée au format par défaut !

AV








.





Avatar
AV
Si tu changes la question, il faut évidemment changer la réponse !

AV
Avatar
GD
;-)))
Non puisque c'est comme ça je n'interviendrai pas Na !!!
Zut ...
Pif et mot laid : un dard à six coups
7 11 10 5 6 1 9 8 3 4 2
raté ?
@+

dans news:,
sabatier typed:
un coup à s'immoler par défi....
avant que GD n'intervienne
jps

"AV" a écrit dans le message de
news:%
Je ne vois rien qui s'oppose à une MEFC car tu n'as que 3 conditions
! La 4° est assimilée au format par défaut !

AV




Avatar
sabatier
comprends rien, GD
moi ma CPT se référait à assimiler par défaut...
et ces chiffres? ça veut dire quoi?
donc pour être raté, c'est raté, et pour moi et pour toi...
à suivre
jps

"GD" a écrit dans le message de
news:
;-)))
Non puisque c'est comme ça je n'interviendrai pas Na !!!
Zut ...
Pif et mot laid : un dard à six coups
7 11 10 5 6 1 9 8 3 4 2
raté ?
@+

dans news:,
sabatier typed:
un coup à s'immoler par défi....
avant que GD n'intervienne
jps

"AV" a écrit dans le message de
news:%
Je ne vois rien qui s'oppose à une MEFC car tu n'as que 3 conditions
! La 4° est assimilée au format par défaut !

AV








Avatar
LeSteph
..bsr..
peut être ubund quelque chr
pas essayé juste de déchiffrer en lecture
mai car non imprimables alors peut être
conversion hexa avec un algo sur le pif et une
clé binaire sur le dard à six coups...
aîe a¨ie
sinon pour la tondeuse c'est raté aussi...
...d'ailleurs..
c'était simplement par retour essayer d'être aussi clair...
bonne soirée à vous trois et à tous....
lSteph

"sabatier" a écrit dans le message
de news:
comprends rien, GD
moi ma CPT se référait à assimiler par défaut...
et ces chiffres? ça veut dire quoi?
donc pour être raté, c'est raté, et pour moi et pour toi...
à suivre
jps

"GD" a écrit dans le message de
news:
;-)))
Non puisque c'est comme ça je n'interviendrai pas Na !!!
Zut ...
Pif et mot laid : un dard à six coups
7 11 10 5 6 1 9 8 3 4 2
raté ?
@+

dans news:,
sabatier typed:
un coup à s'immoler par défi....
avant que GD n'intervienne
jps

"AV" a écrit dans le message de
news:%
Je ne vois rien qui s'oppose à une MEFC car tu n'as que 3 conditions
! La 4° est assimilée au format par défaut !

AV












1 2