Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Addition de jours ouvrés

sfconstant

XLDnaute Occasionnel
Bonsoir à tous,

J'aimerais savoir comment faire pour addtionner à une date au moins 16 jours pour avoir une date qui soit comprise entre un Lundi et un Jeudi. Je m'explique :

25/03/2009 +16 = Vendredi 10 Avril, j'aimerais que la formule m'indique alors le 13/04/2009 (Lundi : ok)
13/04/2009 + 16 = Mercredi 29 Avril : Date bonne car mercredi

Merci beaucoup et bonne nuit

François
 

sfconstant

XLDnaute Occasionnel
Re : Addition de jours ouvrés

Merci beaucoup Job75,
Ca marche super bien, mais j'ai encore un petit problème : Que faudrait-il rajouter à la formule pour que le résultat évite aussi les jours fériés ?

Merci

Bon Week-end.
 

job75

XLDnaute Barbatruc
Re : Addition de jours ouvrés

Bonsoir François,

Avec les jours fériés, je ne sais pas faire par formule.

Par contre j'ai écrit une fonction (JO16) en VBA qui fait l'affaire :

Code:
Function JO16(J As Date, Optional JF As Range) As Date 'JF plage jours fériés
J = J + 16
1 If Not JF Is Nothing Then
If Application.CountIf(JF, J) Then J = J + 1: GoTo 1
End If
If Weekday(J, 2) > 4 Then J = J + 1: GoTo 1
JO16 = J
End Function

Le 2ème argument de la fonction, JF, est la plage où se trouvent les jours fériés. Il est facultatif.

Fichier joint.

Bonne nuit.
 

Pièces jointes

  • Classeur1.xls
    30 KB · Affichages: 84
  • Classeur1.xls
    30 KB · Affichages: 90
  • Classeur1.xls
    30 KB · Affichages: 100

job75

XLDnaute Barbatruc
Re : Addition de jours ouvrés

Bonjour François, le forum,

Pour la solution par formules, je n'avais pas bien cherché.

Avec des formules matricielles (validation par Ctrl+Maj+Entrée) :

sans les jours fériés :

Code:
=MIN(SI(JOURSEM(A2+LIGNE(16:19);2)<5;A2+LIGNE(16:19)))
avec les jours fériés (dans la plage I2:I3) :

Code:
MIN(SI(JOURSEM(A2+LIGNE(16:30);2)<5;SI(NB.SI([COLOR="Red"]I2:I3[/COLOR];A2+LIGNE(16:30))=0;A2+LIGNE(16:30))))
ou encore :

Code:
=MIN(SI((JOURSEM(A2+LIGNE(16:30);2)<5)*(NB.SI([COLOR="Red"]I2:I3[/COLOR];A2+LIGNE(16:30))=0);A2+LIGNE(16:30)))

On peut aussi nommer la plage des jours fériés. Aussi écrire LIGNE(16:1000) s'il le faut...

Fichier joint.

A+
 

Pièces jointes

  • Classeur1.xls
    31 KB · Affichages: 91
  • Classeur1.xls
    31 KB · Affichages: 97
  • Classeur1.xls
    31 KB · Affichages: 102
Dernière édition:

sfconstant

XLDnaute Occasionnel
Re : Addition de jours ouvrés

Bonjour le forum,

Merci Job75 pour ces réponses, je vais utliliser l'une de tes formules car le nombre de jours que j'ajoute est contenue dans des cellules ainsi, suivant les interventions (espaces verts) , je fais varier ce jour et donc la référence d'ajout sera une cellule différente (intervalle variable). J'espère que tu as compris mon charabia.

Donc dans ta formule ligne (16 : 30), doi-je nommer la cellule que je prends en référence ?
En faite, je ne comprends pas tellement ces formules, notamment :
ligne (16:30) : les lignes sont vides
JOURSEM ()*NB.SI() : multiplie-t-on les deux formules ou est-ce une addition de condition

Merci
Bonne fin d'aprés midi

François
 

Pièces jointes

  • Jours ouvrés avec intervalle variable (référence relative).zip
    7.4 KB · Affichages: 50
  • Jours ouvrés avec intervalle variable (référence relative).zip
    7.4 KB · Affichages: 56
  • Jours ouvrés avec intervalle variable (référence relative).zip
    7.4 KB · Affichages: 50

job75

XLDnaute Barbatruc
Re : Addition de jours ouvrés

Bonjour François,

LIGNE(16:30) est utilisé pour créer une matrice des nombres de 16 à 30 . Ces nombres sont ensuites ajoutés à A2 (calcul matriciel) et c'est cette somme qui est analysée.

Pourquoi 30 ? Parce que 30 jours à ajouter à A2 paraît un maximum possible, non ? Mais on peut mettre 100 ou 1000 ou plus, c'est pareil, Edit : car la fonction MIN prend le minimum trouvé.

Si le nombre 16 est destiné à être modifié, il vaut mieux alors le sortir de LIGNE en écrivant par exemple :

Code:
=MIN(SI((JOURSEM(A2+[COLOR="Red"]16-1[/COLOR]+LIGNE(1:30);2)<5)*(NB.SI(I2:I3;A2+[COLOR="Red"]16-1[/COLOR]+LIGNE(1:30))=0);A2+[COLOR="Red"]16-1[/COLOR]+LIGNE(1:30)))

et donc remplacer 16 par la référence d'une cellule dont le contenu serait variable.

Edit : le signe * est une multiplication des conditions : le produit vaut 1 (c'est à dire VRAI) si les 2 conditions sont VRAI (en effet VRAI*VRAI = 1). Oui, pas évident quand on ne sait pas ça...

A+
 
Dernière édition:

sfconstant

XLDnaute Occasionnel
Re : Addition de jours ouvrés

Merci beaucoup Job75

Ta formule marche trés bien avec une valeur mais le format de la date n'est pas le bon quand on fait référence à une cellule : bizarre, bizarre !!!

Bonne soirée et encore un grand merci

François
 

Pièces jointes

  • Jours ouvrés avec intervalle variable (référence relative).zip
    7.3 KB · Affichages: 48
  • Jours ouvrés avec intervalle variable (référence relative).zip
    7.3 KB · Affichages: 56
  • Jours ouvrés avec intervalle variable (référence relative).zip
    7.3 KB · Affichages: 47

job75

XLDnaute Barbatruc
Re : Addition de jours ouvrés

Re,

Pas du tout bizarre...

Comme je l'ai déjà dit, il s'agit d'une formule matricielle à valider (quand on a cliqué dans la barre de formule) par Ctrl+Maj+Entrée.

Sur ce forum, il faut avoir de la mémoire.

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…