macro fonction duree entre dates

  • Initiateur de la discussion gg13013
  • Date de début
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

  • duree.zip
    1.6 KB · Affichages: 36
  • duree.zip
    1.6 KB · Affichages: 33
  • duree.zip
    1.6 KB · Affichages: 34
J

Jean-Marie

Guest
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
 
G

gg13013

Guest
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
 
G

gg13013

Guest
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

  • dureeGG2.xls
    30 KB · Affichages: 65
M

Mytå

Guest
Salut les forumeurs et forumeuses

Gregg13013 regarde en piece jointe une fonction a adapter et j'ai
aussi repris en formule 2 modeles, que je laisse aux Formulistes la finalisation.

Mytå
 

Pièces jointes

  • Fonction_Age.zip
    7.9 KB · Affichages: 51

Discussions similaires

Réponses
11
Affichages
500

Statistiques des forums

Discussions
312 023
Messages
2 084 715
Membres
102 637
dernier inscrit
TOTO33000