🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excel DATEVAL et TEMPSVAL — Sauver les dates et heures piégées en texte

|

Excel DATEVAL et TEMPSVAL — Sauver les dates et heures piégées en texte

En bref — Excel stocke chaque date comme un numéro de série (des jours comptés depuis le 1er janvier 1900) ; la date que vous voyez est ce numéro habillé d'un format de date. Quand une date arrive en texte, ce n'est pas un numéro de série — donc elle refuse de se trier chronologiquement, de se soustraire ou de nourrir les fonctions de date. DATEVALUE analyse une date-texte en son numéro de série : =DATEVALUE("2025-01-01")45658 (mettez la cellule au format date pour le voir). TIMEVALUE fait de même pour une heure, en renvoyant une fraction de jour : =TIMEVALUE("2:30 PM")0,6041…. Le seul piège à respecter : pour les chaînes ambiguës comme "03/04/2026", DATEVALUE suit vos paramètres régionaux, donc il peut lire le 4 mars ou le 3 avril.

Remarque — Dans l'interface française d'Excel, ces fonctions portent d'autres noms : DATEVALUE → DATEVAL, TIMEVALUE → TEMPSVAL, DATE → DATE, TEXT → TEXTE, VALUE → CNUM, LEFT → GAUCHE, MID → STXT, RIGHT → DROITE. L'erreur #VALUE! s'affiche #VALEUR! en français. Les formules ci-dessous conservent les noms anglais pour rester copiables tels quels.

=DATEVALUE("2025-01-01")           ' -> 45658   (série ; format date pour voir 2025-01-01)
=TIMEVALUE("2:30 PM")              ' -> 0,604167 (fraction de jour)
=DATEVALUE("2-Jul-2026") + TIMEVALUE("14:30")   ' un vrai numéro de série date-heure

La situation est toujours la même : vous recevez une colonne de dates depuis un export, elles s'alignent à gauche des cellules, et rien de ce qui devrait marcher sur des dates ne marche — elles trient "1/12" avant "2/03" alphabétiquement, =B2-A2 renvoie #VALUE!, et DATEDIF refuse. Elles ressemblent à des dates mais ce sont des textes. DATEVALUE et TIMEVALUE retransforment les imposteurs en vrais numéros de série. Ce guide couvre le modèle mental, le piège régional qui attrape tout le monde, et les cas où un autre outil est la seule chose capable d'analyser la chaîne.

Ce que vous allez apprendre

  • Le modèle mental : une date est un numéro de série ; une date-texte est un imposteur
  • Comment reconnaître les dates-texte (et pourquoi elles cassent le tri et le calcul)
  • DATEVALUE et le piège de l'ambiguïté régionale avec 03/04/2026
  • TIMEVALUE, les fractions de jour, et combiner date + heure
  • Quand DATEVALUE ne peut pas analyser une chaîne — et quoi utiliser à la place
  • Le choix de bon sens : DATEVALUE vs DATE(GAUCHE,STXT,DROITE) vs Convertir

Le modèle mental : une date est un nombre en costume

Tapez 2025-01-01 dans une cellule et Excel stocke 45658 — le nombre de jours depuis son époque — puis l'habille d'un format de date. C'est pourquoi l'arithmétique des dates fonctionne : fin - début n'est que la soustraction de deux comptes de jours, et EOMONTH, NETWORKDAYS et DATEDIF opèrent tous sur le numéro de série sous-jacent.

Une date texte contourne tout cela. "2025-01-01" stockée en texte est la suite de caractères 2 0 2 5 - 0 1 - 0 1 — il n'y a pas de 45658 en dessous, donc aucun des mécanismes ne s'enclenche :

' A2 contient le TEXTE "2025-01-01"
=A2 + 1        ' -> #VALUE!   (on ne peut pas ajouter 1 à une chaîne)
=DATEVALUE(A2) ' -> 45658     (maintenant un vrai numéro de série ; =+1 donne le lendemain)

