Macro un fichier excel par onglet et rangement dans 1 dossier

[Résolu/Fermé]
Signaler
Messages postés
12
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
17 septembre 2013
-
 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

Messages postés
12255
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
30 août 2021
2 636
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

Messages postés
12
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
17 septembre 2013

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
Messages postés
12255
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
30 août 2021
2 636
De rien.
Merci et bonne journée à vous également,
A+
Messages postés
1
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
2 avril 2014

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.
Messages postés
12255
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
30 août 2021
2 636
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
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!