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

Somme de Nb Jours, Si Compris entre 2 dates

systmd

XLDnaute Occasionnel
Bonsoir,

Je cherche à récuperer le nombre de jour de plusieurs périodes en fonction d'une plage de 12 mois.

[edit] PJ
Merci
 
Dernière édition:

mth

XLDnaute Barbatruc
Re : Somme de Nb Jours, Si Compris entre 2 dates

Bonsoir,

Pas sûre du tout d'avoir compris la question ...
A tout hasard est-ce que cette formule irait ?

Code:
=SOMMEPROD((B12:B15>=B2)*(C12:C15<=C2)*(D12:D15))

Bonne soirée,

mth
 

systmd

XLDnaute Occasionnel
Re : Somme de Nb Jours, Si Compris entre 2 dates

Bonsoir mth,

J'avoue ne pas avoir ètè clair, aussi j'ai mis une petite explication graphique en ligne 18, qui je pense devrait t'éclairer un peu plus.

Merci d'avance
 

ROGER2327

XLDnaute Barbatruc
Re : Somme de Nb Jours, Si Compris entre 2 dates

Bonsoir systmd, mth
Ceci, peut-être ?
Code:
[COLOR=DarkSlateGray][B]=SOMME(SI(SI(C12:C15<C$2;C12:C15;C$2)-SI(B12:B15>B$2;B12:B15;B$2)>0;SI(C12:C15<C$2;C12:C15;C$2)-SI(B12:B15>B$2;B12:B15;B$2);))[/B][/COLOR]
(Formule évidemment matricielle.)
ROGER2327
#4690


Vendredi 6 Sable 138 (Saint Navet et Perruque, humanistes, SQ)
16 Frimaire An CCXIX
2010-W49-1T22:58:33Z
 

bcharef

XLDnaute Accro
Re : Somme de Nb Jours, Si Compris entre 2 dates

Bonsoir systmd, mth & ROGER2327,
Bonsoir à toutes et à tous.

Un essai ci-joint.

Cordialement.

BCharef
 

Pièces jointes

  • Test sur les datesV(2).xls
    35 KB · Affichages: 122

systmd

XLDnaute Occasionnel
Re : Somme de Nb Jours, Si Compris entre 2 dates

Bonsoir ROGER2327,BCharef


Impécable , mais j'aurais aimé une formule sans passer par les matricielles.

Je suppose que c'est du coté de SOMMEPROD qu'il faille regarder.

Merci à tous les deux, en tout cas pour les formules.
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Somme de Nb Jours, Si Compris entre 2 dates

Re...
Je n'ai rien trouvé pour éviter une formule matricielle, même avec SOMMEPROD. Mais les vrais spécialistes de la formule (dont je ne suis pas) n'ont peut-être pas dit leur dernier mot…
Attendons.
ROGER2327
#4691


Vendredi 6 Sable 138 (Saint Navet et Perruque, humanistes, SQ)
16 Frimaire An CCXIX
2010-W49-1T23:20:32Z
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Somme de Nb Jours, Si Compris entre 2 dates

Suite …
On peut aussi envisager une fonction personnalisée :
Code:
[COLOR=DarkSlateGray][B]Function toto(d1, d2, p1 As Range, p2 As Range)
Dim i&, x&, wf
  toto = ""
  If p1.Rows.Count <> p2.Rows.Count Then Exit Function
  Set wf = Application.WorksheetFunction
  For i = 1 To p1.Rows.Count
    x = x + wf.Max(0, wf.Min(d2, p2.Cells(i, 1)) - wf.Max(d1, p1.Cells(i, 1)))
  Next i
  toto = x
End Function[/B][/COLOR]
Dans votre exemple,
Code:
[COLOR=DarkSlateGray][B]=toto(B2;C2;B12:B15;C12:C15)[/B][/COLOR]
renverra 102.
ROGER2327
#4692


Vendredi 6 Sable 138 (Saint Navet et Perruque, humanistes, SQ)
16 Frimaire An CCXIX
2010-W49-1T23:50:45Z
 

systmd

XLDnaute Occasionnel
Re : Somme de Nb Jours, Si Compris entre 2 dates

Ah oui!...

Effectivement c'est une solution et celà sera beaucoup plus simple à l'utilisation.
je vais donc l'adopter.


Merci beaucoup, bon boulot.

Bonne soirée, euh.... matinée maintenant
 

systmd

XLDnaute Occasionnel
Re : Somme de Nb Jours, Si Compris entre 2 dates

Bonjour à tous

Aprés plusieurs test il subsiste une erreur.
il manque un jour à chaque décompte car les dates sont incluses

