OVH Cloud OVH Cloud

calcul de date

7 réponses
Avatar
Flex
bonjour a tous
voila, j'ai une date (30/12/2004 par exemple) et je veux obtenir la date de
la "decade" supérieure en fonction d'un nombre choisi.
je m'explique:
si je saisi 3 ou 4ou....10 alors il me retourne 10/01/05
si je saisi 13 ou14ou....20alors il me retourne 20/01/05
ainsi de suite
bien entendu le nombre saisi ne peut pas depasser 31

Vous avez une idée, svp?
Merci

7 réponses

Avatar
RaMa
Bonjour
Sub eesss()
Dim nbJ As Integer
nbJ = Now - CDate("01/01/" & Year(Now))
MsgBox nbJ
End Sub

Salutations
RaMa

"Flex" a écrit dans le message de news:

bonjour a tous
voila, j'ai une date (30/12/2004 par exemple) et je veux obtenir la date
de la "decade" supérieure en fonction d'un nombre choisi.
je m'explique:
si je saisi 3 ou 4ou....10 alors il me retourne 10/01/05
si je saisi 13 ou14ou....20alors il me retourne 20/01/05
ainsi de suite
bien entendu le nombre saisi ne peut pas depasser 31

Vous avez une idée, svp?
Merci



Avatar
RaMa
Oups trompé de fil

"RaMa" a écrit dans le message de news:

Bonjour
Sub eesss()
Dim nbJ As Integer
nbJ = Now - CDate("01/01/" & Year(Now))
MsgBox nbJ
End Sub

Salutations
RaMa

"Flex" a écrit dans le message de news:

bonjour a tous
voila, j'ai une date (30/12/2004 par exemple) et je veux obtenir la date
de la "decade" supérieure en fonction d'un nombre choisi.
je m'explique:
si je saisi 3 ou 4ou....10 alors il me retourne 10/01/05
si je saisi 13 ou14ou....20alors il me retourne 20/01/05
ainsi de suite
bien entendu le nombre saisi ne peut pas depasser 31

Vous avez une idée, svp?
Merci







Avatar
RaMa
Bonjour
Une adaptation de Daniel M (non testée à fond!!)

ÚTE(ANNEE(A1);MOIS(A1)+(JOUR(A1)>29);MAX(10;PLAFOND(MOD(JOUR(A1)+1;30);10)))

Salutations
RaMa

"RaMa" a écrit dans le message de news:

Bonjour
Sub eesss()
Dim nbJ As Integer
nbJ = Now - CDate("01/01/" & Year(Now))
MsgBox nbJ
End Sub

Salutations
RaMa

"Flex" a écrit dans le message de news:

bonjour a tous
voila, j'ai une date (30/12/2004 par exemple) et je veux obtenir la date
de la "decade" supérieure en fonction d'un nombre choisi.
je m'explique:
si je saisi 3 ou 4ou....10 alors il me retourne 10/01/05
si je saisi 13 ou14ou....20alors il me retourne 20/01/05
ainsi de suite
bien entendu le nombre saisi ne peut pas depasser 31

Vous avez une idée, svp?
Merci







Avatar
Daniel.M
Salut,

Avec ta date en A1 et ton nombre choisi en B1, la formule suivante:

=MIN(MOD(DATE(ANNEE(A1);MOIS(A1)+{0;1};PLAFOND(B1;10))-A1;66))+A1

Mais tu ne dis pas ce qu'on fait si le nombre est 31 (arrondi à 40, mais il n'y
a pas de 40ième jour de mois) ou s'il est dans la vingtaine (arrondi à 30) et
que ce mois ne comporte pas 30 jours (comme Février).

Tu reprécises avec des exemples si besoin est.

Salutations,

Daniel M.

"Flex" wrote in message
news:
bonjour a tous
voila, j'ai une date (30/12/2004 par exemple) et je veux obtenir la date de
la "decade" supérieure en fonction d'un nombre choisi.
je m'explique:
si je saisi 3 ou 4ou....10 alors il me retourne 10/01/05
si je saisi 13 ou14ou....20alors il me retourne 20/01/05
ainsi de suite
bien entendu le nombre saisi ne peut pas depasser 31

Vous avez une idée, svp?
Merci




Avatar
Flex
Merci
la formule:
=MIN(MOD(DATE(ANNEE(A1);MOIS(A1)+{0;1};PLAFOND(B1;10))-A1;66))+A1
à l'air de fonctionner mais comment pour coder cela en vb pas vba

mon nombre est saisi dans un textbox et ma date est fourni par un DTPicker
je demande car je connais pas l'equivalent des fonction min, plafond,..

Merci





"Daniel.M" a écrit dans le message de
news:
Salut,

Avec ta date en A1 et ton nombre choisi en B1, la formule suivante:

=MIN(MOD(DATE(ANNEE(A1);MOIS(A1)+{0;1};PLAFOND(B1;10))-A1;66))+A1

