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
 

jom007

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

Merci beaucoup pour votre réponse rapide.

Effectivement, c'est une piste très intéressante qui résoud presque mon problème.

Par contre, je n'arrive pas à faire la macro correspondante.

J'utilise l'enregistreur de macro (je suis novice), et quand je copie colle la macro dans la mienne, il ne se passe rien. Il doit manquer un petit truc à mon avis:

la macro:
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True

Merci beaucoup;

Jeremy
 

Pierrot93

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

Re,

pour convertir une plage de cellules dont le séparateur décimale des données source est un point :
Code:
Range("A1:A10").TextToColumns Destination:=Range("A1"), DecimalSeparator:="."
 
Dernière édition:

jom007

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

vous voulez dire
DecimalSeparator:="," ?

Mais même en faisant cela, mes millisecondes se déportent dans la colonne suivante et ma date reste au format texte.
 

Pièces jointes

  • essai macro.xls
    164.5 KB · Affichages: 70
  • essai macro.xls
    164.5 KB · Affichages: 80
  • essai macro.xls
    164.5 KB · Affichages: 70

Pierrot93

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

Re,

pour la date, si format donnés source "Format de date jour, mois, année"

Code:
Columns(1).TextToColumns Destination:=Range("A1"), fieldinfo:=xlDMYFormat

Code:
DecimalSeparator:="."
la valeur de l'argument "DecimalSeparator" représente le séparateur de décimale utilisé dans les données source....
 

jom007

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

oui effectivement,
j'ai balancé un fichier déjà modifié.
 

Pièces jointes

  • essai macro.xls
    166 KB · Affichages: 70
  • essai macro.xls
    166 KB · Affichages: 82
  • essai macro.xls
    166 KB · Affichages: 88

jom007

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

Je ne comprends pas très bien en fait.

Quand je passe par la barre de menu, je peux changer le format de la date, je peux également convertir des données, mais en passant par des macros, ça ne marche pas.
Vous semblez détenir la solution mais je n'arrive pas à l'appliquer.
 

jom007

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

Sinon, aucune macro ne peut changer ma ligne de texte en date donc ?
car mon importation des données sources ne peut se faire, je fais du copier collec des données dans le CSV.
 

Pierrot93

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

Re,

car mon importation des données sources ne peut se faire

pourquoi ? tu ne peux pas ouvrir le csv en question via vba en utilisant la méthode "opentext" ? tu as aussi l'importation des données par Excel => barre de menu => données => Données externes => importer des donées....
 

jom007

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

En fait je peux,
disons que je ne l'ai jamais tenté,

mais je me suis dit qu'avec les 75 colonnes, et les différents TAG qui composent l'intitulé des colonnes de mon fichier, différencier les points, des virgules et compagnie allait chambouler mon tableau et je crois que c'est un peu ce qu'il se passe en essayant votre solution.

Non ?
 

Pièces jointes

  • SERE H2S S17.zip
    11.3 KB · Affichages: 47

Discussions similaires

Statistiques des forums

Discussions
312 100
Messages
2 085 290
Membres
102 851
dernier inscrit
didine501