Macro format date à inverser

bouba_95

XLDnaute Nouveau
Bonjour le forum,

Voilà, lors de l'import d'un fichier txt, j'ai un champ date au format AAAAMMJJHH24MISS que je souhaiterai convertir au format JJ/MM/AAAA.
Dans Excel, j'ai crée une macro automatique.
Formule pour extraire les 8 premiers chiffres =GAUCHE(A1;8). Ce qui donne AAAAMMJJ. Ensuite, j'ai crée une autre formule =DATE(GAUCHE(A1;4);STXT(A1;5;2);DROITE(A1;2)). Ce qui donne comme résultat JJ/MM/AAAA.

Voici la macro à améliorer en VB si possible :
Code:
Sub Form_Date()
'
' Form_Date Macro
' Macro enregistrée le 25/09/2007 par Bramtane
'

'
    Columns("D:D").Select
    Selection.Insert Shift:=xlToRight
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],8)"
    Range("D1").Select
    Selection.Copy
    Range("D2").Select
    ActiveWindow.ScrollRow = 87
    ActiveWindow.ScrollRow = 260
    ActiveWindow.ScrollRow = 347
    ActiveWindow.ScrollRow = 606
    ActiveWindow.ScrollRow = 865
    ActiveWindow.ScrollRow = 1038
    ActiveWindow.ScrollRow = 1384
    ActiveWindow.ScrollRow = 1729
    ActiveWindow.ScrollRow = 2075
    ActiveWindow.ScrollRow = 2507
    ActiveWindow.ScrollRow = 2939
    ActiveWindow.ScrollRow = 
.
.
.
.
  ActiveWindow.ScrollRow = -11875
    ActiveWindow.ScrollRow = -11616
    Range("D2:D53957").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("D1").Select
    ActiveWindow.ScrollRow = 174
    ActiveWindow.ScrollRow = 260
.
.
.
 ActiveWindow.ScrollRow = -11616
    Range("D1:D53957").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Columns("E:E").Select
    Selection.Insert Shift:=xlToRight
    Range("E1").Select
    ActiveCell.FormulaR1C1 = _
        "=DATE(LEFT(RC[-1],4),MID(RC[-1],5,2),RIGHT(RC[-1],2))"
    Range("E1").Select
    Selection.Copy
    Range("E2").Select
    ActiveWindow.ScrollRow = 87
    ActiveWindow.ScrollRow = 174
.
.
 ActiveWindow.ScrollRow = -11616
    Range("E2:E53957").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Columns("E:E").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Columns("C:D").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
End Sub
 

bqtr

XLDnaute Accro
Re : Macro format date à inverser

Bonjour bouba_95

Un exemple à adapter si j'ai bien compris: La macro extrait la date et remplace la valeur d'origine de la cellule par celle-ci automatiquement, donc pas de copier/coller.

Code:
Sub Extraire_Date()
Dim plg As Range
Dim tablo, i As Long

Set plg = Range("D1:D" & Range("D65536").End(xlUp).Row)
tablo = plg

For i = 1 To UBound(tablo)
  tablo(i, 1) = Mid(tablo(i, 1), 7, 2) & "/" & Mid(tablo(i, 1), 5, 2) & "/" & Left(tablo(i, 1), 4)
Next
plg = tablo

End Sub

La variable plg correspond à la colonne que tu veux traiter, ici de la cellule D1 à la dernière cellule non vide de la colonne D.

A+
 

Discussions similaires

Réponses
3
Affichages
591

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS