OVH Cloud OVH Cloud

MEFC en fonction du changement de semaine

7 réponses
Avatar
mcleroy
Bonjour

J'essaie que dans une plage de cellues contenant les dates
du mois en cours (ou d'un mois chois par l'utilisateur)
les jours ouvrés soient d'une couleur qui change pour chaque
changement de semaine du mois.
J'ai pu arriver à ce résultat partiellement:
Formule pour les jours ouvrés:
=JOURSEM($b2;2)<6
Sauf qu'ici la couleur est la même pour toutes les semaines
Alors j'ai ajouté dans la colonne c les valeurs a b c d e
Formule en C2: par exemple
=SI(JOURSEM(B2;2<6;"a";SI(JOURSEM(b2;2>6; et c'est la que je suis
coincé
et que j'en appelle non pas à la tendresse mais à votre aide.
Tout en continuant à essayer de me décoincer avec mes propres moyens.

Merci à eux qui pourront m'aider.

Marc.

7 réponses

Avatar
Ellimac
Bonjour,

Je suis parti avec des cellules ayant déjà une couleur de
fond qui correspondra à la semaine n°3. Puis dans la MFC
j'applique 3 condition (cond1 pour semaine 1 et 5, cond2
pour semaine 2 et cond3 pour semaine 3).
cond1 :
=OU(ARRONDI(($A2+1-DATE(2003;1;1))/7;0)+1=ARRONDI(($A$2+1-
DATE(2003;1;1))/7;0)+1;ARRONDI(($A2+1-DATE(2003;1;1))/7;0)
+1=ARRONDI(($A$2+1-DATE(2003;1;1))/7;0)+1+4)
cond2 :
=ARRONDI(($A2+1-DATE(2003;1;1))/7;0)+1=ARRONDI(($A$2+1-DATE
(2003;1;1))/7;0)+2
cond3 :
=ARRONDI(($A2+1-DATE(2003;1;1))/7;0)+1=ARRONDI(($A$2+1-DATE
(2003;1;1))/7;0)+3

Camille

-----Message d'origine-----
Bonjour

J'essaie que dans une plage de cellues contenant les dates
du mois en cours (ou d'un mois chois par l'utilisateur)
les jours ouvrés soient d'une couleur qui change pour
chaque

changement de semaine du mois.
J'ai pu arriver à ce résultat partiellement:
Formule pour les jours ouvrés:
=JOURSEM($b2;2)<6
Sauf qu'ici la couleur est la même pour toutes les
semaines

Alors j'ai ajouté dans la colonne c les valeurs a b c d e
Formule en C2: par exemple
=SI(JOURSEM(B2;2<6;"a";SI(JOURSEM(b2;2>6; et c'est la
que je suis

coincé
et que j'en appelle non pas à la tendresse mais à votre
aide.

Tout en continuant à essayer de me décoincer avec mes
propres moyens.


Merci à eux qui pourront m'aider.

Marc.
.



Avatar
mcleroy
Je viens d'essayer et effectivement le changement de couleur intervient mais
si on change de mois la cycle de couleur est "aléatoire"
Je m'explique:
J'ai pris comme date de départ 01/09/03 en a2 (la plage a2:a31 est coloriée
en jaune par défaut)
La MEFC reprend les formules de Camille (merci à lui)
Si je passe en octobre en a33, les couleurs ne reprennent pas du début.
En résumé si je saisi en a2=AUJOURDHUI(), la première semaine du mois aura
une couleur (couleur1), la deuxiéme une autre (couleur2) etc etc
Quand le mois change, la première semaine du mois (donc dans ce cas
MOIS(AUJOURDHUI())+1) aura la couleur 1, la deuxième couleur 2 etc etc
C'est ce cycle que de couleurs que je n'arrive pas à reproduire avec une
MEFC
J'ai pensé à la formule suivante: SI(JOURSEM(A2;2)=1;"W";"") dans ce cas si
a2 est un lundi, a2:A6 égale couleur1
ensuite si ET(NB.SI(A2:A31;"W);SI(JOURSEM(A7 et la ca colle plus car cela ne
sera "dynamique"
Je retourne réfléchir à la question
Je remercie Camille de son aide.

Marc


Je suis parti avec des cellules ayant déjà une couleur de
fond qui correspondra à la semaine n°3. Puis dans la MFC
j'applique 3 condition (cond1 pour semaine 1 et 5, cond2
pour semaine 2 et cond3 pour semaine 3).
cond1 :
=OU(ARRONDI(($A2+1-DATE(2003;1;1))/7;0)+1=ARRONDI(($A$2+1-
DATE(2003;1;1))/7;0)+1;ARRONDI(($A2+1-DATE(2003;1;1))/7;0)
+1=ARRONDI(($A$2+1-DATE(2003;1;1))/7;0)+1+4)
cond2 :
=ARRONDI(($A2+1-DATE(2003;1;1))/7;0)+1=ARRONDI(($A$2+1-DATE
(2003;1;1))/7;0)+2
cond3 :
=ARRONDI(($A2+1-DATE(2003;1;1))/7;0)+1=ARRONDI(($A$2+1-DATE
(2003;1;1))/7;0)+3

Camille

-----Message d'origine-----
Bonjour

J'essaie que dans une plage de cellues contenant les dates
du mois en cours (ou d'un mois chois par l'utilisateur)
les jours ouvrés soient d'une couleur qui change pour
chaque

changement de semaine du mois.
J'ai pu arriver à ce résultat partiellement:
Formule pour les jours ouvrés:
=JOURSEM($b2;2)<6
Sauf qu'ici la couleur est la même pour toutes les
semaines

Alors j'ai ajouté dans la colonne c les valeurs a b c d e
Formule en C2: par exemple
=SI(JOURSEM(B2;2<6;"a";SI(JOURSEM(b2;2>6; et c'est la
que je suis

coincé
et que j'en appelle non pas à la tendresse mais à votre
aide.

Tout en continuant à essayer de me décoincer avec mes
propres moyens.


Merci à eux qui pourront m'aider.

Marc.
.



Avatar
patrick lyon
un truc qui va bien dans les cellules
c'est mod(no.semaine(xx;3)
ça te renvoi des 0, 1 , 2 dans tes cellules
donc 3 couleurs
le pb c'est que no.semaine est une macro complementaire
il semblerait (chez moi) que les mfc n'aiment pas ces macros


"mcleroy" a écrit dans le message news:

Un mal de tête plus tard
J'en suis là:
En A1 une date quelconque (saisie manuellement)
En A2:A31 =Ax+1
en B1: =MAJUSCULE(GAUCHE(TEXTE(A2;"jjj");1)) et ce jusqu'en B31
Fond pa défaut de B1:B31= couleur1
MEFC
Condition1
=NB.SI($B$1:B1;"L")=1 couleur 2
Condition2
=NB.SI($B$1:B1;"L")=2 couleur 3
Condition3
=NB.SI($B$1:B1;"L")=3 couleur 4
MEFC recopié avec le "pinceau" jusqu'en B31

La ca ne fonctionne que pour les mois ne contenant que 4 lundis.
Et de nouveau, je vois plus trop comment faire sans VBA.

Si quelqu'un peut me tirer de ce mauvais pas, je l'en remercie.

(Que ce soit avec une MEFC et des formules ou en VBA)
Quant à moi, je retourne travailler tout en réfléchissant au problème
et ce malgré ma migraine.

PS:
(Quelles aptitudes cérébrales doit-on posséder pour appréhender le VBA
dans

toute sa splendeur?
Etre "matheux", logique, sensible à la syntaxe des langages de
programmation?
J'essaye de m'y mettre, mais souvent les macros ou les formules que je
"ponds" sont
loin d'avoir une efficacité optimum, ca ressemble à du bricolage...)

Marc.




Avatar
Daniel.M
Salut Marc,

A)
5 semaines possibles par mois ==> 5 couleurs ==> on oublie les MEF
conditionnelles (limitées à 3 tests + 1 coul de base, donc insuffisant).

Il faudra procéder par changement à la feuille (événement Worksheet_Change),
voir ci-dessous.

B)
Tu réfères à une définition 'absolue' des semaines (la meilleure page qui
explique les différentes façons de voir les semaines a été écrite en
anglais:
http://www.cpearson.com/excel/weeknum.htm)

Pour une date en A1, la formule que tu cherches:
=MIN(MOD(ENT((JOUR(A1-{7;0})-{1;8}+JOURSEM(A1-JOUR(A1-{7;0})+6))/7);5))+1

En VBA (à mettre dans un module standard), pour la même fonctionnalité:

Public Function NoSemDansMois(d As Date) As Integer
Dim LundiPrec As Date, NewDay As Date
LundiPrec = d - Weekday(d - 1) + 1
If Day(LundiPrec) > Day(d) Then
NewDay = d - 7 ' d est dans une sem du mois prec
Else
NewDay = d
End If

NoSemDansMois = Int((d - (NewDay - Day(NewDay) + 1 - _
Weekday(NewDay - Day(NewDay) + 6))) _
/ 7)
End Function


Code d'activation selon les changements (à mettre dans le code de la
feuille ==> très important!). Et bien sûr, tu changes les numéros de couleur
de façon à ce qu'elles te plaisent.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target(1, 1).Column <> 1 Then Exit Sub
If IsDate(Target(1, 1)) Then
Select Case NoSemDansMois(Target(1, 1))
Case 1: Target.Interior.ColorIndex = 6
Case 2: Target.Interior.ColorIndex = 10
Case 3: Target.Interior.ColorIndex = 25
Case 4: Target.Interior.ColorIndex = 35
Case 5: Target.Interior.ColorIndex = 45
Case Else:
Target.Interior.ColorIndex = xlNone
End Select
End If
End Sub

Salutations,

Daniel M.

"mcleroy" wrote in message
news:
Merci pour cette formule qui fonctionne mais...
Il faut que la couleur fasse un cycle selon les semaines en partant de la
première semaine du mois
exemple:
01/09/03= semaine N°1 avec une couleur 1
08/09/03= semaine N°2 avec une couleur 2
etc etc
donc logiquement on devrait pouvoir avoir
06/10/03 =semaine N°2 donc couleur 2 (la même que l'on avait pour la
semaine

du 08/09/03)
Pour simplifier
Pour chaque mois de l'année (en fonction d'une date x saisie dans une
cellule en A1 par exemple)
Les cellules correspondant à la 1ere semaine du mois de A1 prennent la
couleur1
" " 2ème " "
de A1 prennent la couleur2
et ainsi de suite pour tout le mois
Et quand on change de mois
Les cellules correspondant à la 1ère semaine du mois(A1) +1 prennent à
nouveau la couleur 1 etc etc
Ex:
semaine du 28/07/03
correspond à la semaine N°5 du mois de juillet donc couleur5
le 01/08/03 qui commence le mois d'aout garde la couleur N°5 ainsi que le
02/08 et 03/08/03
La première semaine complète du mois d'aout qui commence le 04/08/03 prend
donc la couleur 1
et ainsi de suite.
J'espère que mes explications seront comprises.
Merci de votre aide

Marc


Avatar
Frédo P.
Voici une Formule de calcul du N° de Sem. au format Européen de Laurent
Longre alias LL : à placer dans un module
Function Nsemaine(dat As Date) 'LL
Dim t As Long
t = DateSerial(Year(dat + (8 - WeekDay(dat)) Mod 7 - 3), 1, 1)
Nsemaine = ((dat - t - 3 + (WeekDay(t) + 1) Mod 7)) 7 + 1
End Function
Ensuite j'ai cette formule à placer par ex. en colonne A:A, en B:B les dates
pour avoir le bon N° de semaine du Mois.
SI(Nsemaine(B2)-Nsemaine(DATEVAL("01/" &
DROITE(TEXTE(100+MOIS(B2);0);2)&"/"&ANNEE(B2))-1)=0;A1;Nsemaine(B2)-Nsemaine
(DATEVAL("01/" &
DROITE(TEXTE(100+MOIS(B2);0);2)&"/"&ANNEE(B2))-1))+(ET(Nsemaine(B2)=1;JOUR(B
2)>25))*52
Vient ensuite la couleur , code à placer dans le code de la feuille:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Target.Offset(0, -1).Select
With Selection.Interior
.ColorIndex = Target.Offset(0, -1).Value + 2
.Pattern = xlSolid
End With
End Sub

--

Fred
"mcleroy" a écrit dans le message de news:

Merci pour cette formule qui fonctionne mais...
Il faut que la couleur fasse un cycle selon les semaines en partant de la
première semaine du mois
exemple:
01/09/03= semaine N°1 avec une couleur 1
08/09/03= semaine N°2 avec une couleur 2
etc etc
donc logiquement on devrait pouvoir avoir
06/10/03 =semaine N°2 donc couleur 2 (la même que l'on avait pour la
semaine

du 08/09/03)
Pour simplifier
Pour chaque mois de l'année (en fonction d'une date x saisie dans une
cellule en A1 par exemple)
Les cellules correspondant à la 1ere semaine du mois de A1 prennent la
couleur1
" " 2ème " "
de A1 prennent la couleur2
et ainsi de suite pour tout le mois
Et quand on change de mois
Les cellules correspondant à la 1ère semaine du mois(A1) +1 prennent à
nouveau la couleur 1 etc etc
Ex:
semaine du 28/07/03
correspond à la semaine N°5 du mois de juillet donc couleur5
le 01/08/03 qui commence le mois d'aout garde la couleur N°5 ainsi que le
02/08 et 03/08/03
La première semaine complète du mois d'aout qui commence le 04/08/03 prend
donc la couleur 1
et ainsi de suite.
J'espère que mes explications seront comprises.
Merci de votre aide

Marc


un truc qui va bien dans les cellules
c'est mod(no.semaine(xx;3)
ça te renvoi des 0, 1 , 2 dans tes cellules
donc 3 couleurs
le pb c'est que no.semaine est une macro complementaire
il semblerait (chez moi) que les mfc n'aiment pas ces macros


"mcleroy" a écrit dans le message news:

Un mal de tête plus tard
J'en suis là:
En A1 une date quelconque (saisie manuellement)
En A2:A31 =Ax+1
en B1: =MAJUSCULE(GAUCHE(TEXTE(A2;"jjj");1)) et ce jusqu'en B31
Fond pa défaut de B1:B31= couleur1
MEFC
Condition1
=NB.SI($B$1:B1;"L")=1 couleur 2
Condition2
=NB.SI($B$1:B1;"L")=2 couleur 3
Condition3
=NB.SI($B$1:B1;"L")=3 couleur 4
MEFC recopié avec le "pinceau" jusqu'en B31

La ca ne fonctionne que pour les mois ne contenant que 4 lundis.
Et de nouveau, je vois plus trop comment faire sans VBA.

Si quelqu'un peut me tirer de ce mauvais pas, je l'en remercie.

(Que ce soit avec une MEFC et des formules ou en VBA)
Quant à moi, je retourne travailler tout en réfléchissant au problème
et ce malgré ma migraine.

PS:
(Quelles aptitudes cérébrales doit-on posséder pour appréhender le VBA
dans

toute sa splendeur?
Etre "matheux", logique, sensible à la syntaxe des langages de
programmation?
J'essaye de m'y mettre, mais souvent les macros ou les formules que je
"ponds" sont
loin d'avoir une efficacité optimum, ca ressemble à du bricolage...)

Marc.












Avatar
FxM
marc wrote:

Bonjour

J'essaie que dans une plage de cellues contenant les dates
du mois en cours (ou d'un mois chois par l'utilisateur)
les jours ouvrés soient d'une couleur qui change pour chaque
changement de semaine du mois.
J'ai pu arriver à ce résultat partiellement:
Formule pour les jours ouvrés:
=JOURSEM($b2;2)<6
Sauf qu'ici la couleur est la même pour toutes les semaines
Alors j'ai ajouté dans la colonne c les valeurs a b c d e
Formule en C2: par exemple
=SI(JOURSEM(B2;2<6;"a";SI(JOURSEM(b2;2>6; et c'est la que je suis
coincé
et que j'en appelle non pas à la tendresse mais à votre aide.
Tout en continuant à essayer de me décoincer avec mes propres moyens.


Bonsoir Marc,

Un fil avait été entamé le 17 août par un certain Doc sur le même
sujet ...
http://www.google.fr/groups?hl=fr&lr=&ie=UTF-8&oe=UTF-8&threadm=O1zodwQaDHA.2588%40TK2MSFTNGP09.phx.gbl&rnum=2&prev=/groups%3Fas_q%3D52%252C%252053%2520ou%252054%26ie%3DUTF-8%26oe%3DUTF-8%26as_ugroup%3D*fr.excel%26lr%3D%26num%3D100%26as_scoring%3Dd%26hl%3Dfr

@+
FxM

Avatar
mcleroy
Je republie ce message car j'ai du le mettre au mauvais endroit

Bonjour et merci à tous pour vos réponses
Je commence à m'en sortir

Pour une date en A1, la formule que tu cherches:
=MIN(MOD(ENT((JOUR(A1-{7;0})-{1;8}+JOURSEM(A1-JOUR(A1-{7;0})+6))/7);5))+1
(J'essaye de comprendre ce que fait cette formule, est-il posible à son

auteur de l'expliquer plus en détail, svp)

Je n'ai pas encore essayé la function VBA équivalente à la formule
ci-dessus.

Pour les couleurs, j'arrive à comprende cette macro ci-dessous (merci à

Daniel. M)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target(1, 1).Column <> 1 Then Exit Sub
If IsDate(Target(1, 1)) Then
Select Case NoSemDansMois(Target(1, 1))
Case 1: Target.Interior.ColorIndex = 6
Case 2: Target.Interior.ColorIndex = 10
Case 3: Target.Interior.ColorIndex = 25
Case 4: Target.Interior.ColorIndex = 35
Case 5: Target.Interior.ColorIndex = 45
Case Else:
Target.Interior.ColorIndex = xlNone
End Select
End If
End Sub

Je continue à avoir un souci.

Cette feuille de calcul que j'essaye (avec votre aide) de mettre en place
doit servir de feuille de planning sur le principe suivant:
Pour un mois donné (soit celui en cours soit selon une date saisie dans une
cellule), il y 4 équipes à répartir.
L'équipe1 pour la semaine 1 (donc couleur 1), l'équipe2 pour la semaine 2
(couleur2) etc etc
Pour les semaines: du lundi au dimanche
Tous les conseils que vous m'avez donnez fonctionne pour les mois de quatre
semaines mais pour les mois de 5 ou les mois qui ne commencent pas un lundi
exemple (en utilisant les no de semaines)
s36: 1er semaine du mois de septembre equipe1
s37: 2ème semaine du mois de septembre: equipe2
....
s39: 4eme semaine de septembre: equipe 4
s40: on doit repartir avec l'équipe 1 donc couleur1
s41: equipe2 couleur2 etc
Le problème c'est qu'en fait je pense que jed evrais commencer par le
premier jour de l'année,première semaine: equipe1 et que tout le reste ce
fasse
à partir de cette première semaine.
En tous cas, je vais réfléchir à toutes les propositions faites ici.
Merci à tout le monde .
Marc.