[RESOLU]Excel calcul des jours de garde

Excel calcul des jours de garde [RESOLU] - VB/VBA/VBS - Programmation

Marsh Posté le 13-11-2018 à 21:00:25    

bonjour @ tous,
 
je suis en train de plancher sur un utilitaire pour le calcul des gardes d'enfants (couple séparé)
 
Madame XX
Monsieur XY
 
les jours s'alterne de la sorte
 
lundi XX
Mardi XY
Mercredi XX/XY
Jeudi XX
Vendredi XY
Samedi XX
Dimanche XX
 
lundi XY
Mardi XX
Mercredi XX/XY
Jeudi XY
Vendredi XX
Samedi XY
Dimanche XY
 
la première ligne de ma feuille excel est la date au format jjj
la deuxième ligne de ma feuille excel est la date au format jj mmm
la troisième ligne les alternances
 
voici ma formule
 
 

Code :
  1. =SI(ET(JOURSEM(INDIRECT(ADRESSE(LIGNE()-2;COLONNE()));2)<>7;JOURSEM(INDIRECT(ADRESSE(LIGNE()-2;COLONNE()));2)<>6;INDIRECT(ADRESSE(LIGNE();COLONNE()-2))="XX";INDIRECT(ADRESSE(LIGNE();COLONNE()-1))="XY" );"XX/XY";SI(ET(JOURSEM(INDIRECT(ADRESSE(LIGNE()-2;COLONNE()));2)<>7;JOURSEM(INDIRECT(ADRESSE(LIGNE()-2;COLONNE()));2)<>6;INDIRECT(ADRESSE(LIGNE();COLONNE()-1))="XX" );"XY";SI(ET(OU(JOURSEM(INDIRECT(ADRESSE(LIGNE()-2;COLONNE()));2)=7;JOURSEM(INDIRECT(ADRESSE(LIGNE()-2;COLONNE()));2)=6);INDIRECT(ADRESSE(LIGNE();COLONNE()-7))="XX" );"XY";"XX" )))

 
 
j'ai un problème avec le début du mois (jour -1); (jour-2) (jour-7)
 
Quelqu'un à une idée
 
Merci


Message édité par malvira le 18-11-2018 à 14:18:49
Reply

Marsh Posté le 13-11-2018 à 21:00:25   

Reply

Marsh Posté le 13-11-2018 à 21:24:50    

Salut,
 
La section du forum pour ton message n'est surement pas la bonne.
Hardware / Actus /  :pfff:  
Plutôt vers   Windows & Software :jap:  
 
Sinon
Je ne saisis pas bien ce que tu veux faire, et surtout qu'est-ce que tu veux qu'Excel te dise?
L'alternance change tout les jours il me semble, et celui qui a les gosses le lundi les a le week-end, c'est bien ca?


Message édité par ge_laf le 13-11-2018 à 21:39:51
Reply

Marsh Posté le 13-11-2018 à 21:41:38    

Le but est d'avoir un calendrier dynamique qui se garnisse tout seul
mon problème sont les septs premiers jours du mois


Message édité par malvira le 13-11-2018 à 21:43:59
Reply

Marsh Posté le 13-11-2018 à 21:43:24    

le choix de la section du forum....
j'ai regardé d'autres posts traitants de excel et il venaient de cette section
voila la raison tout simplement

Reply

Marsh Posté le 13-11-2018 à 21:48:18    

Ok !
Le problème est l'initialisation.
Comment et quand a été définit le début ?
 
Parce que le calcul selon ton shéma me semble très simple, c'est une alternance, donc c'est pas pareil que la veille et différent du lendemain!

Reply

Marsh Posté le 14-11-2018 à 07:20:56    

la définition du début, je ne sais pas
le couple en question travaillait sur une page de calendrier par mois, et remplissais une nouvelle page tout les mois
 
je suis partisan d'un calendrier continu
 
 
c'est une alternance avec xx-xy mais le troisième jour c'est xx/xy avec reprise du schéma initial
 
exception des weekends ou c'est un weekend sur deux, les deux jours
 
Actuellement ma formule ne fonctionne que si j'initialise manuellement les 7 premiers jours du mois.
 
