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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
' force la déclaration des variables
Option Explicit
Sub Compilation()
Dim Temp As String
Dim Ligne As Long, nbcol As Integer, ligne_destin As Integer
Temp = Dir(ActiveWorkbook.Path & "\*.csv")
Application.DisplayAlerts = False
' ligne de destination dans récap
ligne_destin = 0
Do While Temp <> ""
' attention je suis en 2010 donc les noms de fichiers sont différents
' pour toi il faut que tu changes probablement en xls"
If Temp <> "Recap.xlsm" Then
' le local true t'ouvres normalement ton fichier csv en répartissant selon les ;
Workbooks.Open ActiveWorkbook.Path & "\" & Temp, local:=True
' du coup ta copie est inutile
' Workbooks(Temp).Sheets(1).Range("A1").CurrentRegion.Copy
' j'ai laissé ta sélection de ligne mais ai enlevé le +1
Ligne = Sheets(1).Range("A65536").End(xlUp).Row
' on détecte le nombre de colonne
nbcol = Application.WorksheetFunction.CountA(Range("1:1"))
' j'appelle la fonction qui va remplir récap
Call recopie(Ligne, nbcol, ligne_destin + 1)
' on déplace la ligne de destination
ligne_destin = Ligne
'on ferme
Workbooks(Temp).Close
End If
' et on boucle
Temp = Dir
Loop
Range("A1").Select
Application.DisplayAlerts = True
End Sub
'
' fonction de recopie de plage
' paramètre ligne max, colonne max et ou copier dans recap
Function recopie(lig_max, col_max, ou_copier)
'tableau variant
Dim tableau()
' variable qui permet de définir à partir de quelle colonne
' on capture
Dim a_partir_quelle_colonne As Integer
'on copie à partir de la colonne 3
a_partir_quelle_colonne = 3
' je charge le tableau à partir de la plage
' tu peux suivre en débug ( ajouter espion sur tableau et suivre F8
tableau() = Range(Cells(1, a_partir_quelle_colonne), Cells(lig_max, col_max))
' on active récap
Workbooks("Recap.xlsm").Sheets(1).Activate
' on sélectionne la plage de destination et on charge le contenu de tableau
' j'ai décomposé la destination range pour que tu comprennes bien comment on charge
'
Range( _
Cells(ou_copier, _
1), _
Cells(ou_copier + lig_max - 1, _
col_max - a_partir_quelle_colonne + 1) _
) = tableau()
End Function
'
'
' |
Partager