Modifier contenu d'une cellule en fonction du jour de la semaine en VBA

Riko

XLDnaute Occasionnel
Bonjour,
je voudrais modifier le contenu d'une cellule en fonction du contenu de 3 autres.
Je voudrais insérer ce code dans une boucle déjà existante pour MFC en VBA.
Je vous joins un fichier pour mieux comprendre.
Merci d'avance
 

Pièces jointes

  • Classeur1.xls
    56 KB · Affichages: 92
  • Classeur1.xls
    56 KB · Affichages: 95
  • Classeur1.xls
    56 KB · Affichages: 98

david84

XLDnaute Barbatruc
Re : Modifier contenu d'une cellule en fonction du jour de la semaine en VBA

Bonsoir,
à tester :
Code:
=SI(ET(OU(ET(NB.SI(Feries;B7);JOURSEM(B7;2)=4;JOURSEM(B10;2)=7);ET(NB.SI(Feries;B7);JOURSEM(B7;2)=3;JOURSEM(B3;2)=6));DECALER(Cycle;MOD(C7-debutCycle;nbJours);;1;1));"AS";DECALER(Cycle;MOD(C7-debutCycle;nbJours);;1;1)&"")
Pour les couleurs, je ne vois pas de MFC dans ton fichier donc je ne sais pas comment tu veux procéder.
A+
Edit : concernant le formule initiale,
Code:
=DECALER(Cycle;MOD(C7-debutCycle;nbJours);;1;1)&""
suffisait pour ne pas faire apparaître les 0
 

Riko

XLDnaute Occasionnel
Re : Modifier contenu d'une cellule en fonction du jour de la semaine en VBA

Merci,
Je regardes ta formule.
Pour la MFC, il n'y en a pas car je l'ai remplacé par la macro car il me fallait plus de 3 MFC et dans excel 2003 ça ne passe pas.
Et je regarderais également pour
suffisait pour ne pas faire apparaître les 0
 

Riko

XLDnaute Occasionnel
Re : Modifier contenu d'une cellule en fonction du jour de la semaine en VBA

David,
ta formule ne fait pas ce que je recherchais.
Si le jour férié est un lundi ou mardi ou mercredi on tient compte de la valeur du week end précédent,
si le jour férié est un Jeudi ou vendredi on tiendra compte du week end suivant.
 

david84

XLDnaute Barbatruc
Re : Modifier contenu d'une cellule en fonction du jour de la semaine en VBA

Re
il y a certainement plus simple mais nouvelle proposition à tester :
Code:
=SI(OU(ET(NB.SI(Feries;B7);JOURSEM(B7;2)<4;OU(ET(JOURSEM(B3;2)=6;MOD(C3-debutCycle;nbJours)=5;MOD(C4-debutCycle;nbJours)=6);ET(JOURSEM(B4;2)=6;MOD(C4-debutCycle;nbJours)=5;MOD(C5-debutCycle;nbJours)=6);ET(JOURSEM(B5;2)=6;MOD(C5-debutCycle;nbJours)=5;MOD(C6-debutCycle;nbJours)=6)));ET(NB.SI(Feries;B7);JOURSEM(B7;2)>3;OU(ET(JOURSEM(B8;2)=6;MOD(C8-debutCycle;nbJours)=5;MOD(C9-debutCycle;nbJours)=6);ET(JOURSEM(B9;2)=6;MOD(C9-debutCycle;nbJours)=5;MOD(C10-debutCycle;nbJours)=6);ET(JOURSEM(B10;2)=6;MOD(C10-debutCycle;nbJours)=5;MOD(C11-debutCycle;nbJours)=6))));"AS";DECALER(Cycle;MOD(C7-debutCycle;nbJours);;1;1)&"")
A+
 
Dernière édition:

Riko

XLDnaute Occasionnel
Re : Modifier contenu d'une cellule en fonction du jour de la semaine en VBA

