Macro un fichier excel par onglet et rangement dans 1 dossier

Résolu
netabisse Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
 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

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
netabisse Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
De rien.
Merci et bonne journée à vous également,
A+
0
Ludo31120 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
 
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
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