Calcul de la date ouvrée en fonction d’une liste déroulante

Bonjour à tous,

Désolé d’avance si ma demande a déjà été traité dans un sujet mais je ne l’ai pas trouvé dans le forum. Étant novice en Apps script, je travaille sur une solution pour déterminer une date limite en jours ouvrés en fonction du markets.

Au passage, y-a-t-il un script pour les jours ouvrés ou on peut intégrer ou rajouter en plus des jours fériés spécifique à moi ? pour pouvoir aussi passer en script les colonnes BB et BC qui déterminent la durée passé en atelier.

Voici le lien vers le fichier :

https://docs.google.com/spreadsheets/d/1xij99ujOX7ng69QO2aWz6EM4pPIlxQxRgOu6jay9hZM/edit?usp=sharing

Merci d’avance pour votre aide :)

David

Bonjour,

1-

Je ne suis pas fan des scripts quand on peut s'en passer, et surtout avec les dates qui demandent un soin particulier sur les timezone de la feuille mais aussi de l'éditeur de script (généralement configuré par défaut à America/New_York, ce qui est bien ton cas alors que la feuille est en GMT+01 Paris). Et c'est sans compter du reste sur le passage aux heures d'été. Oui Google Sheets est super bien fait pour cela et permet un fonctionnement partagé international, mais c'est pointu.

image

Il y a aussi une autre raison : les scripts sont exécutés côté serveur alors que les formules le sont côté utilisateur (sauf les formules customisées via script où cela peut prendre du temps, beaucoup de temps au chargement).

2-

revenons au fichier et au besoin ... je m'y suis perdu

  • quelles sont les données d'entrée ?
  • et quelles sont les données de sortie que tu souhaites , ... j'ai vu notamment que la colonne AL qui intervient dans le calcul en AZ et BA restait vierge

bref, déjà pour le néophyte que je suis, une grande simplification serait bienvenue, ce que les anglo-saxons appellent MBE ou minimal reproducible example https://en.wikipedia.org/wiki/Minimal_reproducible_example

3-

Pour la liste des jours fériés, je la tiens plutôt dans une feuille dédiée.

On doit pouvoir utiliser ceci, quoique cela dépend même pour la France du fait d'appartenir à l'Alsace-Lorraine puisque les Alsaciens et les Mosellans ont deux jours fériés de plus que le reste des Français: le Vendredi saint avant Pâques et la Saint-Étienne, le 26 décembre.

function JoursFeries (an){
    var JourAn = new Date(an, "00", "01")
    var FeteTravail = new Date(an, "04", "01")
    var Victoire1945 = new Date(an, "04", "08")
    var FeteNationale = new Date(an,"06", "14")
    var Assomption = new Date(an, "07", "15")
    var Toussaint = new Date(an, "10", "01")
    var Armistice = new Date(an, "10", "11")
    var Noel = new Date(an, "11", "25")
    var SaintEtienne = new Date(an, "11", "26")

    var G = an%19
    var C = Math.floor(an/100)
    var H = (C - Math.floor(C/4) - Math.floor((8*C+13)/25) + 19*G + 15)%30
    var I = H - Math.floor(H/28)*(1 - Math.floor(H/28)*Math.floor(29/(H + 1))*Math.floor((21 - G)/11))
    var J = (an*1 + Math.floor(an/4) + I + 2 - C + Math.floor(C/4))%7
    var L = I - J
    var MoisPaques = 3 + Math.floor((L + 40)/44)
    var JourPaques = L + 28 - 31*Math.floor(MoisPaques/4)
    var Paques = new Date(an, MoisPaques-1, JourPaques)
    var VendrediSaint = new Date(an, MoisPaques-1, JourPaques-2)
    var LundiPaques = new Date(an, MoisPaques-1, JourPaques+1)
    var Ascension = new Date(an, MoisPaques-1, JourPaques+39)
    var Pentecote = new Date(an, MoisPaques-1, JourPaques+49)
    var LundiPentecote = new Date(an, MoisPaques-1, JourPaques+50)

    return new Array(JourAn, VendrediSaint, Paques, LundiPaques, FeteTravail, Victoire1945, Ascension, Pentecote, LundiPentecote, FeteNationale, Assomption, Toussaint, Armistice, Noel, SaintEtienne)
}

Merci tout d’abord pour ta réponse aussi rapide, vraiment sympa. Il est vrai que j’ai le nez dans le guidon et j’aurais pu simplifier ou masqué l’inutile dans le fichier pour être plus lisible et donc compréhensible, petit et simple et bref !( pas comme ma phrase). Merci pour la référence MRE, je ne connaissais pas.

-

Ainsi dans l’onglet ’atelier’ ,maintenant simplifié :

Les données d’entrée :

*colonne G [onglet ’atelier’] => nom du market [menu déroulant colonne G via onglet ’legende’],

*colonne N [onglet ’atelier’] => date réception Atelier [via coche colonne M],

*colonne F [onglet ’legende’] => Durée limite / markets (en jours ouvrés),

-

La donnée de sortie :

*colonne P [onglet ’atelier’] => Date limite/ markets (jours ouvrés),

Explications :

En cochant une case dans la colonne M ‘reçu’, cela va me donner la ‘Date réception Atelier‘ en colonne N ; je souhaiterai obtenir en colonne P la date limite de retour( en jours ouvrés) en fonction du market en colonne G; sachant que chaque market a sa propre durée limite indiqué en jours ouvrés dans l’onglet ‘legende’ colonne F.

-

Il est vrai aussi que le calcul des dates est moins complexe via les formules coté utilisateur que via script ,comme mon semblant de mixte entre ces 2 méthodes pour calculer la durée effectives en atelier en colonne BC de l’onglet ‘copie’ (script plus fonctionnel sur cet onglet ‘copie’ car pointant sur onglet ‘atelier’ )

Au fait, merci encore pour le script pour la liste des jours fériés.

Proposition à mettre en P1

={"Date limite
 / Markets (jours ouvrés)";arrayformula(if(N2:N="";;WORKDAY(N2:N;vlookup(G2:G;'légende'!E:F;2;0);'jours fériés'!B:B)))}

en supprimant du script le calcul de P

en ajoutant l'onglet jours fériés sur 2 années mini

Encore merci pour ton travail, cela marche impeccable. Moi qui pensait être péniblement en orbite autour de la terre dans le codage, cher Steelson, toi, tu navigues à travers les étoiles. Ce qui est cool, c’est que je comprends simplement quelques maillons de ta formule et je serai ravi de retrouver, après pas mal de temps, l’ensemble de la chaîne.

Merci encore.

Bonne journée.

La formule de base, c'est juste

=WORKDAY(N2;vlookup(G2;'légende'!E:F;2;0);'jours fériés'!B:B)

ensuite, c'est tout un habillage classique pour la "porter" en tête de colonne et ne pas avoir à la dupliquer sur chaque ligne

et c'est bien plus simple qu'en script !

Rechercher des sujets similaires à "calcul date ouvree fonction liste deroulante"