Bonjour à tous (deuxième fois de la journée),
J'avais réalisé il y a quelques temps une macro que j'avais laissé de coté et je viens de me replonger dedans.
Cette macro à pour but de compiler dans un classeur des données en provenance de multiples fichiers CSV.
Ces fichier CSV sont construits de cette manière :
La copie des données vers ma feuille principale se passe bien sauf que mes dates subissent une inversion entre le jour et le mois. Au lieu d'avoir jj/mm/aaaa j'obtiens mm/jj/aaaa une fois l'ensemble des fichiers compilés.
Voici le code concerné :
J'essaye donc de forcer la date à rester dans un format français via la boucle (notement avec le CDate...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 For i = 1 To deltajour MyDate = DateAdd("d", 1, MyDate) fichier = Format(MyDate, "yyyymmdd") 'Ouvre le fichier à consolider Set Wb = Workbooks.Open(chemin & fichier & "-" & fichier2 & extension) MsgBox (chemin & fichier & " - " & fichier2 & extension) 'Verification de la valeur retournée 'Sélectionne la feuille où se trouvent les données Sheets(1).Select MsgBox (Range("A2")) For j = 1 To 1000 Cells(i, 1) = maDateStr Cells(i, 1).Value = CDate(maDateStr) Next j MsgBox (Range("A2")) 'Compte le nombre de lignes à copier n = WorksheetFunction.CountA(Range("A:A")) 'Compte le nombre de colonnes à copier m = ActiveSheet.UsedRange.Columns.Count 'Copie les données Range(Cells(2, 1), Cells(n, m)).Copy 'Active le classeur de synthèse Workbooks("Traitement_données.xlsm").Activate 'Sélectionne la feuille où on va coller les données Sheets(1).Select 'Compte le nombre de lignes non vides et ajoute 1 pour avoir le numéro de la première ligne vide c = WorksheetFunction.CountA(Range("A:A")) + 1 'Sélectionne la première cellule vide Range("A" & c).Select 'Colle les données ActiveSheet.Paste Application.CutCopyMode = False 'Ferme la base de données qui a été consolidée et passe à la suivante Wb.Close False Next i End Sub
incluse dans la première boucle for mais j'obtiens une erreur "Erreur d'éxcécution '13': Incompatibilité de type"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 For j = 1 To 1000 Cells(i, 1) = maDateStr Cells(i, 1).Value = CDate(maDateStr) Next j
J'ai cherché pas mal de solutions sur internet et je dois avouer que je désespéré un peu... (j'ai également tenté pas mal d'autres solutions sans succès également...)
Je sollicite donc à nouveau votre aide
Merci d'avance !
Alex.
Partager