Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Format de date dans une macro

11 réponses
Avatar
garnote
Bonsoir, Bonsoir,

Dans cette macro, je voudrais faire apparaître
dans mon MsgBox :
Le mercredi 18 février 2009 au lieu de 18/02/09
Le lundi 29 décembre 2042 au lieu de 29/12/2042
33 ans 11 mois 9 jours au lieu de 09/11/33

Comment faire ?
Et si vous pouvez simplifier la macro, allez-y !

Option Base 1
Sub Escargot()
Dim L() As Long
Dim d() As Double
Dim dd As Date
Dim dc As Date
Dim temps As Date
ReDim d(1)
ReDim L(1)
dd = "18/02/2009"
d(1) = 10
L(1) = 100
i = 1
Do Until d(i) > L(i)
i = i + 1
ReDim Preserve d(i)
ReDim Preserve L(i)
L(i) = 100 * i
d(i) = d(i - 1) * L(i) / L(i - 1) + d(1)
Loop
dc = dd + i
temps = dc - dd
MsgBox "Date de départ :" & vbLf & dd & vbLf & "Date de la chute :" & vbLf & dc _
& vbLf & "Temps requis :" & vbLf & temps
End Sub

10 réponses

1 2
Avatar
Modeste
Bonsour® garnote

Bonsoir, Bonsoir,

Dans cette macro, je voudrais faire apparaître
dans mon MsgBox :
Le mercredi 18 février 2009 au lieu de 18/02/09
Le lundi 29 décembre 2042 au lieu de 29/12/2042
33 ans 11 mois 9 jours au lieu de 09/11/33



MsgBox "Date de départ :" & vbLf & Format(dd ,"dd mmmm yyyy") & vbLf _
& "Date de la chute :" & vbLf & Format(dc, "dd mmmm yyyy") & vbLf _
& "Temps requis :" & vbLf & (year(temps)-1900) & " ans " & month(temps)-1 &" mois " & day(temps) &" jour(s)"

!!!!!
Attention je doute du age=onze mois tiré d'un format de date ;o)))

i.e le 01/01/33 le temps est 1 jour et non 1 mois et 1 jours
voir à utiliser datedif
temps=age(dd,dc)
Function AGE(Date1 As Date, Date2 As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(Date1): D2 = Int(Date2)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")
AGE = Elt & IIf(Elt > 1, " ans, ", " an,") & _
Evaluate("DATEDIF(" & D1 & "," & D2 & ",""ym""") & " mois, "
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""md""")
AGE = AGE & Elt & IIf(Elt > 1, " jours", " jour")
End Function
Avatar
garnote
Ave,

Dans une feuille de calcul, je formate A1 et B1
"Le " jjjj j mmmm aaaa
J'entre 18/02/2009 en A1et j'obtiens ce que je veux :
1) Le mercredi 18 février 2009
En B1, j'entre ¡+12367 et j'obtiens ce que je veux :
2 ) Le lundi 29 décembre 2042
Je formate C1
aa" ans " m" mois" j" jour(s)"
j'entre ±-C1 et j'obtiens :
3) 33 ans 11 mois 9 jour(s)

Si j'utilise la macro avec temps = dc - dd,
les résultats 1) et 2) coïncident avec les tiens
mais elle renvoie 33 ans 10 mois 9 jour(s).
Qui a raison, 3) ou toi ?

Et si j'utilise la macro avec temps = AGE(dd, dc),
je reçois le message « Incompatibilité de type »
et le débogage me renvoie à :
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")

Quel fouillis pour mes petites méninges ;-)

A+

Serge



"Modeste" a écrit dans le message de news:
Bonsour® garnote

Bonsoir, Bonsoir,

Dans cette macro, je voudrais faire apparaître
dans mon MsgBox :
Le mercredi 18 février 2009 au lieu de 18/02/09
Le lundi 29 décembre 2042 au lieu de 29/12/2042
33 ans 11 mois 9 jours au lieu de 09/11/33



MsgBox "Date de départ :" & vbLf & Format(dd ,"dd mmmm yyyy") & vbLf _
& "Date de la chute :" & vbLf & Format(dc, "dd mmmm yyyy") & vbLf _
& "Temps requis :" & vbLf & (year(temps)-1900) & " ans " & month(temps)-1 &" mois " & day(temps) &" jour(s)"

!!!!!
Attention je doute du age=onze mois tiré d'un format de date ;o)))

i.e le 01/01/33 le temps est 1 jour et non 1 mois et 1 jours
voir à utiliser datedif
temps=age(dd,dc)
Function AGE(Date1 As Date, Date2 As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(Date1): D2 = Int(Date2)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")
AGE = Elt & IIf(Elt > 1, " ans, ", " an,") & _
Evaluate("DATEDIF(" & D1 & "," & D2 & ",""ym""") & " mois, "
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""md""")
AGE = AGE & Elt & IIf(Elt > 1, " jours", " jour")
End Function
Avatar
garnote
Cette formule :
ÚTEDIF(A1;B1;"y") & " ans " & DATEDIF(A1;B1;"ym") & " mois " & DATEDIF(A1;B1;"md") & " jour(s)"
me renvoie 33 ans 10 mois 11 jours.
Est-elle écrite correctement et peut-on s'y fier ?


"garnote" a écrit dans le message de news: %
Ave,

Dans une feuille de calcul, je formate A1 et B1
"Le " jjjj j mmmm aaaa
J'entre 18/02/2009 en A1et j'obtiens ce que je veux :
1) Le mercredi 18 février 2009
En B1, j'entre ¡+12367 et j'obtiens ce que je veux :
2 ) Le lundi 29 décembre 2042
Je formate C1
aa" ans " m" mois" j" jour(s)"
j'entre ±-C1 et j'obtiens :
3) 33 ans 11 mois 9 jour(s)

Si j'utilise la macro avec temps = dc - dd,
les résultats 1) et 2) coïncident avec les tiens
mais elle renvoie 33 ans 10 mois 9 jour(s).
Qui a raison, 3) ou toi ?

Et si j'utilise la macro avec temps = AGE(dd, dc),
je reçois le message « Incompatibilité de type »
et le débogage me renvoie à :
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")

Quel fouillis pour mes petites méninges ;-)

A+

Serge



"Modeste" a écrit dans le message de news:
Bonsour® garnote

Bonsoir, Bonsoir,

Dans cette macro, je voudrais faire apparaître
dans mon MsgBox :
Le mercredi 18 février 2009 au lieu de 18/02/09
Le lundi 29 décembre 2042 au lieu de 29/12/2042
33 ans 11 mois 9 jours au lieu de 09/11/33



MsgBox "Date de départ :" & vbLf & Format(dd ,"dd mmmm yyyy") & vbLf _
& "Date de la chute :" & vbLf & Format(dc, "dd mmmm yyyy") & vbLf _
& "Temps requis :" & vbLf & (year(temps)-1900) & " ans " & month(temps)-1 &" mois " & day(temps) &" jour(s)"

!!!!!
Attention je doute du age=onze mois tiré d'un format de date ;o)))

i.e le 01/01/33 le temps est 1 jour et non 1 mois et 1 jours
voir à utiliser datedif
temps=age(dd,dc)
Function AGE(Date1 As Date, Date2 As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(Date1): D2 = Int(Date2)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")
AGE = Elt & IIf(Elt > 1, " ans, ", " an,") & _
Evaluate("DATEDIF(" & D1 & "," & D2 & ",""ym""") & " mois, "
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""md""")
AGE = AGE & Elt & IIf(Elt > 1, " jours", " jour")
End Function




Avatar
isabelle
ou plutot :

MsgBox "Date de départ :" & vbLf & Format(dd, "dddd dd mmmm yyyy") & vbLf _
& "Date de la chute :" & vbLf & Format(dc, "dddd dd mmmm
yyyy") & vbLf _
& "Temps requis :" & vbLf & (Year(temps) - 1900) & " ans " &
Month(temps) - 1 & " mois " & Day(temps) & " jour(s)"

isabelle

garnote a écrit :
Ave,

Dans une feuille de calcul, je formate A1 et B1
"Le " jjjj j mmmm aaaa
J'entre 18/02/2009 en A1et j'obtiens ce que je veux :
1) Le mercredi 18 février 2009
En B1, j'entre ¡+12367 et j'obtiens ce que je veux :
2 ) Le lundi 29 décembre 2042
Je formate C1
aa" ans " m" mois" j" jour(s)"
j'entre ±-C1 et j'obtiens :
3) 33 ans 11 mois 9 jour(s)

Si j'utilise la macro avec temps = dc - dd,
les résultats 1) et 2) coïncident avec les tiens
mais elle renvoie 33 ans 10 mois 9 jour(s).
Qui a raison, 3) ou toi ?

Et si j'utilise la macro avec temps = AGE(dd, dc),
je reçois le message « Incompatibilité de type »
et le débogage me renvoie à :
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")

Quel fouillis pour mes petites méninges ;-)

A+

Serge



"Modeste" a écrit dans le message de news:
Bonsour® garnote


Bonsoir, Bonsoir,

Dans cette macro, je voudrais faire apparaître
dans mon MsgBox :
Le mercredi 18 février 2009 au lieu de 18/02/09
Le lundi 29 décembre 2042 au lieu de 29/12/2042
33 ans 11 mois 9 jours au lieu de 09/11/33




MsgBox "Date de départ :" & vbLf & Format(dd ,"dd mmmm yyyy") & vbLf _
& "Date de la chute :" & vbLf & Format(dc, "dd mmmm yyyy") & vbLf _
& "Temps requis :" & vbLf & (year(temps)-1900) & " ans " & month(temps)-1 &" mois " & day(temps) &" jour(s)"

!!!!!
Attention je doute du age=onze mois tiré d'un format de date ;o)))

i.e le 01/01/33 le temps est 1 jour et non 1 mois et 1 jours
voir à utiliser datedif
temps=age(dd,dc)
Function AGE(Date1 As Date, Date2 As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(Date1): D2 = Int(Date2)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")
AGE = Elt & IIf(Elt > 1, " ans, ", " an,") & _
Evaluate("DATEDIF(" & D1 & "," & D2 & ",""ym""") & " mois, "
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""md""")
AGE = AGE & Elt & IIf(Elt > 1, " jours", " jour")
End Function





Avatar
Modeste
Bonsour® garnote

Cette formule :
ÚTEDIF(A1;B1;"y") & " ans " & DATEDIF(A1;B1;"ym") & " mois " &
DATEDIF(A1;B1;"md") & " jour(s)"
me renvoie 33 ans 10 mois 11 jours.
Est-elle écrite correctement et peut-on s'y fier ?



je pense honnetement que cela est correct !!!

mais la fonction précédente est tirée directement du site de Laurent Longre
http://xcell05.free.fr/pages/form/dateheure.htm#DATEDIF
et contient en effet des erreurs de syntaxe
quote manquante et parenthése fermante sur Evaluate !!!!

à qui se fier ??? ;o)))
voici ma correction :

Function AGE(Date1 As Date, Date2 As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(Date1): D2 = Int(Date2)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y"")")
AGE = Elt & IIf(Elt > 1, " ans, ", " an,") & _
Evaluate("DATEDIF(" & D1 & "," & D2 & ",""ym"")") & " mois, "
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""md"")")
AGE = AGE & Elt & IIf(Elt > 1, " jours", " jour")
End Function
Avatar
Modeste
Bonsour® isabelle

ou plutot :

MsgBox "Date de départ :" & vbLf & Format(dd, "dddd dd mmmm yyyy") &
vbLf _ & "Date de la chute :" & vbLf & Format(dc, "dddd dd
mmmm
yyyy") & vbLf _
& "Temps requis :" & vbLf & (Year(temps) - 1900) & " ans " &
Month(temps) - 1 & " mois " & Day(temps) & " jour(s)"



n'est-ce point exactement ce que je proposais initialement ??? ;o))))

MsgBox "Date de départ :" & vbLf & Format(dd ,"dd mmmm yyyy") & vbLf
_ & "Date de la chute :" & vbLf & Format(dc, "dd mmmm
yyyy") & vbLf _ & "Temps requis :" & vbLf &
(year(temps)-1900) & " ans " & month(temps)-1 &" mois " & day(temps)
&" jour(s)"





;ox
Avatar
isabelle
la différence est là

Format(dc, "dddd dd mmmm yyyy")
Format(dc, "dd mmmm yyyy")

y'a trop de "d" dans stistoire là ;-)

isabelle



Modeste a écrit :
Bonsour® isabelle


ou plutot :

MsgBox "Date de départ :" & vbLf & Format(dd, "dddd dd mmmm yyyy") &
vbLf _ & "Date de la chute :" & vbLf & Format(dc, "dddd dd
mmmm
yyyy") & vbLf _
& "Temps requis :" & vbLf & (Year(temps) - 1900) & " ans " &
Month(temps) - 1 & " mois " & Day(temps) & " jour(s)"




n'est-ce point exactement ce que je proposais initialement ??? ;o))))


MsgBox "Date de départ :" & vbLf & Format(dd ,"dd mmmm yyyy") & vbLf
_ & "Date de la chute :" & vbLf & Format(dc, "dd mmmm
yyyy") & vbLf _ & "Temps requis :" & vbLf &
(year(temps)-1900) & " ans " & month(temps)-1 &" mois " & day(temps)
&" jour(s)"






;ox



Avatar
Jacky
Bonsoir,

Mais non Isabelle, y avait pas trop d'caractères
;o)))

--
Salutations
JJ


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

la différence est là

Format(dc, "dddd dd mmmm yyyy")
Format(dc, "dd mmmm yyyy")

y'a trop de "d" dans stistoire là ;-)

isabelle



Modeste a écrit :
Bonsour® isabelle
ou plutot :

MsgBox "Date de départ :" & vbLf & Format(dd, "dddd dd mmmm yyyy") &
vbLf _ & "Date de la chute :" & vbLf & Format(dc, "dddd dd
mmmm yyyy") & vbLf _
& "Temps requis :" & vbLf & (Year(temps) - 1900) & " ans " &
Month(temps) - 1 & " mois " & Day(temps) & " jour(s)"




n'est-ce point exactement ce que je proposais initialement ??? ;o))))


MsgBox "Date de départ :" & vbLf & Format(dd ,"dd mmmm yyyy") & vbLf
_ & "Date de la chute :" & vbLf & Format(dc, "dd mmmm
yyyy") & vbLf _ & "Temps requis :" & vbLf &
(year(temps)-1900) & " ans " & month(temps)-1 &" mois " & day(temps)
&" jour(s)"





;ox





Avatar
Jacky
Bonsoir à tous,

je pense honnetement que cela est correct !!!


ah ! cet eternel problème de date ;o))
<> de 2 jours tout de même
http://www.cijoint.fr/cjlink.php?file=cj200902/cij70KWxwe.xls
--
Salutations
JJ


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

Bonsour® garnote

Cette formule :
ÚTEDIF(A1;B1;"y") & " ans " & DATEDIF(A1;B1;"ym") & " mois " &
DATEDIF(A1;B1;"md") & " jour(s)"
me renvoie 33 ans 10 mois 11 jours.
Est-elle écrite correctement et peut-on s'y fier ?



je pense honnetement que cela est correct !!!

mais la fonction précédente est tirée directement du site de Laurent Longre
http://xcell05.free.fr/pages/form/dateheure.htm#DATEDIF
et contient en effet des erreurs de syntaxe
quote manquante et parenthése fermante sur Evaluate !!!!

à qui se fier ??? ;o)))
voici ma correction :

Function AGE(Date1 As Date, Date2 As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(Date1): D2 = Int(Date2)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y"")")
AGE = Elt & IIf(Elt > 1, " ans, ", " an,") & _
Evaluate("DATEDIF(" & D1 & "," & D2 & ",""ym"")") & " mois, "
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""md"")")
AGE = AGE & Elt & IIf(Elt > 1, " jours", " jour")
End Function
Avatar
isabelle
;-)
isabelle

Jacky a écrit :
Bonsoir,

Mais non Isabelle, y avait pas trop d'caractères
;o)))




1 2