Date format 10-FEB-2016 => 10/02/2016

Niquido

XLDnaute Junior
Bonjour à tous,

Je me prend la tête sur ce problème.
Je fait un extract tous les lundi et il me donne des colonnes au format 10-FEB-2016 et j'aimerait le passer au format 10/02/2016 mais je ne sais pas comment.
un collègue me dit de mettre mon excel en anglais et que le problème sera résolu mais je ne veux pas pour autant passer en anglais ;)

J'ai déjà une macro qui me fait l'extract, des filtres.....
Donc la solution peut se faire par macro ça ne me dérange pas.
Je met un petit fichier joint pour mieux comprendre.

et en plus si vous savez comment faire en sorte que la colonne 3 ne soit pas stocké sous format texte sans avoir à la sélectionner à la main puis convertir en nombre.

Merci d'avance
 

Pièces jointes

  • date.xlsx
    9.7 KB · Affichages: 78
  • date.xlsx
    9.7 KB · Affichages: 81

homepyrof53

XLDnaute Occasionnel
Re : Date format 10-FEB-2016 => 10/02/2016

Bonjour,

Voici un bout de code ( à compléter)

Code:
Sub formalise_date()
date1 = Cells(2, 1)
jour = Val(Split(date1, "-")(0))
annee = Val(Split(date1, "-")(2))
mois1 = Split(date1, "-")(1)
Select Case mois1
    Case "JAN": mois = 1
    Case "FEB": mois = 2
    ................................
.....................
End Select

Cells(2, 5) = DateSerial(annee, mois, jour)

End Sub
 

Nairolf

XLDnaute Accro
Re : Date format 10-FEB-2016 => 10/02/2016

homepyrof53, tu joues sur les mots :eek:, mais tu as raison, ce terme ainsi utilisé peut être ambigu.

C'est juste que la propriété (et là, je l'utilise à bon escient) Range.FormulaR1C1, comme le logiciel est américain, est basée sur la forme américaine de date et le reconnait donc naturellement.
Pour ceux qui utilisent, comme moi, une version non américaine, la propriété devient Range.FormulaLocal, même si pour les dates à la française ça fonctionne quand même avec l'autre propriété.

Merci pour la correction.
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Date format 10-FEB-2016 => 10/02/2016

Bonjour à tous.


Vu les proposition déjà faites, la mienne est peut-être inutile. Mais, puisque c'est fait, je livre.​


ℝOGER2327
#8144


Lundi 16 Sable 143 (Saint Nul, exempt - fête Suprême Quarte)
25 Frimaire An CCXXIV, 6,4768h - grillon
2015-W51-3T15:32:40Z
 

Pièces jointes

  • Copie de date.xlsm
    23.7 KB · Affichages: 60
  • Copie de date.xlsm
    23.7 KB · Affichages: 63

MJ13

XLDnaute Barbatruc
Re : Date format 10-FEB-2016 => 10/02/2016

Bonjour à tous

On peut aussi se mettre en option Régionale en Anglais (voir dans le panneau de configuration Région) et lancer cette macro en sélectionnant les dates:

Code VBA:
Sub a()
On Error Resume Next
For Each Cell In Selection
Cell.Offset(0, 3).Value = CDate(Cell)
Next
End Sub


PS: Je n'ai pas testé toutes les solutions, mais celle de Nairolf :) est très intéressante , c'est un peu celle que je cherchai :eek:.
 
Dernière édition:

Nairolf

XLDnaute Accro
Re : Date format 10-FEB-2016 => 10/02/2016

Salut à tous,

Pour la forme j'ai testé toutes les propositions et minuté le temps de la macro, voici le classement :

MJ13 = 0,8554688s
homepyrof = 0,9882813s (j'ai ajouté une boucle i à ton code, peut-être qu'un autre type de boucle serait plus rapide...)
Nairolf = 0,9921875s
ROGER2327 = 1,019531s
eastwick = ne marche pas (je n'ai pas regardé pourquoi)

A noter que la solution de MJ13 est en faite plus longue car oblige à faire une manip supplémentaire qui sera plus longue que l'écart entre tous les temps.

En définitif, c'est le code de homepyrof qui est le plus rapide !
 

homepyrof53

XLDnaute Occasionnel
Re : Date format 10-FEB-2016 => 10/02/2016

Bonjour,
Pour information et pour réduire le temps d'exécution
mettre en de but de macro
Code:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

et en fin de macro

Code:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
 

Discussions similaires

Réponses
1
Affichages
226

Statistiques des forums

Discussions
312 518
Messages
2 089 248
Membres
104 079
dernier inscrit
RodLemar