Enregistrer csv
omegaspe
-
omegaspe -
omegaspe -
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
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
A voir également:
- Enregistrer csv
- Audacity enregistrer son pc - Guide
- Comment enregistrer une conversation - Guide
- Enregistrer son ecran - Guide
- Comment enregistrer une video youtube - Guide
- Comment enregistrer un mail - Guide
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 ?
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 ?
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.
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.
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.
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.
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.