Formule complexe (pour moi ;)) si et si et si avec dates

Bonjour,

je bute sur la rédaction d'une formule.

en B2 date debut en C2 date de fin en D2 type de congés (Cp, RTT, CT) en E2 nb de jours avec cette formule:NB.JOURS.OUVRES(B2,C2,fériés)

Je veux dire:

si il y a un samedi férié après 5 jours de congés (CP, RTT, CT) dans la période comprise entre B2 et C2, alors =NB.JOURS.OUVRES(B2,C2,fériés)-1 sinon =NB.JOURS.OUVRES(B2,C2,fériés)

merci d'avance pour vos éclairages.

cordialement

Marc

Bonjour,

un essai...sans fichier c'est pas simple

=SI(ET(SOMMEPROD((JOURSEM(LIGNE(INDIRECT(B2&":"&C2)))=6)*(NB.SI(fériés;LIGNE(INDIRECT(B2&":"&C2)))>0));OU(D2={"CP";"RTT";"CT"});NB.JOURS.OUVRES(B2,C2,fériés)-1;NB.JOURS.OUVRES(B2,C2,fériés))

Ou quelque chose dans le genre.

Sinon voir avec NB.JOURS.OUVRES.INTL()

Mais avec un fichier ce serait plus simple

Cordialement,

Leakim

Bonjour Leakim,

merci de m'aider.

je joins le fichier, j'ai testé ta solution et Excel ne semble pas reconnaitre "fériés" alosr que je l'utilise dans d'autres formules ...

le formule concernée est dans l'onglet base E2

@ bientôt

cordialement

Marc

25tab-conges3.xlsm (117.79 Ko)

Re,

Je te laisses vérifier avec la formule corrigée

C'est les , au lieu de ; qui posent problème.

Essayes avec

=SI(ET(SOMMEPROD((JOURSEM(LIGNE(INDIRECT(B2&":"&C2)))=6)*(NB.SI(fériés;LIGNE(INDIRECT(B2&":"&C2)))>0));OU(D2={"CP";"RTT";"CT"}));NB.JOURS.OUVRES(B2;C2;fériés)-1;NB.JOURS.OUVRES(B2;C2;fériés))

Cordialement,

Leakim

Rebonjour Leakim,

houp's effectivement !!!! le jonglage entre les versions 2010 & 2013. Je me demande d'ailleurs pourquoi ce changement de la virgule au lieu du point virgule ... bon

par contre cela ne fonctionne pas j'attends un résultat à 4 et j'obtiens 5. je rejoins le fichier ou j'ai mis la nouvelle formule.

@ bientôt

cordialement

Marc

Bonjour,

n'ayant pas de réponse sur ce forum, je suis aller poser ma question ailleurs et j'ai trouvé !!!

je poste la solution si jamais elle pouvait servir à d'autres...

bonne journée @ tous,

cordialement

Marc

Function CalculCongés(D As Range, F As Range) As Integer

Dim Deb As Date, Fin As Date, Ctr As Integer, Bonus As Byte

Application.Volatile

Deb = D.Value

Fin = F.Value

For I = Deb To Fin

If Weekday(I) = 2 Then Ctr = 1

If Weekday(I) = 3 And Ctr = 1 Then Ctr = 2

If Weekday(I) = 4 And Ctr = 2 Then Ctr = 3

If Weekday(I) = 5 And Ctr = 3 Then Ctr = 4

If Weekday(I) = 6 And Ctr = 4 Then Ctr = 5

If Weekday(I) = 7 And Ctr = 5 Then

Ctr = 0

If IsNumeric(Application.Match(I * 1, Range("fériés"), 0)) Then

Bonus = Bonus + 1

End If

End If

Next I

If Weekday(Fin) = 6 Then

If IsNumeric(Application.Match((Fin + 1) * 1, Range("fériés"), 0)) Then

Bonus = Bonus + 1

End If

End If

CalculCongés = Application.NetworkDays(Deb, Fin, Range("fériés")) - Bonus

End Function

Rechercher des sujets similaires à "formule complexe moi dates"