OVH Cloud OVH Cloud

Format conditionnel

2 réponses
Avatar
vpecum
Bonjour

Comment avec des formules (ou à l'aide de VBA) et la mise en forme
conditonnelle
résoudre le problème suivant:
en A1:A31 une série de dates
en b1:b31: MAJUSCULE(GAUCHE(TEXTE(DATE(ANNEE(A1);MOIS(A1);JOUR(A1);"jjj");1))
mise en forme conditionnelle pour plage a1:a31: =JOURSEM(A1;2)<6 ,
motif: rouge
je voudrais en c1:c31 créer une mise en forme conditonnelle qui
réalise ceci:
les cellules de la 1ère semaine --->couleur 1
" " 2ème semaine --->couleur 2
" 3ème semaine --->couleur 3
" 4ème semaine --->couleur 4
Par exemple si a1:a8 (avec a1 = lundi) les cellules passent en couleur
au prochain lundi, passent en couleur 2 etc .
Jusqu'alors je séche.
Si quelq'un pouvait me souffler un conseil pour que je puisse arriver
au résultat souhaité.

Merci

2 réponses

Avatar
FxM
Bonsoir,

N'ayant pas le neurone disposé à recherche une version VBA, voilà un
demi-contournement pour une MFEC :

Alt-F11 | insertion | module
Y copier la fonction perso qui suit (attention la limite du milieu
part de SEMISO et va jusqu'à +5)/7) et est à placer sur une seule ligne!)

Function SEMISO(D As Date)
SEMISO = Int((D - (DateSerial(Year(D - Weekday(D - 1) + 4), 1, 3) -
Weekday(DateSerial(Year(D - Weekday(D - 1) + 4), 1, 3))) + 5) / 7)
End Function

A1 à A31 : tes dates (hum pour les mois < 31 jours)
B1 à B31 : =MAJUSCULE(GAUCHE(TEXTE(A1;"jjj")))
Tu peux simplifier car date(annee(A1);mois(A1);jour(A1)) est A1 ;o)
Par ailleurs, exploitons le fait que =gauche(...) est implicitement
égal à =gauche(...;1)
C1 : =semiso(A1), à recopier jusqu'en C31. C'est le numéro de semaine
selon la norme ISO.

Ensuite commence le demi-contournement. Demi seulement vu que :
1) les mois ne commencent un lundi qu'une fois sur 7 et que certains
comportent 5 semaines partielles (exemple : du 01/08/03 au 31/08/03)
2) la MEFC ne permet que trois conditions.

Un moyen de contourner est d'accepter la même couleur pour les
semaines extrêmes du calendrier.
Sélectionner TOUT C1 à C31 et appliquer la couleur de fond pour les
semaines 1 à 5 (format | cellule | onglet motif). Ne pas
désélectionner. Format | Mise en forme conditionnelle :

Condition 1 :
la formule est ... =(semiso(A1)=semiso($A$1)+1)=VRAI
format ... au choix

Condition 2 :
la formule est ... =(semiso(A1)=semiso($A$1)+2)=VRAI
(Attention c'est +2 et non +1 !)
format ... au choix

Condition 3 :
la formule est ... =(semiso(A1)=semiso($A$1)+3)=VRAI
format ... au choix

Voili, voilou.

@+
FxM

















Bonjour

Comment avec des formules (ou à l'aide de VBA) et la mise en forme
conditonnelle
résoudre le problème suivant:
en A1:A31 une série de dates
en b1:b31: MAJUSCULE(GAUCHE(TEXTE(DATE(ANNEE(A1);MOIS(A1);JOUR(A1);"jjj");1))
mise en forme conditionnelle pour plage a1:a31: =JOURSEM(A1;2)<6 ,
motif: rouge
je voudrais en c1:c31 créer une mise en forme conditonnelle qui
réalise ceci:
les cellules de la 1ère semaine --->couleur 1
" " 2ème semaine --->couleur 2
" 3ème semaine --->couleur 3
" 4ème semaine --->couleur 4
Par exemple si a1:a8 (avec a1 = lundi) les cellules passent en couleur
au prochain lundi, passent en couleur 2 etc .
Jusqu'alors je séche.
Si quelq'un pouvait me souffler un conseil pour que je puisse arriver
au résultat souhaité.

Merci


Avatar
Bernard MAZAS
Salut xlator

"xlator" a écrit dans le message news:

Bonjour

Comment avec des formules (ou à l'aide de VBA) et la mise en forme
conditonnelle
résoudre le problème suivant:
en A1:A31 une série de dates


Une question : quand tu parles de série de dates, il s'agit bien de dates
consécutives ?

en b1:b31:
MAJUSCULE(GAUCHE(TEXTE(DATE(ANNEE(A1);MOIS(A1);JOUR(A1);"jjj");1))


Une remarque : ta formule peut être simplifiée en :

=MAJUSCULE(GAUCHE(TEXTE(A1;"jjj");1))

mise en forme conditionnelle pour plage a1:a31: =JOURSEM(A1;2)<6 ,
motif: rouge
je voudrais en c1:c31 créer une mise en forme conditonnelle qui
réalise ceci:
les cellules de la 1ère semaine --->couleur 1
" " 2ème semaine --->couleur 2
" 3ème semaine --->couleur 3
" 4ème semaine --->couleur 4


Une deuxième remarque : avec 31 dates, il y a cinq semaines. Avec une simple
MEFC tu peux aller jusqu'à 4 couleurs (donc 4 semaines), sinon, il y a des
solutions en VBA :
1) une couleur coul1 "de base" pour toute la plage C1:C31
2) une MEFC réglée comme suit également sur la plage C1:C31 :
condition 1 : "la formule est" ==NB.SI($B$1:B1;"L")=1 -> coul2
condition 2 : "la formule est" ==NB.SI($B$1:B1;"L")=2 -> coul3
condition 3 : "la formule est" ==NB.SI($B$1:B1;"L")=3 -> coul4

Tes cellules de la semaine 1, et au delà de la semaine 4 seront en coul1. Je
ne sais pas si cela te suffit.

Bernard