Enrégistrer des feuilles excel d'un classeur à un autre en CSV

Fermé
omegaspe - 4 juin 2014 à 11:33
 omegaspe - 17 juin 2014 à 14:28
Bonjour à tous,

J'espère qu'il y a encore du monde susceptible de m'aider. Mon pb est le suivant:
J'ai un classeur Excel avec plusieurs feuilles. Je dois faire un programme vba (bouton) me permettant, lors du click de copier les valeurs des feuilles du classeurs et d'enregistrer chaque feuille sur un nouveau classeur excel différent et de sauvegarder le tout dans un dossier créer automatiquement par la mm macro sur mon bureau. Et cela à chaque click il doit créer un nouveau dossier différent de l'ancien pour ainsi sauver à chaque fois les nouveau classeur.

J'arrive à créer un nouveau classeur pour copier les valeur des feuilles de l'autre classeur, mais il ne l'enrégistre pas format csv; voici mon programme:

Private Sub Enregistrer_Click()
Dim xlApp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlbook = xlApp.Workbooks.Add
xlApp.Visible = True
Set xlSheet = xlbook.Worksheets(1)
xlSheet.Name = "CSV_2014"
xlbook.Worksheets(1).Range("A1:B62").Value = Sheets("CSV_2014").Range("A1:B62").Value
xlbook.SaveAs ("ClasseurCSV_2014")
Nom = FormatCSV2014
Extension = ".csv"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs ("C:\Utilisateurs\Mon Nom\Mes documents") & Format2014_ & ".csv", xlCSV
ActiveWindow.Close
Application.DisplayAlerts = True
End Sub

ça c'est juste pour une feuille, je fais le reste en répétant plusieurs fois le mm prog.

Pour la création de dossier, il marque Erreur d'exécution 76, chemin d'accès introuvable:

Dim Chemin$, NomClient$, Fichier$
Const Cible = &H10 'Bureau
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(Cible)
Set objFolderItem = objFolder.Self
Chemin = "C:\Utilisateurs\AXFR9002.ENELFB\Mes Documents"
NomClient = Sheets("CSV_2014").Range("B3").Value
Dossier = NomClient & "CSV_2014"
MkDir objFolderItem.Path & Chemin & "Dossier"
ActiveWorkbook.SaveAs Chemin & NomClient

QlQ1 pourrait-il bien m'aider svp
A voir également:

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
4 juin 2014 à 17:12
Bonjour,

1/
Chemin = "C:\Utilisateurs\AXFR9002.ENELFB\Mes Documents\"
NomClient = Sheets("CSV_2014").Range("B3").Value
Dossier = NomClient & "CSV_2014"
MkDir objFolderItem.Path & Chemin & Dossier

2/
si vous utilisez deja excel, pourquoi
Dim xlApp As Excel.Application
et ainsi de suite
Pour sauvegarder chaque feuille en fichiers CSV separee, pas besoin de creer un classeur

exemple de code pour sauvegarder la feuil1 en csv:
Worksheets("feuil1").SaveAs Filename:="C:\Utilisateurs\Mon Nom\Mes documents\" & Format2014_ & ".csv", FileFormat:=xlCSV, CreateBackup:=False
0
Bonjour f894009,

Merci pour ton aide. J'ai pu faire ce que je voulais mais j'ai juste un pb au nivo de la sauvegarde, il ne sauvegarde pas quand je choisis le dossier dans lequel il devrait s'enregistrer.

Encore merci pour ton aide et dsl du retard

voici où j'en suis:
Sub Enregistrer_Click()

Dim xlApp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim xlbook1 As Excel.Workbook
Dim xlSheet1 As Excel.Worksheet
Dim xlbook2 As Excel.Workbook
Dim xlSheet2 As Excel.Worksheet
Dim xlbook3 As Excel.Workbook
Dim xlSheet3 As Excel.Worksheet
Dim Chx As Integer