j'ai corrigé comme suit

Code:
Function toto(d1, d2, p1 As Range, p2 As Range)
Dim i&, x&, wf
  toto = ""
  If p1.Rows.Count <> p2.Rows.Count Then Exit Function
  Set wf = Application.WorksheetFunction
  For i = 1 To p1.Rows.Count
    x = x + wf.Max(0, wf.Min(d2, p2.Cells(i, 1)) - wf.Max(d1, p1.Cells(i, 1))[COLOR="Red"] +1 )

   ' en cas d'absence de date pour éviter 366
   If p1.Cells="" or  p1.Cells="" then 
      toto = ""
      Exit Function
      End If[/COLOR]
  Next i
  toto = x
End Function

[résolu]
Merci encore
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Somme de Nb Jours, Si Compris entre 2 dates

Re…
Je ne vous suis pas bien, là. En mettant votre fonction corrigée dans votre classeur, elle renvoie… …une erreur.
ROGER2327
#4697


Samedi 7 Sable 138 (Saint Birbe, juge, SQ)
17 Frimaire An CCXIX
2010-W49-2T16:46:02Z
 

Pièces jointes

  • Copie de Test sur les dates2.zip
    22.9 KB · Affichages: 42

systmd

XLDnaute Occasionnel
Re : Somme de Nb Jours, Si Compris entre 2 dates

Bonsoir ROGER2327

Voilà la bonne version je pense

Code:
Function NbJourPlage(d1, d2, p1 As Range, p2 As Range)
Dim i&, x&, wf
  NbJourPlage = ""
  If p1.Rows.Count <> p2.Rows.Count Then Exit Function
  Set wf = Application.WorksheetFunction
  For i = 1 To p1.Rows.Count
      x = x + wf.Max(0, wf.Min(d2, p2.Cells(i, 1)) - wf.Max(d1, p1.Cells(i, 1)) + 1)
    If (p1.Cells(i, 1) = "") Or (p2.Cells(i, 1) = "") Then
        NbJourPlage = ""
        Exit Function
        End If

  Next i
  NbJourPlage = x
End Function

en mode matricielle
Code:
=SOMME(SI(SI(C12:C15<C$2;C12:C15;C$2)-SI(B12:B15>B$2;B12:B15;B$2)+1>0;SI(C12:C15<C$2;C12:C15;C$2)-SI(B12:B15>B$2;B12:B15;B$2)+1;))
 

ROGER2327

XLDnaute Barbatruc
Re : Somme de Nb Jours, Si Compris entre 2 dates

Re…
Compris !
Toujours le problème des intervalles et des poteaux.

Pour ce qui est de la gestion d'éventuelles erreurs, je propose ceci :
Code:
[COLOR=DarkSlateGray][B]Function toto(d1, d2, p1 As Range, p2 As Range)
Application.Volatile
Dim i&, x&, wf
  toto = ""
  If p1.Rows.Count <> p2.Rows.Count Then Exit Function
  Set wf = Application.WorksheetFunction
  For i = 1 To p1.Rows.Count
    If IsDate(p1.Cells(i, 1)) And IsDate(p2.Cells(i, 1)) Then x = x + wf.Max(0, wf.Min(d2, p2.Cells(i, 1)) - wf.Max(d1, p1.Cells(i, 1)) + 1)
  Next i
  toto = x
End Function[/B][/COLOR]
qui permet de traiter un tableau incomplet en ignorant les lignes incomplètes ou mal remplies.
ROGER2327
#4700


Dimanche 8 Sable 138 (Conception du Père Ubu (AJ), SS)
18 Frimaire An CCXIX
2010-W49-3T00:14:16Z
 

systmd

XLDnaute Occasionnel
Re : Somme de Nb Jours, Si Compris entre 2 dates

Bonsoir ROGER 2327

Ouf enfin rentré, que de neige...

Ta réponse est plus Pro que la mienne, je valide
Pas beaucoup d'adepte du SOMMEPROD, peut-être pas possible?

Merci pour tout
 

ROGER2327

XLDnaute Barbatruc
Re : Somme de Nb Jours, Si Compris entre 2 dates

Re…
(…)
Pas beaucoup d'adepte du SOMMEPROD, peut-être pas possible?
(…)
Je ne sais pas le faire, mais ça ne prouve rien. On voit souvent des formules qu'on croyait impossibles, sur ce site…
ROGER2327
#4711


Dimanche 8 Sable 138 (Conception du Père Ubu (AJ), SS)
18 Frimaire An CCXIX
2010-W49-3T20:10:39Z
 

Discussions similaires

Réponses
15
Affichages
466
Réponses
9
Affichages
554
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…