Remplacement de dates au format " déc. " par "/12/" par macro

excelentille

XLDnaute Nouveau
Bonjour à tous,

Je m'initie aux macros afin de gagner du temps sur des tâches répétitives avant exploitation de fichiers CSV.

En l'occurence, pour je ne sais quelle raison, un fichier que je récupère périodiquement contient des dates au format suivant 12/08/2014 13:23:45, tandis que d'autres sont au format 15 déc. 2014 14:13:38.

Je cherche donc à harmoniser ces dates via une macro qui remplace " déc. " par "/12/", et de même pour les autres mois.

Si je le fais avec l'outil recherche et remplace, tout se passe bien.
a
En revanche, une fois que j'exécute la macro que j'ai enregistré sur le même modèle, Excel traite différemment les dates, comme s'il interprétait le JJ/MM/AAAA en MM/JJ/AAAA (format 2), sans que je lui précise quoi que ce soit : les dates sont au format texte avant traitement.
Concrètement, s'il tombe sur, disons 12 déc. 2014 23:12:43, il va bien faire le remplacement. Si j'édite la cellule, s'affiche alors un second espace entre la date et l'heure, qui semble signifier que la date est bien interprétée.
En revanche, s'il tombe sur une date incohérente selon le format 2, il remplace bien " déc. " par "12", mais le contenu de la cellule reste aligné à gauche, signe qu'il ne comprend pas ce qui s'y trouve

Je joins un fichier qui explique tout ça.

Merci d'avance pour votre coup de main !
 

Pièces jointes

  • TestMacro.xlsm
    12.6 KB · Affichages: 27
  • TestMacro.xlsm
    12.6 KB · Affichages: 29
  • TestMacro.xlsm
    12.6 KB · Affichages: 31
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Remplacement de dates au format " déc. " par "/12/" par macro

Bonsoir à tous


Essaie cette macro en ayant au préalable sélectionné tes dates en colonne A
Code:
Sub a()
Dim c As Range
For Each c In Selection
c.Offset(, 1) = CDate((Replace(c.Text, ".", " ")))
c.Offset(, 1).NumberFormat = "dd/mm/yyyy hh:mm:ss"
Next
End Sub
 

excelentille

XLDnaute Nouveau
Re : Remplacement de dates au format " déc. " par "/12/" par macro

Bonsoir,

Merci pour le coup de main !

Dans un 1er temps, il me donnait une erreur d'exécution 13 / incompatibilité de type.
J'ai cru comprendre que ça a à voir avec le format des données d'entrée. De texte, je suis passé au format date visé.
Du coup, plus d'erreur, mais il ne se passe rien...
 

Staple1600

XLDnaute Barbatruc
Re : Remplacement de dates au format " déc. " par "/12/" par macro

Re

j'avais précisé ceci...:rolleyes:
Essaie cette macro en ayant au préalable sélectionné tes dates en colonne A
Donc la même macro, mais sans sélection nécessaire

Code:
Sub b()
Dim c As Range
For Each c In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
c.Offset(, 1) = CDate((Replace(c.Text, ".", " ")))
c.Offset(, 1).NumberFormat = "dd/mm/yyyy hh:mm:ss"
Next
End Sub

Chez moi, il se passe bien quelque chose que ce soit avec la macro a ou la macro b ;)
 
Dernière édition:

excelentille

XLDnaute Nouveau
Re : Remplacement de dates au format " déc. " par "/12/" par macro

Oui, oui, j'avais bien sélectionné les dates avant.

Du coup, je viens de comprendre (du moins partiellement) : je ne devais pas être en texte. Toutefois, pour les passer correctement en texte, il faut que je le fasse cellule, par cellule. Si je sélectionne toute la colonne, il me met le contenu de la cellule sous la forme : 41985,3534490741.
Sais-tu pourquoi ?
 

Staple1600

XLDnaute Barbatruc
Re : Remplacement de dates au format " déc. " par "/12/" par macro

Re


Oui je sais pourquoi.
(Cela correspond au numéro de série d'une date)
Voir ici pour les détails (ou dans l'aide Excel, touche F1)
DATE - Excel

Applique le format jj/mm/aaaa hh:mm:ss et tout rentrera dans l'ordre

Cependant , j'ai testé les macro a et b sur ta PJ et j'obtiens ce qui suit
(j'ai simplement au préalable appliqué le format Standard sur la colonne B avant de lancer les macros)
01Adates.png
 
Dernière édition:

excelentille

XLDnaute Nouveau
Re : Remplacement de dates au format " déc. " par "/12/" par macro

Je viens de trouver le problème. Je ne comprenais pas bien ce que faisaient les formules de placement, et une fois dans mon vrai tableau, là où mes données ne sont pas dans la même colonne, ça posait problème.
C'est maintenant réglé, en ajustant les cellules où l'info est piochée et modifiée.

Merci pour ton coup de main. Ça m'a bien aidé ! :)

À bientôt
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 842
dernier inscrit
seb0390