Je viens vous solliciter pour un souci dans la finalisation d'un bout de macro.
A savoir, j'utilise un code qui me permet de formater mes cellules telles que je le souhaite, ensuite je sauvegarde mon fichier au format CSV, or je voudrais savoir s'il existe un moyen de sauvegarder plusieurs fichiers CSV en fonction du nombre de lignes.
Je m'explique lol :
Mon fichier contient 1200 lignes, je souhaiterai que toutes les 200 lignes une macro me crée un fichier CSV
- 200 premières lignes = fichier1.csv
- de la 201 ligne à la 400 ligne = fichier2.csv
- etc...
Est ce que cela est réalisable ?
Si oui, pour faire plus compliqué, est-il possible (afin de conserver le même nom de fichier pour chaque sauvegarde) de créer :
Dans le répertoire c:\toto\ un répertoire Fichier1 puis sauvegarder dans ce repertoire le fichier titi.csv, ensuite créer un répertoire Fichier2 et mettre titi.csv, etc ...
Je ne sais pas si ma demande est claire mais je ne vois pas comment l'illustrer dans un fichier exemple.
La fin de la macro que j'utilise en ce moment et qui me sauvegarde un seul fichier est :
Re : Sauvegarder fichier XLS en plusieurs fichiers CSV
Re le forum,
En faisant des recherches sur le Web, j'ai trouvé ce bout de code de "Fvandermeulen " qui peut correspondre à ce que je souhaite faire mais je ne parviens à l'adapter pour qu'il sauvegarde mes fichiers en CSV dans le répertoire de mon choix (la sauvegarde actuelle se fait automatiquement dans le répertoire "Mes Documents":
Code:
Sub CopieNewFiles()
'
MyBook = ActiveWorkbook.Name
MySheet = ActiveSheet.Name
i = 1
Début = 1
fin = 200
NbCopie = Application.RoundUp((Application.Subtotal(3, Sheets(MySheet).Range("a:a")) / fin), 0)
For i = 1 To NbCopie
Range(Cells(Début, 1), Cells(fin, 20)).Copy
Workbooks.Add
ActiveSheet.Paste
ActiveWorkbook.SaveAs Filename:="Pasted_" & i
Windows(MyBook).Activate
Début = fin + 1
fin = fin + 200
Next i
End Sub
Avez-vous une idée de ce que je dois modifier, SVP ?
Re : Sauvegarder fichier XLS en plusieurs fichiers CSV
Salut,à adapter à ton contexte
Code:
Option Explicit
Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
(ByVal hwnd As Long, ByVal pszPath As String, ByVal lngsec As Long) As Long
' Pour valeur retournée dans Rep
' Voir http://msdn.microsoft.com/en-us/library/bb762131(VS.85).aspx
' et http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspx
Private Sub CreationDossier(sDossier As String)
Dim Rep As Long
Rep = SHCreateDirectoryEx(0&, sDossier, 0&)
End Sub
Sub Test()
Dim sDossier As String
sDossier = "D:\repA\repB\repC\repD\repE\repF"
CreationDossier sDossier
ActiveWorkbook.SaveAs Filename:=sDossier & "\" & "Pasted_" & ......
End Sub
Re : Sauvegarder fichier XLS en plusieurs fichiers CSV
Bonjour Jean-Marcel,
Merci de t'être penché sur mon cas.
Je viens de tester ce code qui fonctionne, mais qui ne fait pas tout ce dont je souhaite, c'est à dire :
- Est-il possible d'indiquer dans la macro le chemin du répertoire dans lequel je souhaite sauvegarder mes fichiers sans passer par la boite de dialogue ?
- Je souhaite que la macro me sauvegarde les fichiers au format CSV, or ton code me crée bien des fichiers découper mais au format XLS
- Les fichiers sauvegardés restent ouverts, comment dire en fin de macro que je souhaite qu'ils soient fermés après la sauvegarde ?
Re : Sauvegarder fichier XLS en plusieurs fichiers CSV
Re,
En effet je souhaite indiquer un chemin permanent :
Exemple : Sauvegarder tous les fichiers CSV dans C:\Toto\
Toutes les 200 lignes je souhaite qu'il me sauvegarde un fichier au format CSV dans le répertoire TOTO en conservant mon format de colonne et en fermant tous les fichiers sauvegardés à la fin de l'execution de la macro.
Re : Sauvegarder fichier XLS en plusieurs fichiers CSV
Re,
C'est beaucoup mieux dans le sens ou la macro enregistre bien tous mes fichiers dans le répertoire de destinataion choisi, ceux-ci se ferment bien automatiquement à la fin de la macro, cependant les fichiers sauvegardés restent au format XLS et non pas CSV.
Re : Sauvegarder fichier XLS en plusieurs fichiers CSV
Re bonjour le forum,
Une dernière petite question au sujet de ce code amélioré par Jean-Marcel.
Lorsque j'ai 1250 enregistrements dans un fichier et que j'execute la macro, tout se passe bien sauf pour le dernier fichier sauvegardé.
Si le dernier fichier contient 50 enregistrements, dans ce fichier CSV sauvegardé il va me rajouter 150 lignes supplémetaires dans mon CSV afin d'atteindre les 200 lignes.
Est-il possible de lui dire de prendre que les lignes ayant des datas et ignorés les lignes vides restantes ?