Equivalence Fonction Date en VBA ?

Bonjour,

Après Importation d'un fichier, je dois convertir une cellule qui contient une "date" sous la forme 14.04.2015 sous un format de date standard 14/04/2015

J'ai tout d'abord réalisé une Macro avec l'assistant, qui remplacé les "." par des "/" avec la commande remplacer mais lorsque le jour est inférieur à 12, celui-ci devient le mois et le mois devient le jour... Pas assez fort pour comprendre ce qui se passe dans la macro, alors que si je réalise cette opération juste avec le remplacer, tout fonction bien.

J'ai donc trouvé une formule qui avec la fonction Date() et l'utilisation des fonctions Gauche() et droite() me permet d'extraire et d'obtenir le bon résultat. Cette formule étant un peu longue, je voulais créer une nouvelle fonction "convertdate()" par exemple.

Si les fonctions Gauche() et droite() sont facilement utilisable en VBA, je ne connais pas l'équivalent de la fonction Date (), qui permet de créer un format date à partir de 3 valeurs numériques en VBA.

Cordialement.

Bonjour et bienvenu(e)

A tester

Sub test()
Dim LaDate As Date

  LaDate = DateSerial(Year(Date), Month(Date), Day(Date))
  MsgBox "La date : " & LaDate
End Sub

Parfait !!

je viens de créer la fonction grâce à ton aide !

Function CONVERTIRDATE(datetext)

CONVERTIRDATE = DateSerial(Right(datetext, 4), Right(Left(datetext, 5), 2), Left(datetext, 2))

End Function

Ma fonction retourne juste un nombre au format standard. J'aurai voulu que la cellule soit automatiquement formaté en date jj/mm/aaaa.

j'ai essayé ça ! Mais la cellule reste toujours en standard !! Si tu avais une solution !

Function CONVERTIRDATE(datetext)

CONVERTIRDATE = DateSerial(Right(datetext, 4), Right(Left(datetext, 5), 2), Left(datetext, 2))

Selection.NumberFormat = "dd/mm/yyyy"

End Function

D'avance MERCI

Bonjour

Je ne sais pas si tu utilises cette fonction en VBA ou à partir d'XL

Le fichier serait intéressant à voir

A partir d'XL

Ta date à convertir en A1

Formule en B1

=DATE(DROITE(A1;4);STXT(A1;4;2);GAUCHE(A1;2))

Ensuite juste faire un copier -->collage spécial valeurs

Si ce n'est pas la solution que tu recherches fournis un fichier fonctionnel

re

Après une exportation et importation de fichier, j'ai une colonne en texte 04.11.2015 que je veux obtenir 04/11/2015.

Dans XL j'ai d'abord fait une macro avec l'assistant pour remplacer les "." en "/" qui marche dans XL mais qui plante dans VBA lorsque le jour (2 premiers chiffres) sont < à 12. La macro intervertit les jours et mois.

Code Macro :

Sub Macro2()

' Macro2 Macro

Columns("D:D").Select

Selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

End Sub

Du coup j'ai créé une formule dans XL qui ressemble à celle que tu viens de me donner :

=DATE(DROITE(A1;4);DROITE(GAUCHE(A1;5);2);GAUCHE(A1;2))

Grâce à cette fonction ça marche, et la date et tout de suite au format jj/mm/aaaa

Comme j'ai des collègues qui ont besoin aussi de convertir les dates, je pensais leur faire une fonction en VBA pour éviter de réécrire cette formule plutôt longue.

Voilà la fonction écrite en VBA :

Function CONVERTIRDATE(datetext)

CONVERTIRDATE = DateSerial(Right(datetext, 4), Right(Left(datetext, 5), 2), Left(datetext, 2))

End Function

Elle fonctionne bien mais me donne le numéro standard du jour 42016 pas le jour au format jj/mm/aaaa

Je me demandais quelle ligne de commande ajouter à cette fonction pour obtenir directement le bon format de date !!

Merci

je n'ai pas joins de fichier car c'est juste à partir d'une date mais si tu veux je peux te joindre un fichier avec les essais si dessus listés

Bonjour

Désolé mais je n'ai pas trouvé une solution pour que la fonction te retourne la cellule au bon format

Si quelqu'un à une solution ?

Sinon en attendant avec un bouton rattaché à une macro

Sub FormatDate()
  Columns("B").NumberFormat = "m/d/yyyy"
End Sub
Rechercher des sujets similaires à "equivalence fonction date vba"