Fonction pour récupérer le nbre de jours

aakpa Messages postés 57 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 10 janvier 2016 - 30 nov. 2005 à 17:43
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 30 nov. 2005 à 20:47
Slt a tous
Je voudrais avoir une fonction qui me permettra de récupérer le nombre de jours séparant deux mois, deux trimestres ou deux semetres quelque soit les dates fournies.
je me suis fait ce code mais il devient trop fastudieux

Merci de m'aider

If Periodicite = "MENSUELLE" Then
If DTPicker1.Month = 1 Then
If Cdd = 29 Then
NbreJour = 30
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
If Year(DTPicker1.Value) "2008" Or Year(DTPicker1.Value) "2012" Or Year(DTPicker1.Value) = "2016" Or Year(DTPicker1.Value) = "2020" Or Year(DTPicker1.Value) = "2024" Then
NbreJour = 31
Else
NbreJour = 30
End If
Else
NbreJour = 28

End If


ElseIf Cdd = 31 Then
If Year(DTPicker1.Value) "2008" Or Year(DTPicker1.Value) "2012" Or Year(DTPicker1.Value) = "2016" Or Year(DTPicker1.Value) = "2020" Or Year(DTPicker1.Value) = "2024" Then
NbreJour = 29
Else
NbreJour = 28
End If

Else
NbreJour = 31
End If

ElseIf DTPicker1.Month = 2 Then
If Cdd = 29 Then
NbreJour = 29
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
If Year(DTPicker1.Value) "2008" Or Year(DTPicker1.Value) "2012" Or Year(DTPicker1.Value) = "2016" Or Year(DTPicker1.Value) = "2020" Or Year(DTPicker1.Value) = "2024" Then
NbreJour = 29
Else
NbreJour = 28
End If
Else
NbreJour = 31
End If


ElseIf Cdd = 31 Then
NbreJour = 31
Else
NbreJour = 28
End If

ElseIf DTPicker1.Month = 3 Then
If Cdd = 29 Then
NbreJour = 31
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 31
Else
NbreJour = 30
End If

ElseIf Cdd = 31 Then
NbreJour = 30
Else
NbreJour = 31
End If

ElseIf DTPicker1.Month = 4 Then
If Cdd = 29 Then
NbreJour = 30
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 31
Else
NbreJour = 30
End If

ElseIf Cdd = 31 Then
NbreJour = 31
Else
NbreJour = 30
End If

ElseIf DTPicker1.Month = 5 Then
If Cdd = 29 Then
NbreJour = 31
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 31
Else
NbreJour = 30
End If

ElseIf Cdd = 31 Then
NbreJour = 30
Else
NbreJour = 31
End If

ElseIf DTPicker1.Month = 6 Then
If Cdd = 29 Then
NbreJour = 30
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 31
Else
NbreJour = 30
End If

ElseIf Cdd = 31 Then
NbreJour = 31
Else
NbreJour = 30
End If

ElseIf DTPicker1.Month = 7 Then
If Cdd = 29 Then
NbreJour = 31
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 30
Else
NbreJour = 31
End If

ElseIf Cdd = 31 Then
NbreJour = 31
Else
NbreJour = 31
End If

ElseIf DTPicker1.Month = 8 Then
If Cdd = 29 Then
NbreJour = 31
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 31
Else
NbreJour = 30
End If

ElseIf Cdd = 31 Then
NbreJour = 30
Else
NbreJour = 31
End If

ElseIf DTPicker1.Month = 9 Then
If Cdd = 29 Then
NbreJour = 30
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 31
Else
NbreJour = 30
End If

ElseIf Cdd = 31 Then
NbreJour = 31
Else
NbreJour = 30
End If

ElseIf DTPicker1.Month = 10 Then
If Cdd = 29 Then
NbreJour = 31
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 31
Else
NbreJour = 30
End If

ElseIf Cdd = 31 Then
NbreJour = 30
Else
NbreJour = 31
End If

ElseIf DTPicker1.Month = 11 Then
If Cdd = 29 Then
NbreJour = 30
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 31
Else
NbreJour = 30
End If

ElseIf Cdd = 31 Then
NbreJour = 31
Else
NbreJour = 30
End If

ElseIf DTPicker1.Month = 12 Then
If Cdd = 29 Then
NbreJour = 31
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 32
Else
NbreJour = 31
End If

ElseIf Cdd = 31 Then
NbreJour = 31
Else
NbreJour = 31
End If
'NbreJour = 31
End If
ElseIf Periodicite = "TRIMESTRIELLE" Then
If DTPicker1.Month = 1 Then
If Cdd = 29 Then
NbreJour = 90
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 90
Else
NbreJour = 89
End If

ElseIf Cdd = 31 Then If Year(DTPicker1.Value) "2008" Or Year(DTPicker1.Value) "2012" Or Year(DTPicker1.Value) = "2016" Or Year(DTPicker1.Value) = "2020" Or Year(DTPicker1.Value) = "2024" Then
NbreJour = 90
Else
NbreJour = 89
End If

Else If Year(DTPicker1.Value) "2008" Or Year(DTPicker1.Value) "2012" Or Year(DTPicker1.Value) = "2016" Or Year(DTPicker1.Value) = "2020" Or Year(DTPicker1.Value) = "2024" Then
NbreJour = 91
Else
NbreJour = 90
End If
End If
ElseIf DTPicker1.Month = 2 Then
If Cdd = 29 Then
NbreJour = 89
ElseIf Cdd = 30 Then If Year(DTPicker1.Value) "2008" Or Year(DTPicker1.Value) "2012" Or Year(DTPicker1.Value) = "2016" Or Year(DTPicker1.Value) = "2020" Or Year(DTPicker1.Value) = "2024" Then
NbreJour = 93
Else
NbreJour = 92
End If

