Formule pour formater une date

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

karakoman1

XLDnaute Occasionnel
Bonjour à tous
J'aurais besoin d'un coup de pouce. En effet, j'ai une formule qui me permet de toujours avoir la date du jour dans une requête web qui se termine toujours comme ceci:
Date=01%2F2%2F2012&output=html&RUN
Ma formule
=REMPLACER(C8;TROUVE("output";C8)-14;13;TEXTE(AUJOURDHUI();"jj""%2F""m""%2F""aaaa"))
Pour l'instant, elle fonctionne très bien sauf lorsque nous arriverons dans les mois à 2 chiffres, je pense que ma formule me renverra quelque chose comme ceci:
Date=019%2F3%2F2012&output=html&RUN
C'est a dire un 0 en trop devant le 19. Dites moi si je me trompe
Auquel cas, pourriez-vous m'aider à trouver la formule idéale qui conviendrait dans les 2 cas.
Je joint un fichier en PJ.
Merci d'avance
 

Pièces jointes

Re : Formule pour formater une date

Bonsour® karakoman1

sourire...
pourquoi pas simplement en C8
=TEXTE(AUJOURDHUI();"jj""%2F""m""%2F""aaaa")& "&output=html&RUN"

ou bien par VBA
[C8].Formula ="=TEXT(TODAY(),""jj""""%2F""""m""""%2F""""aaaa"")& ""&output=html&RUN"""
 
Re : Formule pour formater une date

Bonjour karakoman1, salut Modeste geedee,

Ce problème est intéressant car il s'agit de rechercher une date avec un autre séparateur que le slash /.

Et de la remplacer par une autre date.

C'est ce que fait cette fonction macro VBA :

Code:
Function REMPLACEDATE$(txt$, dat As Variant, separ$)
Dim deb%, fin%
For deb = 1 To Len(txt)
  If IsNumeric(Mid(txt, deb, 1)) Then Exit For
Next
For fin = Len(txt) To 1 Step -1
  If IsNumeric(Mid(txt, fin, 1)) Then Exit For
Next
REMPLACEDATE = txt
If fin Then
  If IsDate(Replace(Mid(txt, deb, fin - deb + 1), separ, "/")) Then
    dat = Format(CDate(dat), "dd" & separ & "m" & separ & yyyy)
    REMPLACEDATE = Application.Replace(txt, deb, fin - deb + 1, dat)
  End If
End If
End Function
Voir son utilisation (en rouge) dans le fichier joint.

Nota : on doit pouvoir faire mieux avec les expressions régulières chères à Jean-Noël (JNP).

Edit : j'avais écrit If fin > deb Then mais If fin Then suffit.

A+
 

Pièces jointes

Dernière édition:
Re : Formule pour formater une date

Re,

Belle faute d'inattention ! Je n'avais pas mis yyyy entre guillemets 😡

Code:
Function REMPLACEDATE$(txt$, dat As Variant, separ$)
Dim deb%, fin%
For deb = 1 To Len(txt)
  If IsNumeric(Mid(txt, deb, 1)) Then Exit For
Next
For fin = Len(txt) To 1 Step -1
  If IsNumeric(Mid(txt, fin, 1)) Then Exit For
Next
REMPLACEDATE = txt
If fin Then
  If IsDate(Replace(Mid(txt, deb, fin - deb + 1), separ, "/")) Then
    dat = Format(CDate(dat), "dd" & separ & "m" & separ & "yyyy")
    REMPLACEDATE = Application.Replace(txt, deb, fin - deb + 1, dat)
  End If
End If
End Function
Fichier (2).

A+
 

Pièces jointes

Re : Formule pour formater une date

Re,

Un essai avec des dates formatées de manière quelconque :

Code:
Function REMPLACEDATE$(txt$, dat As Variant, ans#, ancienformat$, Optional nouveauformat$)
Dim i&
If nouveauformat = "" Then nouveauformat = ancienformat
REMPLACEDATE = txt
For i = CDate(dat) - 366 * ans To CDate(dat) + 366 * ans
  If InStr(txt, Format(i, ancienformat)) Then
    REMPLACEDATE = Replace(txt, Format(i, ancienformat), Format(CDate(dat), nouveauformat))
    Exit Function
  End If
Next
End Function
La recherche se fait sur un intervalle de dates déterminé par l'argument ans (nombre d'années de part et d'autre de dat).

Le nombre d'année peut être fractionnaire.

Noter aussi l'argument optionnel nouveauformat.

Fichier joint.

A+
 

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
Retour