Transformer texte date

Bonjour

J'ai une liste de date que excel ne reconnait pas:

9 janv. 2017

31 janv. 2017

1 févr. 2017

24 févr. 2017

28 févr. 2017

1 mars 2017

29 mars 2017

2 avr. 2017

26 avr. 2017

1 mai 2017

2 mai 2017

3 juin 2017

4 juin 2017;

Je voudrais la convertir en date, avez-vous une idée?

Merci

Bonjour,

A défaut de fichier... , une fonction personnalisée à essayer :

Function CONVERTDATE(dtx As String)
    Application.Volatile
    If IsDate(dtx) Then CONVERTDATE = DateValue(dtx)
End Function

Mettre le format de cellule des cellules où l'on place la formule au format de date souhaité.

Cordialement.

Merci je vais essayer.

Bonjour,

Salut MFerrand

Sur base de l'exemple fourni, on pourrait aussi supprimer les points ( par Rechercher-Remplacer) ... Mais peut-être l'exemple donné est-il un peu 'court' ??

Salut U.Milité !

J'ai souligné l'absence de fichier, parce qu'avec des dates on n'est jamais sûr de rien !

Les abréviations de mois correspondent exactement aux abréviations françaises listées dans Excel ! Cependant DATEVAL ne les identifie pas ! Alors que IsDate en VBA reconnaît une date, et DateValue fonctionne !

Et ce qui me laisse dubitatif c'est que l'affectation à partir de DateValue affecte un nombre (non formaté en date donc). C'est ce que ferait DATEVAL, mais j'ai eu un cas récent, où une date convertie avec DateValue mais affectée d'abord à un tableau, lequel était affecté ensuite à une plage : les dates subissait une inversion jour/mois ! J'en avais conclu que DateValue ne m'affectait pas la valeur numérique au tableau, ce qui permettait à VBA de reconvertir lors de l'affectation finale. J'avais tourné la difficulté en convertissant le renvoi de DateValue en nombre avec CLng...

Mais ici le fait d'avoir un nombre en résultat, fait que mon explication antérieure est fausse ou incomplète... ?

Cordialement.

Re-bonjour,

MFerrand a écrit :

Mais ici le fait d'avoir un nombre en résultat, fait que mon explication antérieure est fausse ou incomplète... ?

Rassure-moi ... tu ne comptes pas sur moi pour fournir une réponse dûment argumentée à la question

Si tu es perplexe, tout ce que je peux faire, c'est te témoigner ma solidarité: je boirai un coup à ta santé ce soir

Et pourquoi pas une réponse ! Ce n'est pas parce qu'on ne connaît pas la réponse qu'on ne pourra pas en donner une qui s'avère pertinente.

Il m'est arrivé souvent que quelqu'un ne connaissant pas la réponse cherchée, voir pas du tout le problème... me mette sur la bonne voie... !!

Ceci dit j'ai eu idée de refaire un test et intercepter le renvoi de DateValue avant affectation à Excel : j'ai bien un renvoi de date formatée au format de date standard, ce qui maintient mon explication que lorsqu'on passe par une affectation intermédiaire de la valeur renvoyée par DateValue, VBA est toujours à même de la reconvertir en date selon ses propres paramètres (américains) lors d'une affectation ultérieure. Il faut donc la compléter par le fait que lors de l'affectation à Excel, ce dernier la récupère comme valeur date sans la convertir comme lorsqu'il le fait lors d'une saisie manuelle où il reconnaît un texte comme date et lui applique automatiquement un format de date...

Cordialement.

Voici le fichier excel, je ne suis pas trop doué pour les fonctions. J'ai extrait cette liste de mon agenda google, je note sur mon téléphone la pluviométrie (dans l'agenda) et je veux la transformer en fichier excel. Si quelqu'un a une meilleur idée.

Merci

Bonjour à tous

Surtout pour répondre a MFerrand que je salut.

Le problème des dates est bien réel après passage dans un tableau.

Pour contrer ce "retour à l'état sauvage" lors de la restitution, j'ai remarqué que l'emploi de Formulalocal est souvent d'une grande aide sans passer par le format numérique; même si la méthode reste tout à fait viable.

Un exemple, basé sur le fichier exemple précédent, pour étayer.

En reconstituant les dates au format texte, et donc en ayant toutes les chances qu'Excel revienne à son langage d'origine.

Sub test()
Dim i&
Dim T As Variant, Tmp As Variant

With Sheets("Feuil1")
    T = .Range(.Cells(4, 1), .Cells(.Rows.Count, 1).End(3))
End With

For i = LBound(T, 1) To UBound(T, 1)
    Tmp = Split(T(i, 1))
    T(i, 1) = Tmp(1) & "/" & Replace(Tmp(2), ".", "") & "/" & Tmp(3)
Next i

Sheets("Feuil1").Cells(4, 6).Resize(UBound(T, 1), 1).FormulaLocal = T

End Sub

En espérant avoir amené ma pierre à l'édifice.

Cordialement

Bonjour,

Bonjour à tous,

Une proposition à étudier avec une fonction personnalisée.

Bon, MFerrand va passer par là et va revoir la fonction.

Cdlt.

Public Function ConvertTextToDate(strDate As String)
Dim iYear As Integer, strMonth As String, iDay As Integer
Dim tbl
    If strDate = "" Then GoTo exit_Function
    tbl = Split(Trim(strDate))
    iYear = tbl(3): strMonth = tbl(2): iDay = tbl(1)
    strDate = iYear & "-" & strMonth & "-" & iDay
    ConvertTextToDate = IIf(IsDate(strDate), DateValue(strDate), "date non valide")
    Exit Function
exit_Function:
ConvertTextToDate = ""
End Function

Bonjour

C'est un peu du langage des signes pour moi (autrement dit, je n'y comprends rien ) mais c'est tout à fait ce que je veux faire.

Merci donc à toutes les personnes qui ont contribué à cette discussion.

Bonjour à tous !

@ Efgé : J'avais noté au passage il y a quelque temps déjà, cette utilisation de FormulaLocal (peut-être sous ta plume d'ailleurs !) en me disant que c'était à retenir... Merci de le rappeler...

@ Jean-Eric :

MFerrand va passer par là et va revoir la fonction

Mais non ! Chacun son style, et si je n'ai pas d'idée alternative à mettre en avant je m'abstiens de fournir une simple variation de style (sauf sans avoir vu les réponses déjà fournies, ce qui arrive...), et ma proposition était très "épurée" et fournie avant classeur modèle...

Par contre au vu du modèle, la question se pose de savoir si la conversion doit partir de la colonne A, ou s'il ne faudrait pas partir plutôt de l'expression en colonne B qui semble être le texte original...

Bonne journée à tous !

Rechercher des sujets similaires à "transformer texte date"