[Résolu] Problème de tailles de fichiers - Colonnes créées lors d'imports CSV

grhum29

XLDnaute Junior
Bonjour à tous,

Je fais appel une nouvelle fois à vos services car j'ai un problème sur un fichier qui me sert à faire des imports CSV et ensuite à traiter les données dans Excel via du code VBA.

Ce fameux problème est qu'à chaque import CSV, il y a des colonnes qui sont créés à la suite de mon import CSV et ce fichier est de plus en plus lourd et il met donc un moment avant de s'ouvrir.

Vous trouverez, en pièce jointe, un exemple avec un fichier CSV pour tester.

Au début du code, j'efface les informations de la feuille afin de repartir sur une feuille blanche (Cf code ci-dessous)

Code:
    Selection.Delete Shift:=xlUp


J'ai essayé de contourner le problème en supprimant les feuilles puis en les recréant mais cela me pose des problèmes car le codename de la feuille est modifiée et mon programme plante car j'ai des variables qui dépendent de ce nom.

Pouvez-vous regarder et me dire comment je peux faire pour pallier à ça?

Merci de votre aide.

Bonne journée.
 

Pièces jointes

  • test.zip
    25.4 KB · Affichages: 33
  • test.zip
    25.4 KB · Affichages: 24
Dernière édition:

vgendron

XLDnaute Barbatruc
Re : Problème de tailles de fichiers - Colonnes créées lors d'imports CSV

Bonjour,


je ne comprend pas trop le problème. puisque tu effaces tout à chaque fois et que tu recommences tout.. il n'y a donc pas de colonnes en plus.....???

à quel moment le codename de ta feuille change t il??


en attendant.. pour effacer tu peux remplacer
Code:
    Sheets("BASE").Select
    Range("A1:X" & LFinD & "").Select
    Selection.Delete Shift:=xlUp

par cette ligne unique
Code:
    Sheets("BASE").Cells.Clear
 

vgendron

XLDnaute Barbatruc
Re : Problème de tailles de fichiers - Colonnes créées lors d'imports CSV

Peut etre que:

Code:
'définition de la plage
Set PlgRé = Feuil1.[A6].Resize(Feuil1.[A65000].End(xlUp).Row - 5, 12)
LFinD = Sheets("Base").[B65000].End(xlUp).Row

est mieux que
Code:
'définition de la plage
Set PlgRé = Feuil1.[A6].Resize(Feuil1.[A65000].End(xlUp).Row - 5, 12)
LFinD = Feuil1.[B65000].End(xlUp).Row


Et comme tu as placé un
Application.ScreenUpdating = false

il te manque à la fin un
Application.ScreenUpdating = True
 

grhum29

XLDnaute Junior
Re : Problème de tailles de fichiers - Colonnes créées lors d'imports CSV

Bonjour vgendron,

Moi non + je ne comprends pas trop pourquoi cela se produit. Effectivement j'efface tout et je recommence tout à chaque fois mais si tu importes plusieurs fois le fichier CSV, on voit que le nombre de colonnes à droite des colonnes importées grandit...

Le codename de la feuille change à partir du moment où je supprime en VBA la feuille "BASE" et que je la récrée la feuille (Ex : Si le codename de la feuille "base" que je supprime est "feuil1), au moment de la recréer le codename de la feuille sera "feuil4 par exemple).

Le problème est que je me sert du codename "feuil1" pour établissement de la variable suivante :