Raison pour laquelle je test  si le jour est un jour de semaine ou un jour de weekend ensuite si c'est un jour de semaine je regarde le contenu de la cellule à la position -1 et -2, si c'est un jour de weekend, je regarde le contenu de la cellule à la position -7


Message édité par malvira le 14-11-2018 à 07:25:06
Reply

Marsh Posté le 14-11-2018 à 22:50:38    

Il me manque aussi à comprendre comment est défini le mercredi. C'est Madame ou monsieur selon quel cycle?
 
(Tu ne pourras pas faire de calendrier continu sans soit définir tes initialisations, soit créer un autre critère.)


Message édité par ge_laf le 14-11-2018 à 22:55:35
Reply

Marsh Posté le 15-11-2018 à 21:26:31    

Ce sujet a été déplacé de la catégorie Hardware vers la categorie Programmation par TotalRecall


---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 16-11-2018 à 08:59:53    

Bonjour,
 
Une méthode générique : créer un tableau des alternances et utiliser une formule du type :

Code :
  1. =INDEX(Alternances;MOD(B2+Decalage_1;NBVAL(Alternances))+1)


Fichier exemple :
https://mon-partage.fr/f/0c3PnWzO/


---------------
Cordialement, Patrice
Reply

Marsh Posté le 17-11-2018 à 17:48:35    

j'ai du mal à comprendre cette partie de la formule, le calcul de la ligne de la matrice
 
le reste de la division de B2 + Decalage (1 ou 2 suivant que cela soit XX ou XY qui commence le mois) par le nombre de valeur du tableau alternances soit 14
 
ce même reste augmenté de 1
 
MOD(B2+Decalage_1;NBVAL(Alternances))+1
 
ainsi que les décalages définis à 5 et 12

Reply

Marsh Posté le 17-11-2018 à 17:48:35   

Reply

Marsh Posté le 17-11-2018 à 18:42:19    

@ge_laf
 
Madame ou Monsieur dépose les enfants à l'école et l'inverse va les rechercher

Reply

Marsh Posté le 18-11-2018 à 00:16:28    

Dans ton cas, le nombre d'alternances est 14.
La formule MOD(x; 14) donne un résultat qui varie de 0 à 13  
Pour choisir une des valeur entre la première et la quatorzième il faut donc ajouter 1 à ce résultat d'où la formule
MOD(x; 14)+1
 
Dans cette formule x = date + décalage, hors la date 0 d'Excel est le 31/12/1899 (qu'il écrit 00/01/1900).  
Ce jour là est un samedi, la formule donne Mod(0; 14) = 0
Deux jours après (le premier lundi d'Excel) Mod(2; 14) = 2.
Il faut donc décaler cette valeur de 12 jours pour synchroniser les valeurs sur un lundi : MOD(2 + 12; 14)= 0
et donc Mod(2 + 12; 14) + 1 = 1, donne la première valeur à extraire de la liste des alternances (XX).
 
Si on regarde 7 jours après (ou avant) on à le lundi de la seconde semaine
On à le choix entre MOD(2 + 12 +7; 14) et MOD(2 + 12 -7; 14) qui donnent le même résultat d'où le décalage de 5 pour XY    
 
CQFD
 
EDIT : Je précise que le 31/12/1899 est en réalité un dimanche mais pour Excel c'est un samedi à cause d'une erreur de conception : pour Excel la veille du 1er mars 1900 est le 29 février 1900 alors que 1900 n'est pas une année bissextile !!! Les valeurs du jour de la semaine données par Excel entre le 00/01/1900 et le 29/02/1900 sont fausses.


Message édité par patrice33740 le 18-11-2018 à 00:34:48

---------------
Cordialement, Patrice
Reply

Marsh Posté le 18-11-2018 à 14:17:15    

@patrice33740
 
Merci pour les explications, et le rapport à la date zéro d'excel
Excellente journée
 
je peux considéré le sujet clos car ta solution répond à mon souhait

Reply

Marsh Posté le 19-11-2018 à 10:15:08    

Outlook fait cela très bien aussi (pour ma part)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed