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é.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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é.
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
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
Salut xlator
"xlator" <vpecum@ifrance.com> a écrit dans le message news:
8be4fb87.0309021137.347968c@posting.google.com...
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.
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.