Macro un fichier excel par onglet et rangement dans 1 dossier

Résolu
netabisse Messages postés 12 Statut Membre -  
 dream22 -
Bonjour,

Voilà mon "problème".
J'ai un classeur Excel avec plusieurs onglets.
J'ai déjà trouvé sur le forum comment créer un fichier excel par onglet avec une macro.
Par contre, je ne parviens pas à retrouver ces fichiers excel, je souhaiterais qu'ils se rangent automatiquement dans un dossier existant dans "mes documents".

Sauriez-vous m'aider pour créer le code complémentaire à ma macro pour cela.
Idéalement, si je peux en même temps supprimer les quadrillages et les feuilles vides, ça serait top.

Voici le code que j'ai déjà.

Sub saveOnglet()
Dim ws
Dim newWk As Workbook

For Each ws In Worksheets
Set newWk = Workbooks.Add(xlWBATWorksheet)
ws.Copy newWk.Sheets(1)
newWk.SaveAs (ws.Name & ".xls")
newWk.Close
Set newWk = Nothing
Next ws

End Sub

Par avance je vous remercie de votre aide précieuse.

Bonne journée

4 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    2 choix :
    1- tu connais le chemin d'accès à ce répertoire et ce dernier ne changera jamais :
    Dim ws
    Dim newWk As Workbook 
    Dim Chemin As String
    Chemin = "C:\Pijaku\Ne_fait_rien_de_ses_journées\CCM\"  
    For Each ws In Worksheets
        Set newWk = Workbooks.Add(xlWBATWorksheet)
        ws.Copy newWk.Sheets(1)
        newWk.SaveAs (Chemin & ws.Name & ".xls")
        newWk.Close
        Set newWk = Nothing
    Next ws 

    2- tu souhaites laisser le choix à l'utilisateur :
    Dim ws
    Dim newWk As Workbook 
    Dim objShell As Object, objFolder As Object
    Dim Chemin As String
    
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
    
    If objFolder Is Nothing Then
        MsgBox "Abandon opérateur", vbCritical, "Annulation"
    Else
        Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
    End If
    If Chemin <> "" Then
        For Each ws In Worksheets
            Set newWk = Workbooks.Add(xlWBATWorksheet)
            ws.Copy newWk.Sheets(1)
            newWk.SaveAs (Chemin & ws.Name & ".xls")
            newWk.Close
            Set newWk = Nothing
        Next ws 
    End If

    0
  2. netabisse Messages postés 12 Statut Membre
     
    Bonjour!

    Génial!!
    ça marche trop bien.
    J'ai même pu ajouter les codes pour supprimer la feuille "feuil1' qui se créé automatiquement et le code pour enlever le quadrillage, le tout dans la même macro.

    Merci beaucoup!
    C'est magique!

    Bonne journée
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      De rien.
      Merci et bonne journée à vous également,
      A+
      0
  3. Ludo31120 Messages postés 2 Statut Membre
     
    Bonjour,
    ce bout de code marche super bien, par contre existe-t-il un moyen de ne copier seulement que les valeurs des cellules du fichier source à la place des formules?
    Merci d'avance.
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,

      Pour cela, il faut "ruser" un peu.
      1- créer une nouvelle feuille,
      2- Copier les cellules contenues dans la feuille que vous souhaitez copier,
      3- collage spécial valeur dans la nouvelle feuille
      4- Exécuter la macro ci-dessus avec la nouvelle feuille
      5- recommencer autant de fois que de feuilles,
      6- supprimer la nouvelle feuille
      0
  4. dream22
     
    Bonjour,

    Serait-il possible de ranger les différents onglets dans différents dossiers?
    J'ai fait une macro excel qui permet d'abord de convertir chaque onglet excel sous format txt. J'arrive à ranger tous les fichiers txt dans un dossier spécifique, mais j'aimerai pouvoir ranger l'onglet 1 dans le dossier 1, l'onglet 2 dans le dossier 2, etc..

    Je vous remercie par avance!
    0