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

omegaspe -  
 omegaspe -
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

1 réponse

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. omegaspe
       
      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
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
    3. omegaspe
       
      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
    4. omegaspe
       
      Encore merci à toi
      0
    5. omegaspe
       
      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