Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

homepyrof53, ce satané calcul auto (bien pratique par ailleurs)! 😡 j'oublie à chaque fois qu'il recalcule à chaque changement dans une cellule, merci du rappel.
Grâce à 2 lignes de codes, on accélère de près de 170 fois nos codes! sachant que dans ce cas précis la désactivation du Application.ScreenUpdating n'a pas d'effet sur le temps d'exécution de nos codes.


Modeste geedee, tu as raison, s'il a accès à la génération de l'import, ce serait le meilleur moment pour traiter le format de la donnée.
 
Re : Date format 10-FEB-2016 => 10/02/2016

Une chose qui a sans doute déjà été identifiée par d'autres, mais que j'ai expérimenté moi-même :

Une boucle For i = 2 To WorksheetFunction.CountA(Range("A:A")) - 1 est plus rapide qu'une boucle For Each Cell In Selection (un rapport de 70 sur mon code).

Après je ne sais pas si c'est valable pour tout les types de codes.
 
Re : Date format 10-FEB-2016 => 10/02/2016

Bonjour à tous

Attention aux affirmations fantaisistes 🙂. Je n'ai pas vu de réels différences entre for each et For i 😕.

Voici des codes sur le principe de Nairolf.

Code VBA:
Sub Macro_DateV2()
'0.328 secondes pour environ 1000 lignes sur XL 2013
t1 = Timer
Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 2)).Select
For Each cell In Selection
a = cell 'ou .Value 'ou .value2 'ou .text 'ou .Formula 'ou .FormulaR1C1
cell.Offset(0, 3) = a
Next
MsgBox Format(Timer - t1, "0.000")
End Sub

Sub Macro_DateV3()
'0.188 secondes pour environ 1000 lignes sur XL 2013
t1 = Timer
Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 2)).Select
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each cell In Selection
a = cell 'ou .Value 'ou .value2 'ou .text 'ou .Formula 'ou .FormulaR1C1
cell.Offset(0, 3) = a
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox Format(Timer - t1, "0.000")
End Sub

Sub ab()
'0.188 secondes pour environ 1000 lignes sur XL 2013
t1 = Timer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = 2 To WorksheetFunction.CountA(Range("A:A")) - 1
a = Cells(i, 1).Value
Cells(i, 1).Offset(0, 3).FormulaR1C1 = a
Next
For i = 2 To WorksheetFunction.CountA(Range("B:B")) - 1
a = Cells(i, 2).Value
Cells(i, 2).Offset(0, 3).FormulaR1C1 = a
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox Format(Timer - t1, "0.000")
End Sub
 
Re : Date format 10-FEB-2016 => 10/02/2016

Je t'assure que sur mon pc (avec XL2010) j'ai une différence :

Pour 38 lignes:
Macro_DateV3 = 0.781s
ab = 0.063s

Pour 1000 lignes:
Macro_DateV3 = 19.109s
ab = 18.992s

A noter que mes temps sont nettement plus longs.
 
Re : Date format 10-FEB-2016 => 10/02/2016

Bonjour à tous,

Sinon pour le fun, on peut faire sans boucle (pas calculé la vitesse):
Code:
Sub Macro_Date()
  t1 = Timer
  Selection.Formula = Selection.Value
  MsgBox Format(Timer - t1, "0.000")
End Sub

nb: si la sélection comporte la 3ième colonne, le texte de cette dernière est transformé en nombre.
 
Dernière édition:
Re : Date format 10-FEB-2016 => 10/02/2016

Bonsour®
s'il a accès à la génération de l'import, ce serait le meilleur moment pour traiter le format de la donnée.

🙄
聪明人指着月亮的时候,傻子看着他的手指

« Errare humanum est, perseverare diabolicum »
🙁

VB:
Sub Macro3()
'
' Macro3 Macro
    ' -ci-dessous i l faut modifier le nom et chemin du fichier à importer
    Workbooks.OpenText Filename:="C:\Chemin\ANCHETTI_NICOLAS.txt" _
        , Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
        :=xlNone, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=True, Comma _
        :=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 4), Array(2 _
        , 4), Array(3, 1)), TrailingMinusNumbers:=False, Local:=False
