Changement de date + heure (hh:mm:ss:000) avec macro

jom007

XLDnaute Nouveau
Bonjour à tous,

j'ai un petit souci sur mon tableau excel et j'aurai besoin d'un peu d'aide.

J'ai un logiciel au boulot qui exporte des données au format CSV pour que l'on puisse les traiter sur excel et en tirer des courbes.
Les données de la première colonne sont des dates et des heures au format jj/mm/aaaa hh:mm:ss.ms

Chaque fois que nous travaillons avec ces données, nous avons l'habitude de modifier manuellement la date pour ne garder que la date au format j/mm/aa h:mm sans le :ss.ms.
Pour cela, nous devons dans un premier temps remplacer les points par des virgules, pour ensuite changer le format de la cellule et le passer au format date.

Nous souhaitons faire une macro pour accélerer cette manoeuvre car il y'a beaucoup de colonnes, d'onglets et de fichiers.

Donc je me suis penché dessus et je bloque.

Voici ma macro:

Columns("A:A").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Columns("A:A").Select
Selection.NumberFormat = "d/m/yy h:mm;@"

Ce qui logiquement devrait fonctionner.
Seulement la pseudo date passe de ça: 18/04/2012 00:15:00.000 à 18/04/2012 00:15:00,000 et ne se transforme pas en date au format j/m/aa h:mm.

J'ai entendu sur des forums qu'il y'avait un bug avec VBA et qu'il fallait remplacer un point par un point mais cela ne fonctionne pas. J'ai également changer les options de régions et de langues mais cela ne fait rien.

Je me suis demandé si je n'avais pas intérêt à copier qu'une partie du texte de la cellule pour en extraire la première partie mais je ne pense pas que cela marcherait.
J'ai aussi tenté en utilisant la fonction Remplacer de virer le :00.000 par un vide mais la cellule reste en texte et ne se transforme pas en date même en changeant le format de la cellule.

Donc je pense que je fais une erreur dans ma macro mais je ne vois pas où.

Ou bien il y'a peut-être une pirouette que l'un d'entre vous connait.

Donc je m'en remet à vous pour éclairer mes lanternes.


Désolé d'avoir été si long mais j'ai souhaité être le plus clair pour vous éviter de vous faire perdre du temps en cherchant à me comprendre.

Un grand merci en tout cas.

Cordialement
 

Pierrot93

XLDnaute Barbatruc
Re : Changement de date + heure (hh:mm:ss:000) avec macro

Re,

essaye peut être comme ceci :
Code:
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\MesDocs\Excel\SERE H2S S17.csv", Destination:=Range("A1"))
        .Name = "SERE H2S S17"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1252
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 _
        , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileDecimalSeparator = ","
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Other:=True, OtherChar _
        :=".", FieldInfo:=Array(Array(1, 4), Array(2, 9)), TrailingMinusNumbers:=True

Edition : modifie cette partie par le bon chemin et nom fichier "TEXT;C:\MesDocs\Excel\SERE H2S S17.csv",
 
Dernière édition:

jom007

XLDnaute Nouveau
Re : Changement de date + heure (hh:mm:ss:000) avec macro

Bonjour,

ça ne fonctionne pas.

Ecoutez, vous êtes très gentils de vous être penché sur mon problème, mais il me semble que nous perdons beaucoup de temps pour une petite manip qui ne mérite pas tant d'efforts.

Je pense que je vais laisser tomber.

Je vous remercie encore énormément.

Amicalement