Set xlApp = CreateObject("Excel.Application")
Set xlbook = xlApp.Workbooks.Add
Set xlbook1 = xlApp.Workbooks.Add
Set xlbook2 = xlApp.Workbooks.Add
Set xlbook3 = xlApp.Workbooks.Add
xlApp.Visible = True
Set xlSheet = xlbook.Worksheets(1)
Set xlSheet1 = xlbook1.Worksheets(1)
Set xlSheet2 = xlbook2.Worksheets(1)
Set xlSheet3 = xlbook3.Worksheets(1)
xlSheet.Name = "CSV_2014"
xlSheet1.Name = "CSV_2015"
xlSheet2.Name = "CSV_2016"
xlSheet3.Name = "CSV_2017"

xlbook.Worksheets(1).Range("A1:B62").Value = Sheets("CSV_2014").Range("A1:B62").Value
xlbook1.Worksheets(1).Range("A1:B62").Value = Sheets("CSV_2015").Range("A1:B62").Value
xlbook2.Worksheets(1).Range("A1:B62").Value = Sheets("CSV_2016").Range("A1:B62").Value
xlbook3.Worksheets(1).Range("A1:B62").Value = Sheets("CSV_2017").Range("A1:B62").Value


Chx = MsgBox("où voulez-vous sauvegarder?", vbYesNo + vbQuestion, "mDF XLpages.com")

If Chx = vbYes Then
Dim chemin As String
Dim Cls As String
Dim objShell As Object, objFolder As Object, oFolderItem As Object

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire pour l'enregistrement du fichier", &H1&)
On Error GoTo Gesterr

Set oFolderItem = objFolder.Items.Item
chemin = oFolderItem.Path
nom = InputBox("Indiquer le nom du fichier :")

xlbook.SaveAs ("CopieCSV_2014") & chemin & ".csv" & Chx
xlbook1.SaveAs ("CopieCSV_2015") & chemin & ".csv" & Chx
xlbook2.SaveAs ("CopieCSV_2016") & chemin & ".csv" & Chx
xlbook3.SaveAs ("CopieCSV_2017") & chemin & ".csv" & Chx

MsgBox chemin & nom & ".csv"



Gesterr::

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



End If

ActiveWorkbook.SaveAs Filename:=("\")


End Sub

Après avoir créer mes 4 classeur, il me laisse le choix de la sauvegarde. Je choisis le dossier mais apres il ne sauvegarde rien.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
10 juin 2014 à 18:26
Bonjour,

nom = InputBox("Indiquer le nom du fichier :") 
et apres il faut mettre ce nom au bout du chemin, mais attention un seul nom pour quatre fichiers!!!!!

ne pas oublier le backslash
chemin = oFolderItem.Path & "\"

ca ne vous fera jamais un fichier CSV
xlbook.SaveAs ("CopieCSV_2014") & chemin & ".csv" & Chx 

ca oui:

exemple de code pour sauvegarder la feuil1 en csv:
Worksheets("feuil1").SaveAs Filename:="C:\Utilisateurs\Mon Nom\Mes documents\" & Format2014_ & ".csv", FileFormat:=xlCSV, CreateBackup:=False

Vous n'avez pas repondu a la question: pourquoi
Dim xlApp As Excel.Application 
0
Bonjour,

Dsl je n'ai pas fais attention, vu que je suis débutant sur excel, l'application excel m'a semblé plus simple, j'ai pu comprendre facilement. Mais tu as raison, pourquoi créer une application excel alors que je suis sur excel.
Mais justement il y a un autre pb, lorsque je mets xlbook.SaveAs(" ") & chemin a ".csv" & chx
après xlbook3.Worksheets(1).Range("A1:B62").Value = Sheets("CSV_2017").Range("A1:B62").Value
il sauvegarde mes 4 classeurs en Format csv mais automatiquement dans mes document et cela malgrés le msgbox
0
Encore merci à toi
0
Encore un truc, vu que je veux sauvegarder mes classeurs ou feuilles créés, je ne pourrais faire ceci:
xlbook.Worksheets(1).SaveAs Filename:="C:\...\" & nom & ".csv", FileFormat:=xlCSV, CreateBackup:=False
0