End Sub

😕
Pour la forme j'ai testé toutes les propositions et minuté le temps de la macro
même pour le FUN, moi, je ne n'ose pas chronométrer ...
😉 😀 😎
 

Pièces jointes

Dernière édition:
Re : Date format 10-FEB-2016 => 10/02/2016

@Modeste :
Désolé 🙁 d'avoir parlé chinois, à moins que ce ne soit du coréen? 😛.
J'avoue que mesuré le temps en soit, ça n'a pas trop d'intérêt, surtout pour des traitements n'atteignant pas la seconde.
Mais, dans le cas de traitement d'un volume de données conséquent, ça peut faire la différence entre une attente interminable et l'exaltation d'avoir un résultat en moins de 10s. 🙄


Justement j'ai testé le code de mapomme, et il est étonnamment rapide (moins de 6s pour plus de 2 millions de cellules = les colonnes A et B).
 
Re : Date format 10-FEB-2016 => 10/02/2016

Re


Oui, voilà, le code de Mapomme 🙂 était celui que j'atendais (Mais çi, Mais çi ) 😉.

Pour Modeste GD, je suis d'accord avec toi, mais le problème est que de plus en plus de logiciels sortent les données directement en .xls 😱.

Notons qu'ici, c'est surtout pour la recherche fondamentale 😱.

Voici d'autres codes issus de celui de Mapomme.

Code VBA:
Sub Abc()
t1 = Timer
Selection.Formula = Selection.Value
MsgBox Format(Timer - t1, "0.00000000")
End Sub

Sub Abcd()
Selection.Value = Selection.Value
End Sub

Sub Abcde()
Selection.Value2 = Selection.Value2
End Sub

Sub Abcdef()
Selection = Selection.Value
End Sub

Sub Abcdefg()
Cells(1, 1).CurrentRegion = Cells(1, 1).CurrentRegion.Value
End Sub

Sub Abcdefgh()
Range(Cells(1, 1), ActiveCell.SpecialCells(xlLastCell)).Select
Selection = Selection.Value
End Sub

Sub Abcdefghi()
t1 = Timer
Range(Cells(1, 1), ActiveCell.SpecialCells(xlLastCell)) = Range(Cells(1, 1), ActiveCell.SpecialCells(xlLastCell)).Value
MsgBox Format(Timer - t1, "0.00000000")
End Sub
 
Re : Date format 10-FEB-2016 => 10/02/2016

Re


Chez moi sur XL2007, le code de Eastwick ne fonctionne pas 🙁 , erreur ici, désolé.

Code:
  ActiveCell.FormulaR1C1 = "=LEFT(Tableau1[@Colonne1],2)"
 
Re : Date format 10-FEB-2016 => 10/02/2016

Bonjour,

ma contribution sur une colonne de 18.000 lignes (0,4 sec)

Code:
Sub lesdates()
t = Timer
tbl = [A2].CurrentRegion
For i = 1 To UBound(tbl)
  On Error Resume Next
  m = Split(tbl(i, 1), "-")
   m(1) = Switch(m(1) = "JAN", 1, m(1) = "FEB", 2, m(1) = "MAR", 3, m(1) = "APR", 4, m(1) = "MAY", 5, m(1) = "JUN", 6, _
    m(1) = "JUL", 7, m(1) = "AUG", 8, m(1) = "SEP", 9, m(1) = "OCT", 10, m(1) = "NOV", 11, m(1) = "DEC", 12)
  tbl(i, 1) = m(1) & "/" & m(0) & "/" & m(2)
Next
[D1].Resize(UBound(tbl)) = tbl
MsgBox (Timer - t)
End Sub

P.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
327
Réponses
6
Affichages
431
Réponses
3
Affichages
208
Réponses
8
Affichages
735
Réponses
4
Affichages
404
Réponses
4
Affichages
324
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…