Gardez l'image : DATEVALUE ne change pas l'apparence de la date — il donne au sosie un vrai nombre en dessous. Ensuite, appliquez un format de date pour que le 45658 s'affiche de nouveau 2025-01-01.

Comment repérer une date-texte

Les mêmes signes que pour les nombres-textes, plus quelques-uns propres aux dates :

  • Les valeurs sont alignées à gauche (les vraies dates s'alignent à droite).
  • Le tri est alphabétique, pas chronologique"03/…" se place avant "11/…" quelle que soit l'année.
  • =date_ultérieure - date_antérieure renvoie #VALUE! au lieu d'un compte de jours.
  • DATEDIF, EOMONTH, NETWORKDAYS et les filtres de date soit renvoient une erreur, soit traitent chaque chaîne comme une étiquette sans rapport.

Si le calcul de dates se comporte mal, supposez des dates-texte jusqu'à preuve du contraire.

DATEVAL et le piège de l'ambiguïté régionale

DATEVALUE lit toute chaîne qu'Excel reconnaît comme une date dans les paramètres régionaux actuels. Cette dernière clause est tout le piège. Considérez "03/04/2026" :

=DATEVALUE("03/04/2026")   ' paramètres US  -> 4 mars 2026
=DATEVALUE("03/04/2026")   ' paramètres UK  -> 3 avril 2026

Même chaîne, jour différent, et aucune erreur pour vous avertir — le classeur signifie simplement quelque chose de différent en silence sur une autre machine. Deux défenses :

  • Privilégiez une entrée non ambiguë : l'ISO "2026-07-02" et les mois écrits en toutes lettres "2-Jul-2026" s'analysent partout de la même façon.
  • Quand vous maîtrisez l'analyse, ne vous fiez pas à la devinette de DATEVALUE — décomposez la chaîne avec DATE(year, month, day) pour que vous décidiez quelle pièce est le mois (voir ci-dessous).

DATEVALUE ignore aussi toute portion horaire dans la chaîne (utilisez TIMEVALUE pour ça), et renvoie #VALUE! pour un texte qu'il ne parvient pas à lire comme une date.

TEMPSVAL et les fractions de jour

Excel stocke une heure comme la fraction d'une journée de 24 heures : minuit vaut 0, midi 0,5, 18 h 0,75. TIMEVALUE analyse une heure-texte en cette fraction :

=TIMEVALUE("2:30 PM")     ' -> 0,604167   (14,5 / 24)
=TIMEVALUE("23:15")       ' -> 0,968750

Parce qu'une vraie date-heure est série + fraction, vous en reconstruisez une en additionnant les deux analyseurs :

' A2 contient le texte "2026-07-02 14:30"
=DATEVALUE(LEFT(A2, 10)) + TIMEVALUE(MID(A2, 12, 5))   ' -> un vrai numéro de série date-heure

Mettez le résultat au format yyyy-mm-dd hh:mm et vous avez une valeur que vous pouvez soustraire, trier et comparer comme n'importe quel autre horodatage.

Quand DATEVAL n'y arrive pas

DATEVALUE n'analyse que les formats qu'Excel reconnaît déjà comme des dates. Il échoue sur des chaînes vraiment non standard — "20260702" (sans séparateurs), "July2026" (sans jour), "Q3 2026" — et il renvoie inutilement une erreur si la valeur est déjà une vraie date (c'est un nombre, pas du texte, donc il n'y a rien à analyser). Pour celles-là, recourez plutôt à l'analyse structurelle :

' "20260702" -> extraire les morceaux par position et reconstruire la date
=DATE(LEFT(A2,4), MID(A2,5,2), RIGHT(A2,2))   ' -> 2026-07-02, sans ambiguïté

DATE(year, month, day) prend trois nombres et construit un numéro de série sans la moindre devinette sur quelle partie est le mois — et c'est exactement pourquoi il bat DATEVALUE chaque fois que le format est fixe mais bizarre. Voir LEFT / RIGHT / MID pour le versant extraction.

Le choix de bon sens

  • Date-texte standard et non ambiguë (ISO ou mois en toutes lettres) → DATEVALUE est net et vivant. Bon pour une formule qui doit réanalyser un texte changeant.
  • Ambiguïté jj/mm vs mm/jj → ne faites pas confiance à la devinette régionale de DATEVALUE ; décomposez avec DATE(LEFT,MID,RIGHT) pour maîtriser l'ordre.
  • Une colonne ponctuelle à nettoyerDonnées → Convertir → Terminer, en choisissant le format de colonne Date (JMA/MJA), convertit sur place sans formule.
  • Imports récurrents → corrigez le type à la source ou dans Power Query ; n'expédiez pas une colonne DATEVALUE que vous reconstruisez chaque semaine.

Une fois vos dates devenues de vrais numéros de série, toute la boîte à outils des dates s'ouvre — comptes de jours, EOMONTH pour les fins de mois, NETWORKDAYS pour les jours ouvrés, DATEDIF pour les âges et les ancienneté. DATEVALUE est simplement le tourniquet qui fait entrer les dates-texte dans ce monde.

Comment ExcelMaster vous aide

Les dates-texte sont singulièrement retorses parce qu'elles paraissent correctes — le bogue se cache jusqu'à ce qu'un total ou un tri déraille en silence. ExcelMaster reconnaît le motif (des dates qui refusent de se soustraire, des tris qui ressortent alphabétiques), et — surtout — gère l'ambiguïté à votre place : il lit à partir des données elles-mêmes si une colonne est en jj/mm ou mm/jj, puis convertit avec la bonne analyse, DATEVALUE pour les chaînes standard ou une décomposition DATE(...) pour les bizarres. Vous obtenez de vrais numéros de série sur lesquels faire des calculs, sans parier votre clôture trimestrielle sur la convention de date de quel pays Excel a supposée.

Foire aux questions

Comment convertir du texte en date dans Excel ?

=DATEVALUE(A1), puis mettez la cellule au format date. Pour toute une colonne sans formule, utilisez Données → Convertir → Terminer et choisissez le format Date. Pour les chaînes non standard, reconstruisez avec =DATE(LEFT,MID,RIGHT).

Pourquoi DATEVALUE renvoie-t-il #VALUE! ?

La chaîne n'est pas un format qu'Excel reconnaît comme une date dans votre région — par exemple "20260702" sans séparateurs, un jour manquant, ou la valeur est déjà une vraie date (un nombre, donc il n'y a rien à convertir). Utilisez la décomposition DATE(...) pour les formats bizarres.

Pourquoi mes dates se trient-elles mal ?

Ce sont des textes, pas de vraies dates, donc elles se trient alphabétiquement ("03/…" avant "11/…"). Convertissez-les avec DATEVALUE ou Convertir pour qu'Excel trie par le numéro de série sous-jacent.

Que renvoie TIMEVALUE ?

Une fraction de jour : =TIMEVALUE("2:30 PM")0,6042 (14,5 ÷ 24). Ajoutez-la à un résultat DATEVALUE pour construire un numéro de série date-heure complet.

DATEVALUE ou DATE — lequel utiliser ?

DATEVALUE analyse une chaîne de texte et devine le format à partir de vos paramètres régionaux. DATE(year, month, day) construit une date à partir de trois nombres sans ambiguïté. Utilisez DATE(...) (avec LEFT/MID/RIGHT) chaque fois que l'ordre du texte est fixe mais inhabituel, ou quand jj/mm vs mm/jj pourrait être mal lu.

Testé dans

Testé dans : Excel 365 (Windows 11) — dernière vérification le 2026-07-02.

Guides associés : Excel TEXT · Excel VALUE et NUMBERVALUE · Excel LEFT, RIGHT et MID · Excel FIND et SEARCH · Excel SUMIFS