macro fonction duree entre dates

  • Initiateur de la discussion Initiateur de la discussion gg13013
  • 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 !

G

gg13013

Guest
Du temps des anciennes versions d'Excel (4 probablement), j'avais créé une fonction qui calcule la durée entre deux dates sous la forme --a --m --j (voir copie d'écran jointe).
Voici le contenu de la macro correspondante, insérée dans un fichier .XLA (et qui marche parfaitement). Attention, il n'y a que 4 lignes commençant par = dans cette macro; =MOIS(debut) est la suite de la ligne commençant par =ANNEE(fin):

DUREE_GG
=ARGUMENT("debut")
=ARGUMENT("fin")
=ANNEE(fin)-ANNEE(debut)-SI(OU(MOIS(fin)<MOIS(debut);ET(MOIS(fin)=MOIS(debut);JOUR(fin)<JOUR(debut)));1;0)&"a "&MOD((MOIS(fin)-MOIS(debut))-SI(JOUR(fin)<JOUR(debut);1;0);12)&"m "&fin-DATE(ANNEE(fin);MOIS(fin)-SI(JOUR(fin)<JOUR(debut);1;0);JOUR(debut))&"j"
=RETOUR(L(-1)C)

Je ne suis pas parvenu à en faire une macro fonction dans Excel 97. J'ai tenté la chose suivante dans un Module, mais ça ne marche pas (probablement une erreur de syntaxe):

'
' Durée entre 2 dates sous la forme --a --m --j
'
Function Duree_GG(debut, fin)
Duree_GG = ANNEE(fin)-ANNEE(debut)-SI(OU(MOIS(fin)<MOIS(debut);ET(MOIS(fin)=MOIS(debut);JOUR(fin)<JOUR(debut)));1;0) &"a "&MOD((MOIS(fin)-MOIS(debut))-SI(JOUR(fin)<JOUR(debut);1;0);12)&"m "&fin-DATE(ANNEE(fin);MOIS(fin)-SI(JOUR(fin)<JOUR(debut);1;0);JOUR(debut))&"j"
End Function

Quelqu'un aurait-il la solution?
Merci
 

Pièces jointes

Bonsoir, GG

Il faut déjà déclarer tes deux variables passer à la fonction. VBA c'est en anglais donc ANNEE(), ça ne marche pas, il faut utiliser YEAR, MOIS() par MONTH, JOUR() par DAY

Bonne soirée

@+Jean-Marie
 
Merci Jean-Marie,

Mais ça ne marche toujours pas.
J'ai aussi remplacé SI par IF, OU par OR, ET par AND, sans plus de succès.

Je ne comprends pas ce que tu entends par "déclarer les variables".

Bonsoir,
gg
 
Bonsoir,

J'ai super détaillé le fichier Excel joint (qui remplace le précédent).

J'en arrive à la conclusion que ce doit être une bête erreur de syntaxe lors de l'utilisation des opérateurs booléens et autres conditions.
Mais vu ma connaissance quasi inexistante en la matière, je bloque.

Si ça amuse quelqu'un d'y jeter un oeil.
A la suite de quoi, vous calculerez par exemple votre âge au jour près en un clin d'oeil. Ca vaut le coup, non?

gg
 

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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Règle de 3
Réponses
11
Affichages
751
Retour