Copier coller plages variables depuis fichiers .csv fermés

Bonjour le forum,

j ai un probleme de copier-coller a partir de fichiers .csv fermés.

Tous les jours j exporte des automates des lignes de production des fichiers .csv. J ai un fichier par machine et 10 lignes, donc 10 fichiers. C est fichiers ont tous exactement la meme structure, sont tous dans le meme dossier, 1 seule feuille chacun de colonne A a S et ligne 1 a 89999. L exportation des ces 10 fichiers se fait 1 ou 2 fois par jour en venant ecraser les fichiers exportés la fois d avant.

Pour exploiter ces donnes de production, comme je ne sais pas comment faire autrement, je viens copier une par une les feuilles des mes 10 fichiers dans mon fichier de synthese (qui est aussi dans le meme dossier). Ensuite premier probleme je me retrouve avec un fichier de plus de 30 Mb, mais j arrive a calculer tout ce dont j ai besoin, tout marche bien. Mais la manip de coller les feuilles est penible a la longue et le fichier est vraiment trop lourd, les calculs sont trop lent.

Donc j ai commencé a ecrire un code pour automatiser la procedure de copie des feuilles. Le copier-coller une plage bien definie en dur pour mes 10 fichiers ok j y arrive, par contre avant je dois convertir mes fichiers .cvs en .xlsx avant sinon le collage ne marche pas bien.

Voici le code :

Sub copier_coller()

Dim lignedebut   As Integer
Dim lignefin   As Integer
Dim i As Integer

lignedebut = 12    
lignefin = 248

Application.DisplayAlerts = False

For i = 1 To 10

Workbooks.Open "c:\.... \MAC-" & i & ".XLSX"     'chemin a adapter
Range("A" & lignedebut & ":S" & lignefin).Select

Selection.Copy

Windows("synthese").Activate
    Sheets("MAC-" & i).Select
    Range("A2").Select
    ActiveSheet.Paste

    Windows("MAC-" & i & ".xlsx").Activate
    ActiveWindow.Close

    Next
2mac-1.csv (5.82 Ko)
Application.DisplayAlerts = True

End Sub

Mon probleme c est de pouvoir identifier mes plages a copier coller des mes fichiers .csv qui sont fermés. La plage sera differente pour les 10 fichiers .csv. La plage est identifiée par 4 données sur 2 colonnes differentes : jour de depart + l heure de depart et le jour de fin + l heure de fin.

Aujourd hui avec ma solution par „formule“ je rentre le jour de depart + l heure de depart et le jour de fin + l heure de fin et je trouve les plages a copier avec les formules suivantes :

Ligne de debut = EQUIV(1;(B:B=jour de depart)*(C:C>=heure de depart)*(F:F<>"");0)

Ligne de fin = MAX((B:B=jour de fin)*(C:C<=heure de fin)*(F:F<>"")*LIGNE(C:C))

Je cherche toujours a copier-coller les colonnes A:S. Par contre les lignes varient pour chaque fichier.

DOnc je resume mes problemes :

1/ je dois convertir avant la manip mes fichies .csv en .xls

2/ je ne sais pas comment traduire en vba mes formules ligne de debut et ligne de fin et tenant compte du fait que mes fichiers csv sont fermés a la base. (j avais pensé au moment de l ouverture de chacun, calculer ligne debut et ligne fin, mais je n y arrive pas)

je joints un modele de fichier .csv et en haut a droite comment je calcule aujourd hui mes lignes debut et fin, si ca peut aider...

Si qlq un a une idée pour m aider avancer,

merci bien a tous.

Floreli

Rechercher des sujets similaires à "copier coller plages variables fichiers csv fermes"