Convertir date au format texte us en numérique
Résolu/Fermé
A voir également:
- Convertir date au format texte us en numérique
- Format epub - Guide
- Format dat - Guide
- Telecharger format factory - Télécharger - Conversion & Codecs
- Convertir audio en texte word - Guide
- Convertir youtube en mp3 avec audacity - Guide
8 réponses
NHenry
Messages postés
15163
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 novembre 2024
343
20 févr. 2016 à 13:17
20 févr. 2016 à 13:17
Quelle version de VB ?
Je pense qu'il faut que tu décompose manuellement la date et que tu la recréée.
Je pense qu'il faut que tu décompose manuellement la date et que tu la recréée.
Merci d'avoir regardé ma question.
Je travaille sous Excel XP & VBA.
Décomposer la date ne résout pas le problème du mois écrit en anglais.
Est-ce que je pourrais faire un tablo des mois en anglais, avec un autre tablo de concordance des mois en français ? et je vais chercher l'équivalence. Mais je ne sais pas comment faire. Pour l'instant, ma solution consiste à faire avec des if like "may" then replace "mai". Mais c'est lourd et bricolé. Je suis sûr qu'on peut trouver mieux.
Je travaille sous Excel XP & VBA.
Décomposer la date ne résout pas le problème du mois écrit en anglais.
Est-ce que je pourrais faire un tablo des mois en anglais, avec un autre tablo de concordance des mois en français ? et je vais chercher l'équivalence. Mais je ne sais pas comment faire. Pour l'instant, ma solution consiste à faire avec des if like "may" then replace "mai". Mais c'est lourd et bricolé. Je suis sûr qu'on peut trouver mieux.
NHenry
Messages postés
15163
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 novembre 2024
343
20 févr. 2016 à 16:41
20 févr. 2016 à 16:41
Non, plus simple, un tableau listant les noms anglais, l'index du texte correspondant te donnant le numéro du mois.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
20 févr. 2016 à 17:14
20 févr. 2016 à 17:14
Bonjour,
voici un petite exercice de manipulation de caractères:
je reconnais que c'est un peu lourd, on peut peut-être raccourcir!
voici un petite exercice de manipulation de caractères:
Option Explicit Dim valeur As String Dim jour As String Dim mois As String Dim annee As String Private Sub CommandButton1_Click() valeur = "May 19th 2015" extractionMots End Sub 'Extraire les données séparées par un espace dans une chaine de caractères Sub extractionMots() Dim Tableau() As String Dim i As Integer 'découpe la chaine en fonction des espaces " " 'le résultat de la fonction Split est stocké dans un tableau Tableau = Split(valeur, " ") 'boucle sur le tableau pour visualiser le résultat For i = 0 To UBound(Tableau) 'Le résultat s'affiche dans la fenêtre d'execution de l'éditeur de macros Debug.Print Tableau(i) Next i mois = Tableau(0) convertir jour = Tableau(1) annee = Tableau(2) extraireValeursNumeriques_DansChaine valeur = jour & "/" & mois & "/" & annee MsgBox valeur End Sub Sub extraireValeursNumeriques_DansChaine() Dim i As Byte, Nb As Byte Dim Cible As String, Resultat As String Dim Nombre As Double Cible = jour 'Pour que fonction Val puisse reconnaitre les décimales: Remplacement des 'virgules par des points Cible = Replace(Cible, ",", ".") 'Pour gérer deux nombres qui se suivent: remplacement des espaces 'par un caractère Alpha Cible = Replace(Cible, " ", "x") For i = 1 To Len(Cible) If IsNumeric(Mid(Cible, i, 1)) Then Nombre = val(Mid(Cible, i, Len(Cible) - i + 1)) Nb = Nb + 1 Resultat = Resultat & Nombre & vbLf i = i + Len(Str(Nombre)) - 1 End If Next jour = Nombre ' MsgBox "Il y a " & Nb & " valeurs numériques dans la cellule " & vbLf & Resultat End Sub Sub convertir() mois = Left(mois, 3) Select Case mois Case Is = "Jan" mois = "01" Case Is = "Feb" mois = "02" Case Is = "Mar" mois = "03" Case Is = "Apr" mois = "04" Case Is = "May" mois = "05" Case Is = "Jun" mois = "06" Case Is = "Jul" mois = "07" Case Is = "Aug" mois = "08" Case Is = "Sep" mois = "09" Case Is = "Oct" mois = "10" Case Is = "Nov" mois = "11" Case Is = "Dec" mois = "12" End Select End Sub
je reconnais que c'est un peu lourd, on peut peut-être raccourcir!
Merci à tous les deux pour vos suggestions.
A partir de la remarque de NHenry, voici le code que j'ai testé et qui fonctionne :
Option Explicit
Dim tablo1
Dim i As Byte
Dim mydate As String
Sub testdate()
tablo1 = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
mydate = ActiveCell.Offset(-1, 0) 'sélectionne la date à convertir
mydate = Replace(mydate, "th", "")
For i = 0 To 11
If mydate Like "*" & tablo1(i) & "*" Then
mydate = Replace(mydate, tablo1(i), i + 1)
Exit For
End If
Next i
ActiveCell.Value = DateValue(mydate)
End Sub
Je vais pouvoir l'adapter à mon besoin.
Encore merci, et bonne fin d'après-midi.
Tony
A partir de la remarque de NHenry, voici le code que j'ai testé et qui fonctionne :
Option Explicit
Dim tablo1
Dim i As Byte
Dim mydate As String
Sub testdate()
tablo1 = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
mydate = ActiveCell.Offset(-1, 0) 'sélectionne la date à convertir
mydate = Replace(mydate, "th", "")
For i = 0 To 11
If mydate Like "*" & tablo1(i) & "*" Then
mydate = Replace(mydate, tablo1(i), i + 1)
Exit For
End If
Next i
ActiveCell.Value = DateValue(mydate)
End Sub
Je vais pouvoir l'adapter à mon besoin.
Encore merci, et bonne fin d'après-midi.
Tony
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
20 févr. 2016 à 19:13
20 févr. 2016 à 19:13
là tu n'as fait que les chiffres se terminant par th, comment fais-tu quand les chiffres se terminent par st, nd et rd?
a revoir!
http://www.123anglais.fr/date-cours-anglais
@+
a revoir!
http://www.123anglais.fr/date-cours-anglais
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Dans la même logique que qui a été fait par cs_LePivert, mais avec une fonction.
et l'appel à la fonction
Bonne soirée
Dans la même logique que qui a été fait par cs_LePivert, mais avec une fonction.
Function DateFR(s As String) As Date
Dim t() As String, jour As Integer, mois As Integer, an As Integer, i As Integer
Dim MoisUS() As Variant
MoisUS() = Array("JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DIC")
t() = Split(s)
jour = Val(t(1)) ' jour
For i = 0 To 11
If UCase(Left(t(0), 3)) = MoisUS(i) Then Exit For
Next
mois = i + 1 ' mois
an = Val(t(2)) 'an
DateFR = CDate(jour & "/" & mois & "/" & an)
End Function
et l'appel à la fonction
Sub test()
Dim Madate As Date, DateUS As String
DateUS = "May 19th 2015"
Madate = DateFR(DateUS)
MsgBox DateUS & vbCrLf & Format(Madate, "D MMMM YYYY")
DateUS = "August 1st 2015"
Madate = DateFR(DateUS)
MsgBox DateUS & vbCrLf & Format(Madate, "D MMMM YYYY")
DateUS = "Dicember 2nd 2015"
Madate = DateFR(DateUS)
MsgBox DateUS & vbCrLf & Format(Madate, "D MMMM YYYY")
End Sub
Bonne soirée
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
Mosca
21 févr. 2016 à 08:15
21 févr. 2016 à 08:15
La demande:
je voudrais les convertir en format date numérique.
dans ton exemple, les mois sont en lettre!
@+ bonne journée
je voudrais les convertir en format date numérique.
dans ton exemple, les mois sont en lettre!
@+ bonne journée
Mosca
>
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
21 févr. 2016 à 10:55
21 févr. 2016 à 10:55
Format(Madate, "D MMMM YYYY")
ce format est en lettres
Format(Madate, "dd/mm/yyyy")
cet autre format est en chiffres
ce qui compte c'est le type Date, après on l’écrit comme veut.
Ce que je voulais montrer, c'est que l'utilisation d'une fonction était plus judicieuse.
ce format est en lettres
Format(Madate, "dd/mm/yyyy")
cet autre format est en chiffres
ce qui compte c'est le type Date, après on l’écrit comme veut.
Ce que je voulais montrer, c'est que l'utilisation d'une fonction était plus judicieuse.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
Mosca
21 févr. 2016 à 11:05
21 févr. 2016 à 11:05
Impeccable!!!!
Merci
Merci
Bonjour à tous,
Eh bien ! Je ne pensais pas que ma petite question susciterait autant d'intérêt !
En réponse à chacune de vos remarques
Henry : bien vu, la question des th, st,... Je m'en suis aperçu en faisant mes tests. J'ai résolu la question avec un tableau et une boucle (voir mon code plus bas).
LePivert : merci pour votre proposition, mais je trouvais votre solution un peu lourde. Dans la mesure du possible, je préfère toujours une solution la plus simple possible (cf. mon code pour reformater une date du style 13.12.2015 par exemple)
Mosca : l'idée d'une formule était une bonne idée, que j'utilise régulièrement, mais dans ce cas-là, elle n'était pas adaptée à mon besoin.
====
déclaration des valeurs
Dim madate As String: Dim tablo1: Dim tablo2: Dim ii As Byte
valeurs des tableaux dans activation du UF
tablo1 = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
tablo2 = Array("th", "nd", "rd", "st")
routine intégrée dans ma procédure
madate = ActiveCell.Offset(9, 8)
For ii = 0 To 3 'remplace les th,st,...
If madate Like "*" & tablo2(ii) & "*" Then madate = Replace(madate, tablo2(ii), ""): Exit For
Next ii
For i = 0 To 11 'attribue une valeur numérique au mois
If madate Like "*" & tablo1(i) & "*" Then madate = Replace(madate, tablo1(i), i + 1): Exit For
Next i
ActiveCell.Offset(3, 8) = Format(madate, "dd/mm/yyyy")
====
exemple de reformatage d'une date du style : 13.12.2015
ActiveCell.Offset(3, 8) = Mid(ActiveCell.Offset(6, 8), 4, 2) & "/" & Left(ActiveCell.Offset(6, 8), 2) & "/" & Right(ActiveCell.Offset(6, 8), 4)
====
Encore merci, et bonne semaine à tous
Tony
Eh bien ! Je ne pensais pas que ma petite question susciterait autant d'intérêt !
En réponse à chacune de vos remarques
Henry : bien vu, la question des th, st,... Je m'en suis aperçu en faisant mes tests. J'ai résolu la question avec un tableau et une boucle (voir mon code plus bas).
LePivert : merci pour votre proposition, mais je trouvais votre solution un peu lourde. Dans la mesure du possible, je préfère toujours une solution la plus simple possible (cf. mon code pour reformater une date du style 13.12.2015 par exemple)
Mosca : l'idée d'une formule était une bonne idée, que j'utilise régulièrement, mais dans ce cas-là, elle n'était pas adaptée à mon besoin.
====
déclaration des valeurs
Dim madate As String: Dim tablo1: Dim tablo2: Dim ii As Byte
valeurs des tableaux dans activation du UF
tablo1 = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
tablo2 = Array("th", "nd", "rd", "st")
routine intégrée dans ma procédure
madate = ActiveCell.Offset(9, 8)
For ii = 0 To 3 'remplace les th,st,...
If madate Like "*" & tablo2(ii) & "*" Then madate = Replace(madate, tablo2(ii), ""): Exit For
Next ii
For i = 0 To 11 'attribue une valeur numérique au mois
If madate Like "*" & tablo1(i) & "*" Then madate = Replace(madate, tablo1(i), i + 1): Exit For
Next i
ActiveCell.Offset(3, 8) = Format(madate, "dd/mm/yyyy")
====
exemple de reformatage d'une date du style : 13.12.2015
ActiveCell.Offset(3, 8) = Mid(ActiveCell.Offset(6, 8), 4, 2) & "/" & Left(ActiveCell.Offset(6, 8), 2) & "/" & Right(ActiveCell.Offset(6, 8), 4)
====
Encore merci, et bonne semaine à tous
Tony
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
22 févr. 2016 à 11:13
22 févr. 2016 à 11:13
C'est encore moi, navré de te décevoir, mais cela ne va pas du tout.
Essaie cela et tu verras le resultat:
12/03/2015 au lieu 03/12/2015
a revoir donc!
Essaie cela et tu verras le resultat:
'déclaration des valeurs Dim madate As String: Dim tablo1: Dim tablo2: Dim ii As Byte Dim i As Byte 'valeurs des tableaux dans activation du UF tablo1 = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December") tablo2 = Array("th", "nd", "rd", "st") 'routine intégrée dans ma procédure madate = "December 3rd 2015" For ii = 0 To 3 'remplace les th,st,... If madate Like "*" & tablo2(ii) & "*" Then madate = Replace(madate, tablo2(ii), ""): Exit For Next ii For i = 0 To 11 'attribue une valeur numérique au mois If madate Like "*" & tablo1(i) & "*" Then madate = Replace(madate, tablo1(i), i + 1): Exit For Next i MsgBox Format(madate, "dd/mm/yyyy")
12/03/2015 au lieu 03/12/2015
a revoir donc!