Pb inversion date macro FR=>US

Résolu/Fermé
miliev83 Messages postés 9 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 12 juin 2013 - Modifié par miliev83 le 6/06/2013 à 14:18
miliev83 Messages postés 9 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 12 juin 2013 - 12 juin 2013 à 14:03
Bonjour,



Bonjour à tous,

Malgré de nombreuses recherches je n'ai pas réussi à résoudre mon problème, en m'inscrivant j'espère que vous aller pouvor m'aider car je suis bloqué depuis 1 semaine (je débute dans les macros)

J'ai créé une macro qui me permet de copier dans un fichier "planning" plusieurs données (dont 4 cellules au format date) d'un fichier CSV et de les coller sur mon fichier "planning".

Mon problème est que les dates sont inversée lors de la copie c'est à dire que de 04/06/13 cela passe à 06/04/13

voici la macro :
Windows("planning.csv").Activate
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _
Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array( _
33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), _
Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array( _
46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52, 1)) _
, TrailingMinusNumbers:=True
Range("E7").Select
Range("A2:AY1000").Select
Range("AY2").Activate
Selection.Copy
Windows("Planning_final.xlsm").Activate
ActiveWindow.ScrollRow = 974
ActiveWindow.ScrollRow = 812
ActiveWindow.ScrollRow = 650
ActiveWindow.ScrollRow = 2
ActiveWindow.SmallScroll Down:=-6
Range("A2").Select
ActiveSheet.Paste
Range("D25").Select
Sheets("Planning2").Select
Application.CutCopyMode = False
Application.Workbooks("planning.csv").Close SaveChanges:=True


End Sub


voila merci par avance !!!
A voir également:

5 réponses

eriiic Messages postés 24581 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 6 juin 2024 7 222
9 juin 2013 à 00:00
Bonjour,

tu as fait ça avec l'enregistreur de macro.
Recommence et à l'étape 3 (de mémoire) tu sélectionnes tes colonnes de dates et tu choisis le format Date : JMA.
Sinon sur des données déjà importées au format texte il faut utiliser cdate(ta_date)

Tu peux supprimer tous les ActiveWindow.ScrollRow
Ainsi que les .select inutiles.
Ex, remplacer :
Range("A2").Select
ActiveSheet.Paste
par :
Range("A2").Paste

eric

0
miliev83 Messages postés 9 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 12 juin 2013
10 juin 2013 à 12:31
Merci pour ta réponse,

le format JMA est bien sélectionné à l'étape 3.
en revanche (étant novice) je ne vois pas comment et où utiliser la fonction Cdate(ta_date) peut tu m'en dire plus ??

Merci d'avance
0
eriiic Messages postés 24581 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 6 juin 2024 7 222
Modifié par eriiic le 10/06/2013 à 13:12
Bonjour,

le format JMA est bien sélectionné à l'étape 3.
Faux
Toutes tes colonnes sont importées au format xlGeneralFormat (1), aucune au format xlDMYFormat (4).
il te faudrait au moins un Array(x, xlDMYFormat)
Fais F1 sur TextToColumns

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
miliev83 Messages postés 9 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 12 juin 2013
10 juin 2013 à 13:44
ok alors j'ai mis un 4 pour les colonnes où j'ai des dates ça donne :
Array(5, 4), Array(6, 4)
en revanche colonne 42 et 45 j'ai une date + heure je dois mettre quoi dans ce cas ?
0
eriiic Messages postés 24581 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 6 juin 2024 7 222
10 juin 2013 à 14:07
Pas de format prévu pour ça.
Tu peux tenter de mettre xlTextFormat pour les préserver.
Et traiter ces colonnes avec :
dat = CDate(Split(Cells(lig, col), " ")(0))
heu = CDate(Split(Cells(lig, col), " ")(1))
non testé, à voir...
Sinon déposer un extrait de ton csv.
Et je ne vois pas bien l'intérêt de faire ça si tu sauvegardes en csv pour tout perdre...
Il faut enregistrer au format xls.

eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
miliev83 Messages postés 9 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 12 juin 2013
10 juin 2013 à 14:17
le .csv me sert qu'a copier les données et coller sur mon planning.xlsm
0
eriiic Messages postés 24581 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 6 juin 2024 7 222
10 juin 2013 à 14:21
j'ai oublié, si tu veux dat-heu :
dat-heu=CDate(Split(Cells(lig, col), " ")(0)) + CDate(Split(Cells(lig, col), " ")(1))
0
miliev83 Messages postés 9 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 12 juin 2013
10 juin 2013 à 14:24
a quelle endroit de ma macro je dois insérer cette ligne ?
0
eriiic Messages postés 24581 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 6 juin 2024 7 222
10 juin 2013 à 14:34
à la fin.
Il faut que tu fasses une boucle sur toutes les cellules de la colonne et que tu les modifies une à une.
Pour avoir la dernière ligne d'une colonne :
derlig= cells(rows.count,"A").end(xlup).row

eric
0
miliev83 Messages postés 9 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 12 juin 2013
10 juin 2013 à 15:04
ah le problème c'est qu'il y a 400 lignes... ça risque pas d'être un peu long ?
0
eriiic Messages postés 24581 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 6 juin 2024 7 222
10 juin 2013 à 16:01
tu fais et tu verras bien.
Pour vba : 0.002 s ?
Et si tu ne sais pas faire dépose un fichier avec des datas non traitées.
eric
0