ElseIf Cdd = 31 Then If Year(DTPicker1.Value) "2008" Or Year(DTPicker1.Value) "2012" Or Year(DTPicker1.Value) = "2016" Or Year(DTPicker1.Value) = "2020" Or Year(DTPicker1.Value) = "2024" Then
NbreJour = 93
Else
NbreJour = 92
End If

Else
NbreJour = 89
End If

ElseIf DTPicker1.Month = 3 Then
If Cdd = 29 Then
NbreJour = 91
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 91
Else
NbreJour = 91
End If

ElseIf Cdd = 31 Then
NbreJour = 90
Else
NbreJour = 91
End If

ElseIf DTPicker1.Month = 4 Then
If Cdd = 29 Then
NbreJour = 91
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 92
Else
NbreJour = 91
End If

ElseIf Cdd = 31 Then
NbreJour = 92
Else
NbreJour = 91
End If

ElseIf DTPicker1.Month = 5 Then
If Cdd = 29 Then
NbreJour = 91
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 91
Else
NbreJour = 92
End If

ElseIf Cdd = 31 Then
NbreJour = 92
Else
NbreJour = 92
End If

ElseIf DTPicker1.Month = 6 Then
If Cdd = 29 Then
NbreJour = 90
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 92
Else
NbreJour = 90
End If

ElseIf Cdd = 31 Then
NbreJour = 91
Else
NbreJour = 92
End If

ElseIf DTPicker1.Month = 7 Then
If Cdd = 29 Then
NbreJour = 92
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 92
Else
NbreJour = 92
End If

ElseIf Cdd = 31 Then
NbreJour = 92
Else
NbreJour = 92
End If

ElseIf DTPicker1.Month = 8 Then
If Cdd = 29 Then
NbreJour = 91
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 91
Else
NbreJour = 91
End If

ElseIf Cdd = 31 Then
NbreJour = 91
Else
NbreJour = 92
End If


ElseIf DTPicker1.Month = 9 Then
If Cdd = 29 Then
NbreJour = 90
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 92
Else
NbreJour = 91
End If

ElseIf Cdd = 31 Then
NbreJour = 91
Else
NbreJour = 92
End If
'NbreJour = 30
ElseIf DTPicker1.Month = 10 Then
If Cdd = 29 Then
NbreJour = 92
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 92
Else
NbreJour = 92
End If

ElseIf Cdd = 31 Then
NbreJour = 92
Else
NbreJour = 92
End If

ElseIf DTPicker1.Month = 11 Then
If Cdd = 29 Then
NbreJour = 90
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then
NbreJour = 90
Else
NbreJour = 91
End If



ElseIf Cdd = 31 Then
NbreJour = 90
Else
NbreJour = 92
End If

ElseIf DTPicker1.Month = 12 Then
If Cdd = 29 Then
NbreJour = 91
ElseIf Cdd = 30 Then
If NbJourDuMois(Month(DTPicker1.Value)) = 30 Then

NbreJour = 91
Else If Year(DTPicker1.Value) "2007" Or Year(DTPicker1.Value) "2011" Or Year(DTPicker1.Value) = "2015" Or Year(DTPicker1.Value) = "2019" Or Year(DTPicker1.Value) = "2023" Then
NbreJour = 91
Else
NbreJour = 90
End If

End If

ElseIf Cdd = 31 Then
NbreJour = 91
Else
NbreJour = 31
End If

End If

End If

4 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 nov. 2005 à 19:00
sùrement plus simple avec dateDiff()

MsgBox DateDiff("d", "01/01/2005", DTPicker1.Value)

réponse directe:

MsgBox DTPicker1.Value - CDate("01/01/2005")


Daniel
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
30 nov. 2005 à 19:04
Salut
En regardant l'aide de DateDiff, tu verras qu'on peut calculer beaucoup de choses : secondes, minutes, heures, jours, semaines, mois, trimestres, années : Il suffit de changer le "d" du 1er paramètre

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
30 nov. 2005 à 20:32
... Ou comment écoeuré un gars qui a pondu 300 lignes de code qui peuvent être remplacé par .... 1 ligne de code !!!!!!!!!
Courage aakpa !!! au moins tu peux te dire que maintenant tu sais faire des If .. Then ... ElseIf ... End If

CR
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
30 nov. 2005 à 20:47
Bonsoir,
Exemple en utilisant DateDiff et DatePart.
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
xDate = InputBox("Saisir la date de retraite sous la forme jj/mm/aaaa"," Décompte Retraite !!!!","30/06/2006")
'xDate = "30/06/2006" '
j1 = DatePart("w", xDate)
j2 = Array("","Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi")
jj = j2(j1)
m1 = DatePart("m", xDate)
m2 = Array("","janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre")
mm = m2(m1)
Result = WshShell.Popup("Votre départ à la retraite étant prévu le " _
& jj & " " & Left(xDate,2) & " " & mm & " " _
& Right(xDate,4) & " " & vbcrlf & vbcrlf _
& "Il ne vous reste plus que ........" & vbcrlf _
& vbcrlf & " " & DateDiff("d", Now, xDate) _
& " jours ........ avant de partir à la pêche !!!!!", 30, "Décompte de la retraite")
0
Rejoignez-nous