Monsieur Excel
Pour tout savoir faire sur Excel !

09 avril 2006

Un surprenant DateDiff() en VBA

Mon dernier message « en finissait » avec la fonction DateDif() de la feuille de calcul. Une fois de plus, Bill Gates parvient à nous surprendre avec – en VBA – une fonction qui lui ressemble, mais qui n'est pas la même, une sorte de Canada Dry...

En effet, le VBA vous offre la fonction DateDiff() , avec un second « f » pour faire la différence. Cette fonction n’est pas tout à fait la même, mais il y a évidemment un air de famille avec DateDif().

Dans cette fonction, c’est le premier argument qui indique la « forme », mais avec des modalités différentes. Nous vous laissons consulter l’aide pour en voir le détail. Au passage, attribuons un carton rouge à Microsoft qui donne un exemple d’application foireux :

En effet, le premier argument en « d » pour « day » a été abusivement traduit dans cet exemple en « j » pour « jour », ce qui entraîne un plantage de la macro.

Si vous entrez votre date de naissance en A1, la macro ci-dessous affichera le nombre de jours auxquels vous avez survécu :

Sub Age()
MsgBox Format(DateDiff("d", Range("A1"), Now), "#,##0") & " jours"
End Sub


Voici le résultat :