convertir date anglaise en française..

rih

XLDnaute Nouveau
Bonjour,

J'ai des dates sous la forme 20May2016 (en anglais) par exemple et je souhaite les convertir en date française 20/05/2016
j'ai utilisé la fonction convertir mais cela marche pas!
Comment convertir les mois anglais en frnaçais?
afin d'avoir des dates françaises au lieu des dates anglaises
Merci beaucoup
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Bonjour rlh.

Nos «amis» anglo-saxons ont tant d'imagination pour rendre compliquées les choses simples qu'il serait bon de déposer un échantillon de ces dates dans leur jus afin que nous vissions in natura de quoi il retourne. S'agit-il de dates écrites en texte ? de dates numériques formatées ? de 20May2016 ? de 20 May 2016 ?

Bonne journée.


ℝOGER2327
#8486


Vendredi 20 Gueules 144 (Saint Lafleur, valet - fête Suprême Quarte)
26 Pluviôse An CCXXV, 6,1708h - guède
2017-W07-2T14:48:35Z
 

rih

XLDnaute Nouveau
Bonjour rlh.

Nos «amis» anglo-saxons ont tant d'imagination pour rendre compliquées les choses simples qu'il serait bon de déposer un échantillon de ces dates dans leur jus afin que nous vissions in natura de quoi il retourne. S'agit-il de dates écrites en texte ? de dates numériques formatées ? de 20May2016 ? de 20 May 2016 ?

Bonne journée.


ℝOGER2327
#8486


Vendredi 20 Gueules 144 (Saint Lafleur, valet - fête Suprême Quarte)
26 Pluviôse An CCXXV, 6,1708h - guède
2017-W07-2T14:48:35Z
Merci pour le retour!
Les dates sont ecrites en texte

ident date
1 12May2016
2 15Auguest2012
3 21April2016
 

job75

XLDnaute Barbatruc
Bonjour rih, Roger, Pierre,

Conversion directe de la colonne B :
Code:
Sub ConvertirDates()
Dim col%, a, t, i&, x$, j As Byte
col = 2 'conversion de la colonne B, à adapter
a = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
With Columns(col).Resize(Cells(Rows.Count, col).End(xlUp).Row + 1) 'au moins 2 éléments
  t = .Value 'matrice, plus rapide
  For i = 1 To UBound(t) - 1
    x = CStr(t(i, 1))
    For j = 1 To 12
      x = Replace(x, a(j - 1), "/" & j & "/")
      If IsDate(x) Then t(i, 1) = CDate(x): Exit For
  Next j, i
  .Value = t
End With
End Sub
La macro est très rapide car elle utilise des tableaux VBA.

A+
 

ROGER2327

XLDnaute Barbatruc
Suite...

Quelques formules et quelques variations sur le thème de la proposition de pierrejean (#4).

Bonne soirée.


ℝOGER2327
#8487


Vendredi 20 Gueules 144 (Saint Lafleur, valet - fête Suprême Quarte)
26 Pluviôse An CCXXV, 7,5424h - guède
2017-W07-2T18:06:07Z
 

Pièces jointes

  • Date anglaise-1.xlsm
    22.4 KB · Affichages: 48

job75

XLDnaute Barbatruc
Re,

Il vaut mieux comme le fait pierrejean tester avec InStr, c'est plus rapide :
Code:
Sub ConvertirDates()
Dim col%, a, t, i&, x$, j As Byte
col = 2 'conversion de la colonne B, à adapter
a = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
With Columns(col).Resize(Cells(Rows.Count, col).End(xlUp).Row + 1) 'au moins 2 éléments
  t = .Value 'matrice, plus rapide
  For i = 1 To UBound(t) - 1
    x = CStr(t(i, 1))
    For j = 1 To 12
      If InStr(x, a(j - 1)) Then
        x = Replace(x, a(j - 1), "/" & j & "/")
        If IsDate(x) Then t(i, 1) = CDate(x)
        Exit For
      End If
  Next j, i
  .Value = t
End With
End Sub
Testé sur 100 000 dates chez moi sur Win 10 - Excel 2013 :

- macro du post #5 => 3,5 secondes

- cette macro => 1,6 seconde.

A+
 

Discussions similaires

Réponses
4
Affichages
858

Statistiques des forums

Discussions
311 709
Messages
2 081 779
Membres
101 816
dernier inscrit
Jfrcs