Je viens de tester mais ça ne fonctionne toujours pas.
"AS" est ajouté alors que le weekend est vide. Je souhaite que l'on ajoute AS seulement sur le weekend où M.as est présent.
De plus quelque chose m'interpelle: les fonctions sont calculées les unes après les autres,
Si je dois tenir compte d'une cellule suivante avant son calcul il va y avoir problème.
A mon avis, il faut que je passe par une macro.
Le remplissage du tableau se ferait par
Code:
=DECALER(Cycle;MOD(C7-debutCycle;nbJours);;1;1)
formule simplifiée et masquage des zéros par format "[=0]"";Standard"
Puis mise en forme selon contenu (weekend, jours feriés, poste de travail) via macro car plus de 3 MFC.
Et c'est dans cette boucle que j'aurais modifier le contenu de ma cellule.
Qu'en penses tu ?
 

david84

XLDnaute Barbatruc
Re : Modifier contenu d'une cellule en fonction du jour de la semaine en VBA

Re
AS" est ajouté alors que le weekend est vide. Je souhaite que l'on ajoute AS seulement sur le weekend où M.as est présent
c'est pourtant le cas (cf.fichier). Place un exemple sur le fichier où tu constates que cela ne donne pas le résultat escompté et place manuellement le résultat voulu.
De plus quelque chose m'interpelle: les fonctions sont calculées les unes après les autres,
Si je dois tenir compte d'une cellule suivante avant son calcul il va y avoir problème.
je ne vois pas de quoi tu parles mais ceci-dit, je n'ai peut-être pas toutes les explications.
Le remplissage du tableau se ferait par
Code :
=DECALER(Cycle;MOD(C7-debutCycle;nbJours);;1;1)
formule simplifiée et masquage des zéros par format "[=0]"";Standard"
pas besoin de format de cellule personnalisé :
Code:
=DECALER(Cycle;MOD(C7-debutCycle;nbJours);;1;1)&""
te masque les 0 (ce que je t'avais déjà suggéré).
A+
 

Pièces jointes

  • Classeur1 (14).xls
    58.5 KB · Affichages: 48
Dernière édition:

Riko

XLDnaute Occasionnel
Re : Modifier contenu d'une cellule en fonction du jour de la semaine en VBA

Bon,ben ça fonctionne avec ton fichier.
je ne sais pas où je me suis planté.
Pour les zéros, j'avais zappé le plus important (la fin de la formule)
Je vais essayer d'adapter ça sur mon fichier de travail.
Je te tiens au courant.
Merci.
 

Riko

XLDnaute Occasionnel
Re : Modifier contenu d'une cellule en fonction du jour de la semaine en VBA

C'est encore moi,
je tente de décortiquer ta formule mais je ne pige pas tout entre les modulo et les diverses cellules, je suis un peu perdu.
 

Riko

XLDnaute Occasionnel
Re : Modifier contenu d'une cellule en fonction du jour de la semaine en VBA

J'ai enfin réussi à faire ce que je souhaitais, il me reste encore quelques bricoles à peaufiner.
J'ai modifié la formule comme ceci:
Code:
=SI(OU(ET(NB.SI(Férié;E19);JOURSEM(E19;2)<4;OU(DECALER(F19;-1;0)=weAs;DECALER(F19;-2;0)=weAs;DECALER(F19;-3;0)=weAs;DECALER(F19;-4;0)=weAs));ET(NB.SI(Férié;E19);JOURSEM(E19;2)>3;OU(DECALER(F19;1;0)=weAs;DECALER(F19;2;0)=weAs)));"AS";DECALER(Cycle;MOD(E19-debutCycle;nbJours);;1;1)&"")
Dans la colonne E, il y a les dates et dans F les postes travaillés.
Dans weAs il y a le texte "M.As" (modifiable selon les gouts).

Merci pour ton aide.:)
 

Discussions similaires

Réponses
26
Affichages
378

Statistiques des forums

Discussions
312 215
Messages
2 086 316
Membres
103 176
dernier inscrit
jean.yvesjean.yves