XL 2013 Jours fériers et jour ouvrés pour manipuler des dates

  • Initiateur de la discussion Initiateur de la discussion GuestRC
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

GuestRC

Guest
Bonjour,

Je dois réaliser un formulaire de contrôle de maintenance en excel. Il y a des note allant de 0 à 2 en fonction de certains critère.
Lorsqu'il y a une note à 0, je dois créer un incident et donc lui donner une date qui par défaut est J+1 à 8h00. Mon problème est le suivant: Comment faire pour dire J+1 à 8h00 en prenant en compte les jours fériers et ouvrés? Pour le moment j'ai une énorme formule pour gérer les weekends, en gros si le jour est un vendredi tu fais J+3. La date (pour export CSV) a un format bizarre type AAA-MM-JJThh:mm:ss que je suis obligé de garder.

Pour le moment la formule est comme ça : =SI($H11=1;$AE2;SI(JOURSEM($I$8;2)=5;TEXTE($I$8+3;"aaaa-mm-jj")&"T8:00:00";TEXTE($I$8+1;"aaaa-mm-jj")&"T8:00:00"))

En gros si $Hxx (la note) est à 1 on prend la date du jour (déjà formatée en AE2) si non si c'est vendredi on fait J+3 au bon format si non on fait J+1 là j'ai toute l'année mais pas les jours fériers. il faudrait dire que si la date est dans la liste des jours fériers alors ça fait J+2 sauf si le jour J+2 est un vendredi ... comment puis-je faire ça simplement et sans macros ?

(Je ne dois pas utiliser de macros car le fichier est exporter après pour être complété du coup pas de macros ...)

D'avance merci pour votre aide! 🙂
 
Bonjour

Dans un premier temps, tu peux faire plus court avec
Code:
=SI($H11=1;$AE2;TEXTE($I$8+SI(JOURSEM($I$8;2)=5;3;1);"aaaa-mm-jj"))&"T8:00:00"

J'essaye de trouver une formule plus complète prenant en compte les jours fériés.

@ plus
 
Merci !

Effectivement cette formule est moins compliquée ;-) merci pour ça !

J'ai déjà une plage dans une autre feuille avec tous les jours fériers de l'année si besoin (genre FeuilleX!C8:C20, c'est pas ça mais c'est l'idée)
 
Bonjour

Cf. en pièce jointe, avec une formule matricielle à valider avec Ctrl+maj+entrer pour obtenir les {} devant et derrière la formule.

Le principe : On liste les 10 jours qui suivent la date dans I8 avec $I$8+LIGNE(INDIRECT("1:10")). Avec trois tests, on élimine ceux correspondants aux dimanches, aux lundis et aux jours fériés contenus dans la plage nommée fériés. Finalement, on ne garde que la date la plus petite de toutes celles convenant dans la liste restante, et on la met au format désiré.

Donc, cela ne fonctionne que s'il ni y a que 10 jours successifs au plus fériés, W.E inclus. S'il y a en a plus, il faut remplacer les 10 dans la formule par un nombre plus grand.

@ plus
 

Pièces jointes

Dernière édition:
Merci bien, petite question, comment on fait pour déclarer le tableau "fériers" ? (enfin où est-ce qu'on dit qu'il s'appelle comme ça? )

Si non merci beaucoup pour ce coup de main ça m'aide énormément 🙂
 
Ok c'est bon pour ça et dernière question, les jours ouvrés c'est juste les WE donc on inclus le lundi (pour mon projet du moins). C'est quelle formule que je dois modifier du coup? (et comment si possible?)

Merci beaucoup en tout cas! je connais très mal excel, d'habitude j'utilise le format web (donc PHP, JS, SQL) qui sont beaucoup plus souples ...
 
Bonjour

Jocelyn, par mail privé, m'a proposé une autre solution, plus simple, et n'utilisant pas de formule matricielle, à savoir
Code:
SI($H11=1;$AE2;TEXTE(SERIE.JOUR.OUVRE.INTL(I8;1;1;fériés);"aaaa-mm-jj"))&"T8:00:00"
valable pour éliminer les W.E et les jours fériés définis comme précédemment. Cette solution a l'avantage, outre le fait de ne pas utiliser une formule matricielle, de ne pas être limitée par les 10 jours fériés+WE successifs cités précédemment.

Si tu veux aussi éliminer les dimanches, les lundis et les samedis, il faut faire avec
Code:
SI($H11=1;$AE2;TEXTE(MIN(SI(NON(JOURSEM($I$8+LIGNE(INDIRECT("1:10")))=1)*NON(JOURSEM($I$8+LIGNE(INDIRECT("1:10")))=2)*NON(JOURSEM($I$8+LIGNE(INDIRECT("1:10")))=7)*NON(ESTNUM(EQUIV(($I$8+LIGNE(INDIRECT("1:10")));fériés;0)));$I$8+LIGNE(INDIRECT("1:10"))));"aaaa-mm-jj"))&"T8:00:00"
c.-à-d. la même formule que précédemment, avec un test *NON(JOURSEM($I$8+LIGNE(INDIRECT("1:10")))=2) en plus.

@ plus
 
Bonjour le Forum,
Bonjour skollrc, re CISCO 🙂,

pour revenir sur le fait d'enlever en plus du samedi et du dimanche le lundi dans la formule

=SI($H11=1;$AE2;TEXTE(SERIE.JOUR.OUVRE.INTL(I8;1;1;fériés);"aaaa-mm-jj"))&"T8:00:00"

il suffit de remplacer SERIE.JOUR.OUVRE.INTL(I8;1;1;fériés)

par SERIE.JOUR.OUVRE.INTL(I8;1;"1000011";fériés)

ou la série "1000011" représente les jours de la semaine du lundi au dimanche 1 indiquant un jour non ouvré et 0 un jour ouvré

Cordialement

EDIT de la on peut considérer comme jours non ouvrés n'importe quel jour de la semaine ne pas oublier d'encadrer la série des ""
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
1 K
Retour