Mais tu ne dis pas ce qu'on fait si le nombre est 31 (arrondi à 40, mais
il n'y
a pas de 40ième jour de mois) ou s'il est dans la vingtaine (arrondi à 30)
et
que ce mois ne comporte pas 30 jours (comme Février).

Tu reprécises avec des exemples si besoin est.

Salutations,

Daniel M.

"Flex" wrote in message
news:
bonjour a tous
voila, j'ai une date (30/12/2004 par exemple) et je veux obtenir la date
de
la "decade" supérieure en fonction d'un nombre choisi.
je m'explique:
si je saisi 3 ou 4ou....10 alors il me retourne 10/01/05
si je saisi 13 ou14ou....20alors il me retourne 20/01/05
ainsi de suite
bien entendu le nombre saisi ne peut pas depasser 31

Vous avez une idée, svp?
Merci








Avatar
Daniel.M
Soit
UneDate, la date qui provient du DTPicker
et
UnNombre (ce qui correspond à B1 dans la formule)


CompDate = DateSerial(Year(UneDate),
_ Month(UneDate), Int((UnNombre - 1) / 10) * 10 + 10)

If CompDate < UneDate Then ' si plus petit, prend le mois suivant
CompDate = DateSerial(Year(CompDate), _
Month(CompDate) + 1, Day(CompDate))
End If

Salutations,

Daniel M.

"Flex" wrote in message
news:
Merci
la formule:
=MIN(MOD(DATE(ANNEE(A1);MOIS(A1)+{0;1};PLAFOND(B1;10))-A1;66))+A1
à l'air de fonctionner mais comment pour coder cela en vb pas vba

mon nombre est saisi dans un textbox et ma date est fourni par un DTPicker
je demande car je connais pas l'equivalent des fonction min, plafond,..

Merci





"Daniel.M" a écrit dans le message de
news:
Salut,

Avec ta date en A1 et ton nombre choisi en B1, la formule suivante:

=MIN(MOD(DATE(ANNEE(A1);MOIS(A1)+{0;1};PLAFOND(B1;10))-A1;66))+A1

Mais tu ne dis pas ce qu'on fait si le nombre est 31 (arrondi à 40, mais
il n'y
a pas de 40ième jour de mois) ou s'il est dans la vingtaine (arrondi à 30)
et
que ce mois ne comporte pas 30 jours (comme Février).

Tu reprécises avec des exemples si besoin est.

Salutations,

Daniel M.

"Flex" wrote in message
news:
bonjour a tous
voila, j'ai une date (30/12/2004 par exemple) et je veux obtenir la date
de
la "decade" supérieure en fonction d'un nombre choisi.
je m'explique:
si je saisi 3 ou 4ou....10 alors il me retourne 10/01/05
si je saisi 13 ou14ou....20alors il me retourne 20/01/05
ainsi de suite
bien entendu le nombre saisi ne peut pas depasser 31

Vous avez une idée, svp?
Merci












Avatar
Flex
Merci
je cours l'essayer
"Daniel.M" a écrit dans le message de
news:
Soit
UneDate, la date qui provient du DTPicker
et
UnNombre (ce qui correspond à B1 dans la formule)


CompDate = DateSerial(Year(UneDate),
_ Month(UneDate), Int((UnNombre - 1) / 10) * 10 + 10)

If CompDate < UneDate Then ' si plus petit, prend le mois suivant
CompDate = DateSerial(Year(CompDate), _
Month(CompDate) + 1, Day(CompDate))
End If

Salutations,

Daniel M.

"Flex" wrote in message
news:
Merci
la formule:
=MIN(MOD(DATE(ANNEE(A1);MOIS(A1)+{0;1};PLAFOND(B1;10))-A1;66))+A1
à l'air de fonctionner mais comment pour coder cela en vb pas vba

mon nombre est saisi dans un textbox et ma date est fourni par un
DTPicker
je demande car je connais pas l'equivalent des fonction min, plafond,..

Merci





"Daniel.M" a écrit dans le message de
news:
Salut,

Avec ta date en A1 et ton nombre choisi en B1, la formule suivante:

=MIN(MOD(DATE(ANNEE(A1);MOIS(A1)+{0;1};PLAFOND(B1;10))-A1;66))+A1

Mais tu ne dis pas ce qu'on fait si le nombre est 31 (arrondi à 40,
mais
il n'y
a pas de 40ième jour de mois) ou s'il est dans la vingtaine (arrondi à
30)
et
que ce mois ne comporte pas 30 jours (comme Février).

Tu reprécises avec des exemples si besoin est.

Salutations,

Daniel M.

"Flex" wrote in message
news:
bonjour a tous
voila, j'ai une date (30/12/2004 par exemple) et je veux obtenir la
date
de
la "decade" supérieure en fonction d'un nombre choisi.
je m'explique:
si je saisi 3 ou 4ou....10 alors il me retourne 10/01/05
si je saisi 13 ou14ou....20alors il me retourne 20/01/05
ainsi de suite
bien entendu le nombre saisi ne peut pas depasser 31

Vous avez une idée, svp?
Merci