Code:
Set PlgRé = Feuil1.[A6].Resize(Feuil1.[A65000].End(xlUp).Row - 5, 12)[COLOR=#333333][FONT=monospace] [/FONT][/COLOR]

=> Avec le code suivant, le problème reste similaire :

Code:
   Sheets("BASE").Cells.Clear

Merci de votre aide.
 

vgendron

XLDnaute Barbatruc
Re : Problème de tailles de fichiers - Colonnes créées lors d'imports CSV

Le codename de la feuille change à partir du moment où je supprime en VBA la feuille "BASE"

ou ca? je vois pas la ligne de code qui supprime et recréer la feuille Base..
et comme je te le suggères dans mon second post (je pense que tu ne l'as pas vu en fait ;-) )
utilises le nom de la feuille plutot que son codename..
sinon. après cette fameuse ligne que je ne vois pas où tu recrées la feuille base.. il me semble que tu peux AUSSI lui redonner le codename que tu souhaites..
 

grhum29

XLDnaute Junior
Re : Problème de tailles de fichiers - Colonnes créées lors d'imports CSV

Effectivement cette ligne n’apparaît pas dans le fichier actuel car je n'arrivais pas à faire ce que je voulais de cette manière

Le code que j'utilisais pour supprimer et recréer ma page était le suivant :

Code:
    Sheets("BASE").Select
    ActiveWindow.SelectedSheets.Delete

Sheets.Add.Name = "BASE"

On peut aussi utiliser le nom de la feuille pour le code suivant ?

Code:
Set PlgRé = Feuil1.[A6].Resize(Feuil1.[A65000].End(xlUp).Row - 5, 12)

Merci de ton aide.
 

vgendron

XLDnaute Barbatruc
Re : Problème de tailles de fichiers - Colonnes créées lors d'imports CSV

On peut aussi utiliser le nom de la feuille pour le code suivant ?

suffit d'essayer.. ;-)

Code:
'définition de la plage
Set PlgRé = Sheets("Base").[A6].Resize(sheets("Base").[A65000].End(xlUp).Row - 5, 12)
LFinD = Sheets("Base").[B65000].End(xlUp).Row

pardon. j'avais laissé Feuil1 sur la premiière ligne...

ou alors, plus propre

Code:
'------------------
'Début Calculs :
'------------------

'définition de la plage
With Sheets("Base")
    Set PlgRé = .[A6].Resize(.[A65000].End(xlUp).Row - 5, 12)
    LFinD = .[B65000].End(xlUp).Row
End With
 

grhum29

XLDnaute Junior
Re : Problème de tailles de fichiers - Colonnes créées lors d'imports CSV

Parce que j'en reviens à mon problème initial qui est qu'à chaque import CSV, il y a des colonnes qui sont créés à la suite de mon import CSV et ce fichier est de plus en plus lourd et il met donc un moment avant de s'ouvrir.
 

vgendron

XLDnaute Barbatruc
Re : Problème de tailles de fichiers - Colonnes créées lors d'imports CSV

euh....j'ai peut etre compris.. (ou pas.. ;-) )
à chaque fois que je lance la macro, je réimporte le fichier CSV que tu as joins. donc.. il y a toujours les meme colonnes créées..
et donc; la macro marche très bien.
sauf que toi.. à chaque import. tu Changes de fichier CSV ???
et si tu as plus de colonnes. c'est que ton fichier source en contient plus lui meme..??
 

grhum29

XLDnaute Junior
Re : Problème de tailles de fichiers - Colonnes créées lors d'imports CSV

Non j'ai toujours le même nombre de colonnes dans mon tableau. C'est le nombre de lignes qui différe.

La macro que j'utilise fonctionne effectivement correctement mais je remarque que la taille de mon fichier ne cesse de grandir au fur et à mesure que je fais des imports CSV et cela malgré le fait que je supprime toujours les données avant chaque import...

Je reprend l'exemple du fichier qui se trouve en PJ. Le fichier d'origine fait 28Ko mais à chaque fois que j'importe le même fichier CSV, le fichier prend un ko.

Le fichier en exemple est juste un extrait d'un autre fichier dans lequel je fais + de traitement et dans lequel j'importe beaucoup + de lignes... Ce fichier en question pèse de + en + lourd et il met de plus en plus de temps à s'ouvrir.

Merci de votre aide.
 

Staple1600

XLDnaute Barbatruc
Re : Problème de tailles de fichiers - Colonnes créées lors d'imports CSV

Bonsoir à tous

grhum29
En remplaçant ton code initial par celui-ci
Code:
Private Sub CommandButton1_Click()
Dim Fichier$, dl&
ThisWorkbook.Sheets("Base").Cells.Clear
Fichier = Application.GetOpenFilename("CSV Files (*.CSV), *.csv")
Workbooks.OpenText Fichier, Local:=True
ActiveWorkbook.Sheets(1).Range("A1").CurrentRegion.Copy ThisWorkbook.Sheets("Base").Range("A5")
ActiveWorkbook.Close False
With ThisWorkbook.Sheets("Base")
    .Columns("D:D").Cut: .Columns("A:A").Insert Shift:=xlToRight
    .Columns("F:F").Insert Shift:=xlToRight: .Columns("H:H").Insert Shift:=xlToRight: .Columns("J:J").Insert Shift:=xlToRight
    dl = .Cells(Rows.Count, "E").End(xlUp).Row
    .Range("E6:E" & dl).TextToColumns Destination:=Range("E6"), DecimalSeparator:="."
    .Range("E6:F" & dl).NumberFormat = "#,##0.00"
    .[F5] = "Nb Kilomètres totaux": .[H5] = "Durées totales - Vitesse > 74 kms"
    .[J5] = "Durées totales - Déccélération > 10 Km/h/s": .[L5] = "Durées totales -  Accélération > 6 Km/h/s"
    For i = 5 To 11 Step 2
    .Range(Cells(6, i + 1), Cells(dl, i + 1)).FormulaR1C1 = "=SUMIF(R6C1:R" & dl & "C1,RC1,R6C" & i & ":R" & dl & "C" & i & ")"
    Next
    .Range("A5:L5").Columns.AutoFit: .Columns("G:L").NumberFormat = "h:mm"
End With
End Sub
1) Est-ce déjà tu obtiens le même résultat qu'avant ?
2) Est-ce tu as encore ton problème de colonnes en trop?
 

grhum29

XLDnaute Junior
Re : Problème de tailles de fichiers - Colonnes créées lors d'imports CSV

Bonjour Staple1600,

Je suis admiratif devant le code optimisé que tu proposes.

En remplaçant mon code par le tien, mon problème est résolu. La taille de mon fichier n'augmente plus au fur et à mesure des imports du fichier.

Il y a juste un problème qui persiste lorsque j'essaye d'intégrer un autre fichier CSV (cf. fichier en PJ) comportant un nombre de lignes plus importants (le nombre de lignes du fichier csv varie selon la période choisie), j'ai un message d'erreur (l'ensemble des colonnes s'insère dans la même colonne du fichier excel) . Je pense que cela est lié au type de séparateur de colonnes utilisées mais je ne sais pas comment le modifier dans ton code.

Peux-tu me dire comment faire la modification ?

Merci,
 

Pièces jointes

  • test_2.zip
    764 bytes · Affichages: 21
  • test_2.zip
    764 bytes · Affichages: 24

Discussions similaires

Statistiques des forums

Discussions
312 246
Messages
2 086 578
Membres
103 247
dernier inscrit
bottxok