XL 2013 VBA insérer des retours à la ligne dans un résultat

  • Initiateur de la discussion Initiateur de la discussion Jouxte
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Jouxte

XLDnaute Occasionnel
Bonjour à toutes et toutes,
J'utilise un code (trouvé sur ce site) qui me permet de calculer un âge pour des dates avant 1900.

VB:
Function CalcAge(dat1 As Date, dat2 As Date) As String
Dim ans%, mois%, jours%
ans = Year(dat2) - Year(dat1) + (DateSerial(2000, Month(dat2), Day(dat2)) < DateSerial(2000, Month(dat1), Day(dat1)))
mois = Month(dat2) - Month(dat1) + (Day(dat2) < Day(dat1))
If mois < 0 Then mois = mois + 12
jours = dat2 - DateSerial(Year(dat2), Month(dat2), Day(dat1))
If jours < 0 Then jours = dat2 - DateSerial(Year(dat2), Month(dat2) - 1, Day(dat1))
CalcAge = IIf(ans, ans & " an" & IIf(ans > 1, "s", IIf(ans < -1, "s", "")), "") & " " & _
    IIf(mois, mois & " mois", "") & " " & IIf(jours, jours & " jour" & IIf(jours > 1, "s", ""), "")
CalcAge = Application.Trim(CalcAge) 'SUPPRESPACE
End Function

Le résultat apparait sur une seule ligne exemple ;
53 ans 3 mois 24 jours
J'aurais souhaité que le résultat apparaisse sur 3 lignes les années sur la première, les mois sur la seconde et les jours sur la troisième.
Par exemple :
53 ans
3 mois
24 jours

Y a-t-il une possibilité ?
Merci par avance pour vos réponses.
 
Bonjour Jouxte,
Le saut de ligne en VBA est vbCrLf.
Donc une possibilité en PJ avec :
VB:
Function CalcAge(dat1 As Date, dat2 As Date) As String
Dim ans%, mois%, jours%
ans = Year(dat2) - Year(dat1) + (DateSerial(2000, Month(dat2), Day(dat2)) < DateSerial(2000, Month(dat1), Day(dat1)))
mois = Month(dat2) - Month(dat1) + (Day(dat2) < Day(dat1))
If mois < 0 Then mois = mois + 12
jours = dat2 - DateSerial(Year(dat2), Month(dat2), Day(dat1))
If jours < 0 Then jours = dat2 - DateSerial(Year(dat2), Month(dat2) - 1, Day(dat1))
CalcAge = IIf(ans, ans & " an" & IIf(ans > 1, "s", IIf(ans < -1, "s", "")), "") & "" & vbCrLf & _
    IIf(mois, mois & " mois", "") & vbCrLf & IIf(jours, jours & " jour" & vbCrLf & IIf(jours > 1, "s", ""), "")
CalcAge = Application.Trim(CalcAge) 'SUPPRESPACE
End Function
Attention, pour être pris en compte il faut que la cellule ait un format Alignement Renvoyer à la ligne
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
230
Réponses
10
Affichages
2 K
Réponses
12
Affichages
998
Retour