Bonjour,
Je n'arrive pas à trouver le paramètre à utiliser avec la fonction DiffDate() pour avoir un affichage de la différence entre 2 dates de la forme: jours/mois/année.
Pourriez vous m'éclairer?
Bonjour,
Je n'arrive pas à trouver le paramètre à utiliser avec la fonction DiffDate() pour avoir un affichage de la différence entre 2 dates de la forme: jours/mois/année.
Pourriez vous m'éclairer?
Bonjour
J'ai du mal à comprendre ce que tu veux :
Tu veux les paramétres pour utiliser la fonction DiffDate(), ou visualiser le résultat sous la forme jj/mm/yyyy ?
Si c'est le deuxième cas il va falloir passer par une autre astuce, en effet DiffDate te renvoie un nombre et non une date. Il faut que tu passes par la fonction DateAdd (ou AjDate) pour ajouter à ta première date la valeur que tu viens de trouver.
Starec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Function diffeudate(a As Date, b As Date) As Long Dim dep As Date Dim fin As Date Dim anniversaire As Date Dim annmois As Date Dim an As Long Dim mois As Long Dim jour As Long If a >= b Then fin = a dep = b Else fin = b dep = a End If If DateSerial(Year(fin), Month(dep), Day(dep)) <= fin Then anniversaire = DateSerial(Year(fin), Month(dep), Day(dep)) Else: anniversaire = DateSerial(Year(fin) - 1, Month(dep), Day(dep)) End If an = Year(anniversaire) - Year(dep) If Day(anniversaire) > Day(fin) Then annmois = DateSerial(Year(fin), Month(fin) - 1, Day(dep)) Else annmois = DateSerial(Year(fin), Month(fin), Day(dep)) End If mois = (12 * (Year(annmois) - Year(anniversaire))) - Month(anniversaire) + Month(annmois) jour = CLng(fin) - CLng(annmois) diffeudate = (an * 10000) + (mois * 100) + jour End Function
Elle est pas belle la vie ?
Euh sans passer par du vb ce n'estpas possible?
En fait j'aimerais pouvoir afficher par exemple l'age d'une personne qui serait dans ma base de donnée.
En gros, afficher le résultat d'une différence entre 2 dates, mais pas juste en nombre de jours! ( du genre afficher "1an 4mois et 3jours" au lieu de "490" comme le fait ma requête actuelle)age: DiffDate("d";[date de naissance];Date();2)
c'est ce que fait la fonction
désolé je ne sais pas faire sans vba et d'ailleurs cela donnerait avec les fonctions intégrées un algo assez long et bien illisible
Elle est pas belle la vie ?
D'accord, s'il faut l'utiliser, c'est parti alors!
Mais euh... comment utiliser une telle fonction dans une requete en entrant donc 2 champs en paramètre? Je n'en ai jamais utilisé
tu fais alt f11
insertion module
et tu colles la fonction
les fonctions persos s'utilisent ensuite comme les fonctions intégrées
au lieu de faire diffdate("m";unedate;une autredate) tu fais
diffeudate(unedate;uneautredate)
Elle est pas belle la vie ?
Merciii a toi random!! C'est parfait!
J'ai juste modifié le type, et je retourne un string avec un affichage plus clair:
Cela n'apporte rien ici, mais il fallait que je post mes premières lignes de code en vb quelque part sorryIf an = 0 Then
diffeudate = mois & "mois" & " " & jour & "jours"
End If
If (an = 0) And (mois = 0) Then
diffeudate = jour & "jours"
End If
If (an <> 0) And (mois <> 0) Then
diffeudate = an & "ans" & " " & mois & "mois" & " " & jour & "jours"
End If
Bon bah Radom, je te nomme sauveur attitré en vb lol ( pour avoir résolu presque tous mes topic!!)
Encore une fois, merci!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager