Magic_Doctor
XLDnaute Barbatruc
Bonjour,
Je voudrais connaître le nombre de jours entre un mois postérieur d'un mois donné (que j'ai appelé "MoisClôture") et celui-ci, dans une année de toujours 365 jours.
Je m'explique. Supposons que le mois dit "MoisClôture" soit le mois d'avril et que le mois postérieur soit le mois de septembre. Je voudrais alors connaître le nombre de jours entre le mois de septembre (inclu) et le mois d'avril de l'année suivante (inclu lui aussi).
Pour ce faire, j'ai rédigé la routine suivante qui fonctionne :
Cependant, je suis obligé de faire 2 boucles. Je me demandais si l'on ne pouvait pas y arriver avec seulement un boucle. J'ai tenté de la manière suivante, mais ça plante :
Où me suis-je planté et est-ce possible ?
Je voudrais connaître le nombre de jours entre un mois postérieur d'un mois donné (que j'ai appelé "MoisClôture") et celui-ci, dans une année de toujours 365 jours.
Je m'explique. Supposons que le mois dit "MoisClôture" soit le mois d'avril et que le mois postérieur soit le mois de septembre. Je voudrais alors connaître le nombre de jours entre le mois de septembre (inclu) et le mois d'avril de l'année suivante (inclu lui aussi).
Pour ce faire, j'ai rédigé la routine suivante qui fonctionne :
VB:
Sub NombreJours1() 'OK
Dim x As Byte
Dim i As Byte
Dim nbjr1 As Integer, nbjr2 As Integer, totalnbjr As Integer
mesmois = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) 'année de 365 jours
MoisClôture = 4 'avril
x = 9 'septembre
For i = x - 1 To UBound(mesmois) 'on va jusqu'à la fin de l'année civile
nbjr1 = mesmois(i) + nbjr1 '1ère tranche du nombre de jours restant
Next
For i = 0 To MoisClôture - 1 'on va jusqu'au mois de clôture inclu
nbjr2 = mesmois(i) + nbjr2 '2ème tranche du nombre de jours restant
Next
totalnbjr = nbjr1 + nbjr2
[c15] = totalnbjr 'vérification sur la feuille
End Sub
VB:
Sub NombreJours2() 'Pas OK
Dim x As Integer
Dim i As Integer '"m" est déclaré "As Integer" dans la fonction "Multiple"
Dim totalnbjr As Integer
mesmois = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) 'année de 365 jours
MoisClôture = 4 'avril
x = 9 'septembre
For i = x - 1 To UBound(mesmois) + MoisClôture - 1
totalnbjr = mesmois(MultipleMois(i, 12)) + totalnbjr
Next
[c15] = totalnbjr 'vérification sur la feuille
End Sub
------------------------------------------------------------------
Function Multiple(m As Integer, seuil As Byte) As Byte
'Fonction utilisée ailleurs dans l'application, alors j'en profite
'- m : variable
'- seuil : valeur seuil qui ne peut être dépassée par m
'Exemple : si seuil = 24, si m = 1 --> 1 / si m = 25 --> 1
'Dans ce cas, quel que soit m, le résultat sera toujours compris dans l'intervalle d'entiers [1 , 24]
'Si seuil = 12, l'intervalle d'entiers sera : [1 , 12]
'Magic_Doctor
m = m - seuil * (m \ seuil)
Multiple = IIf(m = 0, seuil, m)
End Function
Dernière édition: