Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1208 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [RESOLU]Excel calcul des jours de garde

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU]Excel calcul des jours de garde

n°2324219
malvira
Posté le 13-11-2018 à 21:00:25  profilanswer
 

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
mood
Publicité
Posté le 13-11-2018 à 21:00:25  profilanswer
 

n°2324220
ge_laf
Posté le 13-11-2018 à 21:24:50  profilanswer
 

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
n°2324221
malvira
Posté le 13-11-2018 à 21:41:38  profilanswer
 

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
n°2324222
malvira
Posté le 13-11-2018 à 21:43:24  profilanswer
 

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

n°2324223
ge_laf
Posté le 13-11-2018 à 21:48:18  profilanswer
 

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!

n°2324224
malvira
Posté le 14-11-2018 à 07:20:56  profilanswer
 

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
n°2324225
ge_laf
Posté le 14-11-2018 à 22:50:38  profilanswer
 

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
n°2324226
TotalRecal​l
Posté le 15-11-2018 à 21:26:31  profilanswer
 

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


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2324244
patrice337​40
Avec la réponse, c'est facile.
Posté le 16-11-2018 à 08:59:53  profilanswer
 

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
n°2324309
malvira
Posté le 17-11-2018 à 17:48:35  profilanswer
 

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

mood
Publicité
Posté le 17-11-2018 à 17:48:35  profilanswer
 

n°2324312
malvira
Posté le 17-11-2018 à 18:42:19  profilanswer
 

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

n°2324329
patrice337​40
Avec la réponse, c'est facile.
Posté le 18-11-2018 à 00:16:28  profilanswer
 

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
n°2324349
malvira
Posté le 18-11-2018 à 14:17:15  profilanswer
 

@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

n°2324400
aculy
Posté le 19-11-2018 à 10:15:08  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [RESOLU]Excel calcul des jours de garde

 

Sujets relatifs
Compte rendu DareBoost, calcul performance de mon site webEditeur de formule Excel
Copier/coller puis Enregistrement sous excelAutomatisation sous Excel
calcul de checksum (réglé)Calcul durée entre 2 dates et heures
Excel : soustraction dans condition somme prod[EXCEL / VBA] Connexion ADO et recordset "limité"
[EXCEL] Somme dynamiqueprobleme programmation vba sur EXCEL
Plus de sujets relatifs à : [RESOLU]Excel calcul des jours de garde


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR