OVH Cloud OVH Cloud

Schmilblick [AV] ;o)))

10 réponses
Avatar
Modeste
Bonsour=AE AV, bonsour=AE =E0 tous
Oui schmilblick est le mot....

lors de l'explication =E0 des coll=E9gues l'utilisation de la=20
fonction "non document=E9e" DATEDIF,=20
'=3DDATEDIF(A1,A2,"y") & " ans " &DATEDIF(A1,A2,"ym") &"=20
mois " & DATEDIF(A1,A2,"yd") & " jrs"

j'ai =E9galement utilis=E9 une fonction (=E9prouv=E9e) perso de=20
Laurent Longre :
http://groups.google.fr/groups?
hl=3Dfr&lr=3D&q=3Ddifferencedate+longre+group%
3Amicrosoft.public.fr.excel&btnG=3DRechercher

Function AGEAMJ(date1 As Date, date2 As Date) As String
'd'apr=E9s Laurent Longre adaptation GeeDee
Application.Volatile
Dim XA As Long, XM As Long, XJ As Long, D1 As Long, D2 As=20
Long
D1 =3D Int(date1): D2 =3D Int(date2)
XA =3D Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")
AGEAMJ =3D XA & IIf(XA > 1, " ans, ", " an, ")
XM =3D Evaluate("DATEDIF(" & D1 & "," & D2 & ",""ym""")
AGEAMJ =3D AGEAMJ & IIf(XM <> 0, XM & " mois, ", "")
XJ =3D Evaluate("DATEDIF(" & D1 & "," & D2 & ",""md""")
AGEAMJ =3D AGEAMJ & XJ & IIf(XJ > 1, " jours", " jour")
End Function

tout va bien, merveilleux, formidable, indispensable
bref que des =E9loges... ;o))
(rendons =E0 Filochard ce qui est =E0 Filochard)

voila t'y pas que ma candide neu-neu de coll=E8gue ;o)
tape DATEDIFF dans l'aide de l'=E9diteur VBA ....
je vous le donne Emile ???
la fonction DATEDIFF VBA est document=E9e !!!!!=20

et c'est l=E0 qu'est le schmilblick :
la syntaxe n'est pas la m=EAme, parait plus riche...

mais je n'arrive pas =E0 obtenir par adaptation un r=E9sultat=20
similaire au Evaluate si cher =E0 notre pr=E9sident=20
!!!??? ###@=BF

Function AGEAMJ2(date1 As Date, date2 As Date) As String
'd'apr=E9s Laurent Longre adaptation GeeDee
Application.Volatile
Dim XA As Long, XM As Long, XJ As Long, D1 As Long, D2 As=20
Long
D1 =3D Int(date1): D2 =3D Int(date2)
XA =3D DateDiff("yyyy", D1, D2) - 1
AGEAMJ2 =3D XA & IIf(XA <> 1, " ans, ", " an, ")
XM =3D DateDiff("m", D1, D2)
AGEAMJ2 =3D AGEAMJ2 & IIf(XM <> 0, XM & " mois, ", "")
XJ =3D DateDiff("d", D1, D2)
AGEAMJ2 =3D AGEAMJ2 & XJ & IIf(XJ <> 1, " jours", "=20
jour")
End Function

adaptation possible ou pas avec DATEDIFF ????
serait-ce un d=E9fi pour le blog de Gaetan ?? ;o)))

;o))
@+

10 réponses

Avatar
AV
voila t'y pas que ma candide neu-neu de collègue ;o)
tape DATEDIFF dans l'aide de l'éditeur VBA ....
je vous le donne Emile ???
la fonction DATEDIFF VBA est documentée !!!!!


Bon, jusque là, pas de surprise !

...............
adaptation possible ou pas avec DATEDIFF ????


Surement, mais cette fonction ne gère pas bien les Jours = 0 alors tant qu'à
faire de l'Evaluate, je propose ça :

Function DATDIF(Déb As Date, Fin As Date) 'AV d'après LL
DATDIF = Evaluate("TRIM(IF(" & Fin * 1 & "-" & Déb * 1 & ",TEXT(DATEDIF(" & Déb
* 1 & "," & Fin * 1 & ",""y""),""[>1]0"""" ans"""";[>]""""1
an"""";"")&TEXT(DATEDIF(" & Déb * 1 & "," & Fin * 1 & ",""ym""),""[>] 0"""" mois
""""; "")&TEXT(DATEDIF(" & Déb * 1 & "," & Fin * 1 & ",""md""),""[>1]0""""
jours"""";[>]""""1 jour"""";""),""0 jour""))")
End Function

ATTENTION : une seule ligne d'instruction pour DATDIF = ...........

AV

Avatar
Modeste
;o)))
j'entends bien président ....
je suis également un trés chaud partisant de Evaluate !!!

pour moi le schmilblick était :
dans l'utilisation de la fonction VBA DATEDIFF (2 F)
non dans l'utilisation de la formule calcul DATEDIF (1 F)

tu me dira cela ne fait qu'un ffffff.... de plus ;o))
notament la non-possiblité d'écrire "ym" ou "yd"

Sub JPS()
Dim datejps As Date
datejps = DateValue("12 fév 1900")

MsgBox DateDiff("Q", datejps, Now) & " trimestres" _
& Chr(10) & DateDiff("ww", datejps, Now) & "
semaines", , "Scud ?????"

MsgBox "dans " & DateDiff("d", Now, DateValue("17 fév
2005")) _
& " jour(s)", vbExclamation, "Anniversaire du
patriarche ;o)))"

MsgBox DateDiff("yyyy", datejps, Now) & " ans " & _
DateDiff("m", datejps, Now) & " mois " & _
DateDiff("d", datejps, Now) & " jrs",
vbCritical, "Age du patriarche ?? Scud !!!"
'------- erreur là
MsgBox DateDiff("yyyy", datejps, Now) & " ans " & _
DateDiff("ym", datejps, Now) & " mois " & _
DateDiff("yd", datejps, Now) & " jrs"
End Sub
-----Message d'origine-----
voila t'y pas que ma candide neu-neu de collègue ;o)
tape DATEDIFF dans l'aide de l'éditeur VBA ....
je vous le donne Emile ???
la fonction DATEDIFF VBA est documentée !!!!!


Bon, jusque là, pas de surprise !

................
adaptation possible ou pas avec DATEDIFF ????


Surement, mais cette fonction ne gère pas bien les Jours
= 0 alors tant qu'à

faire de l'Evaluate, je propose ça :

Function DATDIF(Déb As Date, Fin As Date) 'AV d'après LL
DATDIF = Evaluate("TRIM(IF(" & Fin * 1 & "-" & Déb * 1
& ",TEXT(DATEDIF(" & Déb

* 1 & "," & Fin * 1 & ",""y""),""[>1]0"""" ans"""";
[>]""""1

an"""";"")&TEXT(DATEDIF(" & Déb * 1 & "," & Fin * 1
& ",""ym""),""[>] 0"""" mois

""""; "")&TEXT(DATEDIF(" & Déb * 1 & "," & Fin * 1
& ",""md""),""[>1]0""""

jours"""";[>]""""1 jour"""";""),""0 jour""))")
End Function

ATTENTION : une seule ligne d'instruction pour DATDIF
= ...........


AV



.




Avatar
AV
<pour moi le schmilblick était :
<dans l'utilisation de la fonction VBA DATEDIFF (2 F)
<non dans l'utilisation de la formule calcul DATEDIF (1 F)


Disons que vu le nbre de ligne, j'ai eu un peu la flemme d'examiner donc j'ai
testé > j'ai trouvé qu'il y avait un couac > j'ai proposé autre chose et .... je
me suis arrêté là...complétement épuisé !

Pour le reste, faudra attendre un passant qui passe ou que je m'y mette le nez
car, pour l'heure, faut que je m'échappe...

AV
Avatar
Daniel.M
Bonjour Modeste,

adaptation possible ou pas avec DATEDIFF ????


Non pas d'après moi.
C'est-à-dire qu'il faudrait inclure de la logique pour savoir si les numéros de
mois sont plus grands, et si les jours sont plus grands, parce que les
paramètres de DATEDIFF ne 'prévoient' pas cette possibilité.

Donc, il n'y a pas d'avantages, AMA, d'utiliser DATEDIFF. Il vaut mieux faire
tout à la mi-mine si on désire faire fi des EVALUATE (et évidemment, il ne faut
pas compter sur Alain qui, lui, en rajoute une couche... ;-) )


Function AGEAMJ3(date1 As Date, date2 As Date) As String
'd'aprés Laurent Longre adaptation GeeDee, réadaptation Daniel M. ;-)

Dim n As Long
Dim An1 As Integer, An2 As Integer
Dim Mois1 As Integer, Mois2 As Integer
Dim Jour1 As Integer, Jour2 As Integer

An1 = Year(date1): Mois1 = Month(date1): Jour1 = Day(date1)
An2 = Year(date2): Mois2 = Month(date2): Jour2 = Day(date2)

n = An2 - An1 + (Mois1 > Mois2 Or (Mois1 = Mois2 And Jour1 > Jour2))
AGEAMJ3 = n & IIf(n > 1, " ans", " an")

n = Mois2 - Mois1

If Jour1 > Jour2 Then n = n - 1
If n < 0 Then n = n + 12

AGEAMJ3 = AGEAMJ3 & IIf(n <> 0, ", " & n & " mois", "")

n = Jour2 - Jour1
If n < 0 Then n = n + Day(date2 - Day(date2)) ' rajoute le nombre de jour du
mois précédent

AGEAMJ3 = AGEAMJ3 & IIf(n = 0, "", ", " & n & IIf(n <> 1, " jours", " jour"))

End Function

Salutations,

Daniel M.

Avatar
Modeste
;o)))
Merci Daniel....
on oublie donc ce DATEDIFF avec x fffffff.....

ta solution ne pouvant que donner un résultat correct !!!
cela confirme mes élucubrations, j'ai encore planché sur
un sujet comme disaient les shadoks :

"s'il n'y a pas de solution, il n'y a pas de probleme !!!"

pfffff... on en restera au VAleureux eVAluate d'AV!!!!
;o)))
@+
-----Message d'origine-----
Bonjour Modeste,

adaptation possible ou pas avec DATEDIFF ????


Non pas d'après moi.
C'est-à-dire qu'il faudrait inclure de la logique pour
savoir si les numéros de

mois sont plus grands, et si les jours sont plus grands,
parce que les

paramètres de DATEDIFF ne 'prévoient' pas cette
possibilité.


Donc, il n'y a pas d'avantages, AMA, d'utiliser
DATEDIFF. Il vaut mieux faire

tout à la mi-mine si on désire faire fi des EVALUATE (et
évidemment, il ne faut

pas compter sur Alain qui, lui, en rajoute une
couche... ;-) )



Function AGEAMJ3(date1 As Date, date2 As Date) As String
'd'aprés Laurent Longre adaptation GeeDee, réadaptation
Daniel M. ;-)


Dim n As Long
Dim An1 As Integer, An2 As Integer
Dim Mois1 As Integer, Mois2 As Integer
Dim Jour1 As Integer, Jour2 As Integer

An1 = Year(date1): Mois1 = Month(date1): Jour1 = Day
(date1)

An2 = Year(date2): Mois2 = Month(date2): Jour2 = Day
(date2)


n = An2 - An1 + (Mois1 > Mois2 Or (Mois1 = Mois2 And
Jour1 > Jour2))

AGEAMJ3 = n & IIf(n > 1, " ans", " an")

n = Mois2 - Mois1

If Jour1 > Jour2 Then n = n - 1
If n < 0 Then n = n + 12

AGEAMJ3 = AGEAMJ3 & IIf(n <> 0, ", " & n & " mois", "")

n = Jour2 - Jour1
If n < 0 Then n = n + Day(date2 - Day(date2)) ' rajoute
le nombre de jour du

mois précédent

AGEAMJ3 = AGEAMJ3 & IIf(n = 0, "", ", " & n & IIf(n <>
1, " jours", " jour"))


End Function

Salutations,

Daniel M.







.




Avatar
AV
pas compter sur Alain qui, lui, en rajoute une couche... ;-) )


Elle est pas belle ma "couche" ?
;-)
AV

Avatar
AV
pfffff... on en restera au VAleureux eVAluate d'AV!!!!


Je savais pouvoir compter sur ton soutien !
AV

Avatar
Daniel.M
Oui, pas de problème pour ceux qui ne tremblent pas devant EVALUATE. :-)

Rajouter une couche: En remettre. Comme pour la peinture. Je crois comprendre
que ce n'est pas une expression fréquente chez les cousins.

Salutations,

Daniel M.

"AV" wrote in message
news:%
pas compter sur Alain qui, lui, en rajoute une couche... ;-) )


Elle est pas belle ma "couche" ?
;-)
AV





Avatar
GD
;o)))
si ... si... Daniel.M cette expression est trés connue chez nous !!!!
mais on ne remet pas une couche pour faire beau ,
mais plutot pour signifier à l'interlocuteur qu'il a la comprehension lente
!!!!
de là l'expression :
"t'ain , celui-la il tient une sacrée couche !!!"

tu comprendra donc au passage que la souriette de notre AV n'est pas
toujours innocente !!!
Modestement je ne me suis pas senti concerné ...
;o)))

Oui, pas de problème pour ceux qui ne tremblent pas devant EVALUATE.
:-)

Rajouter une couche: En remettre. Comme pour la peinture. Je crois
comprendre que ce n'est pas une expression fréquente chez les cousins.

Salutations,

Daniel M.

"AV" wrote in message
news:%
pas compter sur Alain qui, lui, en rajoute une couche... ;-) )


Elle est pas belle ma "couche" ?
;-)
AV





Avatar
AV
tu comprendra donc au passage que la souriette de notre AV n'est pas
toujours innocente !!!


Ben là tu es parti dans une interprétation très libre .....

AV