Enregistrer csv

Fermé
omegaspe - 17 juil. 2014 à 13:52
 omegaspe - 21 juil. 2014 à 15:22
Bonjour à tous,

J'ai réalisé un petit programme qui sauvegarde des feuilles de mon classeur excel en format csv dans un répertoire de mon choix. Le programme le fait très bien, sauf que je rencontre trois petits problèmes:

1- le nom que je donne pour les fichiers csv, il le donne automatiquement à aux feuilles excel de mon classeur.
2- la dernière feuille lors de l'enregistrement en csv prend le nom pricing_ENT hors je veux que seul le dossier se sauvegarde ainsi.
3- Et enfin lors du l'exécution du programme, il met trop de temps à enregistrer les 4 feuilles en csv, ce qui me gène un peu.

Je ne sais pas quoi faire face à ces 3 problèmes, si quelqu'un peut bien m'aider.
Merci d'avance, voici le programme:

Sub Enregistrer_Click()

Dim i As Byte
Dim chemin As String
Dim objShell As Object, objFolder As Object, oFolderItem As Object


For i = 6 To 9

Sheets(i).Select

Chx = MsgBox("où voulez-vous sauvegarder?", vbYesNo + vbQuestion, "mDF XLpages.com")
If Chx = vbYes Then
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire pour l'enregistrement du fichier", &H1&)
Set oFolderItem = objFolder.Items.Item
chemin = oFolderItem.Path & "\"

nom = InputBox("Indiquer le nom du fichier :")
ActiveWorkbook.SaveAs Filename:=chemin & nom & ".csv", FileFormat:=xlCSV, local:=True
MsgBox chemin & nom & ".csv"

Else
CreateObject("Wscript.shell").Popup "Le fichier n'a pas été sauvegardé... Merci", vbExclamation

End If

Next i

ThisWorkbook.SaveAs ("Pricing_ENT")


End Sub



2 réponses

Bonjour,

1 - Quand tu enregistres au format CSV la feuille prendra automatiquement le nom du fichier, ça tu ne pourras rien y changer.

2 - Si je comprend la logique tu pars d'un fichier xsl avec 4 feuilles, tu enregistres chaque feuille au format CSV et ensuites tu veux enregistrer ton fichier XLS sous le nom Pricing_ENT , c'est ça ?

Dans ce cas il faut rajouter l'extension dans la ligne ci dessous :
ThisWorkbook.SaveAs ("Pricing_ENT.xls")

3 - Concernant le temps de chargement peux tu me dire quel taille font chacun des fichier CSV enregistré ainsi que le fichier principal ?
0
Bonjour Weapon EDGE,

Et merci pour ton aide, C'est ça comme tu l'as dis au 2-. Mais mon fichier a plusieurs feuilles mais juste 4 que j dois mettre en csv. Les 4 csv ont chacun une taille de 1,83 Ko et sur le disque 4 Ko. Le fichier principale a 14,1 Mo.
0
Bon, clairement 14 Mo c'est énorme. Je ne pense pas que tes tableaux atteigne les 500 000 lignes chacun ce qui signifies que des données parasite (ou inutile) trainent dans ton fichier.

Dans chaque feuille effectues les manip suivantes :
- sélectionnes la première colonne après ton tableau sur la droite.
- une fois la colonne en surbrillance appuies sur CTRL + SHIFT + Flèche de Droite
- Clic Droit de la Souris et Supprimer

- Sélectionne la dernière Ligne après ton tableau en bas.
- une fois la ligne surbrillance appuies sur CTRL + SHIFT + Flèche du Bas
- Clic Droit de la Souris et Supprimer

Répêtes ces actions sur les quatres feuilles et enregistres ton fichier. La Taille devrait avoir diminué.
Je pense que celà devrait résoudre le temps de la sauvegarde.
0
Re,

Merci weapon,je vais essayé demain et je te dirai si ça fonctionne.
Encore merci
0
Re,

Je l'ai fais weapon mais j'ai l'impression que le classeur à augmenté en taille de 14,1 à 14,2 Mo.
Mon classeur de départ contient 10 feuilles mais je copie juste 4 en csv. Donc ton astuce, je la fais pour toutes les 10 feuilles?
0
Oui pour toutes, je pensais qu'il n'y en avait que 4
0
Etrange, je l'ai refais pour toutes les 10 feuilles et le classeur a augmenté à 14,3 Mo. Mais je crois comprendre ce qui se passe, c'est un classeur remplis de formule donc chaque fois que mon programme s'exécute pour chaque csv, les calculs sont lancés automatiquement et c'est cela qui fait durer l'exécution du programme vba.
0