Exporter des lignes d'un classeur vers des fichiers csv

Tpk211

XLDnaute Nouveau
Bonjour a tous,

Je cherche un methode pour exporter des lignes d'un fichier excel en fichier CSV.
Je veux que chaque ligne de mon fichier excel genere un fichier CSV.

Exemple : excel

IDENTIFIANT BUREAU VOLUMENO TYPE NODEBUT NOFIN REMARQUE
1054464887 1 3 69 25 50 A a Z ET CIES NUMERIQUES
1054464886 1 4 69 1949-1971
1054464885 1 5 69 24 46 1972-1976



Exemple : CSV1
1054464887;1;3;69;25;50;A a Z ET CIES NUMERIQUES

Exemple : CSV2
1054464886;1;4;69;;;1949-1971

Exemple : CSV3
1054464885;1;5;69;24;46;1972-1976

Merci pour vos lumieres

Th
 

Roland_M

XLDnaute Barbatruc
Re : Exporter des lignes d'un classeur vers des fichiers csv

bonsoir,

voir avec ce genre de routine simple mais efficace !

adapter les lignes <<<<<<<<<<<<<<<<<<<

Code:
Sub ExportDonneesFichCSV()
Dim RangeDonnees As Range, LigneCSV$, NomDeLaFeuille$, AdresDesDonnees$
Dim Chemin$, NomDuFichier$
Dim Lig%, Col%, NbrDeLig%, NbrDeCol%
NomDeLaFeuille$ = "Feuil1" '<<<<<<<<<<<<<<<<<<<<<<
AdresDesDonnees$ = "A1:C10" '<<<<<<<<<<<<<<<<<<<<<<
Chemin$ = "C:\dossier" '<<<<<<<<<<<<<<<
NomDuFichier$ = "Fichier.csv" '<<<<<<<<<<<<<<<<<

'Plage de données
Set RangeDonnees = Worksheets(NomDeLaFeuille$).Range(AdresDesDonnees$)
NbrDeLig = RangeDonnees.Rows.Count
NbrDeCol = RangeDonnees.Columns.Count

'Open fichier csv sauvegarde
Open Chemin$ & "\" & NomDuFichier$ For Output As #1
For Lig = 1 To NbrDeLig
  For Col = 1 To NbrDeCol
   LigneCSV = LigneCSV & RangeDonnees.Cells(Lig, Col).Value
   If Col < NbrDeCol Then LigneCSV = LigneCSV & ";"
  Next Col
  Print #1, LigneCSV: LigneCSV = ""
Next Lig

Close #1
End Sub
 

Tpk211

XLDnaute Nouveau
Re : Exporter des lignes d'un classeur vers des fichiers csv

Bonjour Soir,
Ca fonctionne presque, mais ca me genere un fichier CSV incluant les lignes de 1 a 10 si je mets le critere AdresDesDonnees$ = "A1:C10" par exemple
Mais comment faire pour que cela me créé 10 fichiers csv avec 1 ligne a chaque fois :)?

Th

bonsoir,

voir avec ce genre de routine simple mais efficace !

adapter les lignes <<<<<<<<<<<<<<<<<<<

Code:
Sub ExportDonneesFichCSV()
Dim RangeDonnees As Range, LigneCSV$, NomDeLaFeuille$, AdresDesDonnees$
Dim Chemin$, NomDuFichier$
Dim Lig%, Col%, NbrDeLig%, NbrDeCol%
NomDeLaFeuille$ = "Feuil1" '<<<<<<<<<<<<<<<<<<<<<<
AdresDesDonnees$ = "A1:C10" '<<<<<<<<<<<<<<<<<<<<<<
Chemin$ = "C:\dossier" '<<<<<<<<<<<<<<<
NomDuFichier$ = "Fichier.csv" '<<<<<<<<<<<<<<<<<

'Plage de données
Set RangeDonnees = Worksheets(NomDeLaFeuille$).Range(AdresDesDonnees$)
NbrDeLig = RangeDonnees.Rows.Count
NbrDeCol = RangeDonnees.Columns.Count

'Open fichier csv sauvegarde
Open Chemin$ & "\" & NomDuFichier$ For Output As #1
For Lig = 1 To NbrDeLig
  For Col = 1 To NbrDeCol
   LigneCSV = LigneCSV & RangeDonnees.Cells(Lig, Col).Value
   If Col < NbrDeCol Then LigneCSV = LigneCSV & ";"
  Next Col
  Print #1, LigneCSV: LigneCSV = ""
Next Lig

Close #1
End Sub
 

Roland_M

XLDnaute Barbatruc
Re : Exporter des lignes d'un classeur vers des fichiers csv

bonjour,

Ca fonctionne presque, mais ca me genere un fichier CSV incluant les lignes de 1 a 10 si je mets le critere AdresDesDonnees$ = "A1:C10" par exemple

mais mon ami ce sont des exemples !?! je t'ai dis d'adapter les lignes avec ceci <<<<<<<<<<<<<<<<
il te faut mettre tes propres valeurs, chemin ...
on ne prend pas une macro et l'exécuter telle quelle !!!

ensuite:
Mais comment faire pour que cela me créé 10 fichiers csv avec 1 ligne a chaque fois ?

que veux tu que l'on devine dans cette question ?
tu ne donnes aucun renseignement pour que l'on puisse t'aider !?
pas de nom de feuille
pas de champ de données
pas de chemin de destination
pas de nom de fichier
...

en l'état, je peux simplement te répondre que oui on peut !
on boucle sur les lignes avec un fichier csv à chaque fois.

sans classeur et plus de détails c'est pas facile !
on ne peut pas faire grand chose avec seulement tes explications à ton Post#1
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Exporter des lignes d'un classeur vers des fichiers csv

re

bon, comme je suis une bonne âme,
voir cet exemple simple qui pourrait répondre à tes attentes !?
voir le fichier ci-joint tout prêt qui contient cette macro avec infos
et le bouton sur la feuille où tu mettras tes données.
MAIS n'oublies pas de mettre le chemin de destination !?

Code:
'en simplifiant un maximun:
'appel depuis la feuille active
'ceci en supposant que les données démarrent en ligne(1) colonne(A)
'sinon modifier le no de lig ici> AdresDesDonnees$ = Cells(1, 1).CurrentRegion.Address
'les fichiers seront nommés: FichCSVno.csv
'
'>>>>> IL TE RESTE A METTRE LE CHEMIN !!!!
'
Sub ExportDonneesFichCSV()
Dim RangeDonnees As Range, LigneCSV$, AdresDesDonnees$
Dim Chemin$, Fichier$
Dim Lig%, Col%, NbrDeLig%, NbrDeCol%

Chemin$ = "C:\NomDeTonDossier" '<<<< ICI METTRE LE CHEMIN DE DESTINATION <<<<<
AdresDesDonnees$ = Cells(1, 1).CurrentRegion.Address '<<<<<< Plage de données


'boucle save fichier csv
If Right(Chemin$, 1) <> "\" Then Chemin$ = Chemin$ & "\"
Set RangeDonnees = ActiveSheet.Range(AdresDesDonnees$)
NbrDeLig = RangeDonnees.Rows.Count
NbrDeCol = RangeDonnees.Columns.Count
For Lig = 1 To NbrDeLig
  LigneCSV = "" 'lecture des données en colonne
  For Col = 1 To NbrDeCol
    LigneCSV = LigneCSV & RangeDonnees.Cells(Lig, Col).Value
    If Col < NbrDeCol Then LigneCSV = LigneCSV & ";"
  Next Col
  Fichier$ = "FichCSV" & Lig & ".CSV" 'nom du fichier incrémenté
  Open Chemin$ & Fichier$ For Output As #1
  Print #1, LigneCSV: LigneCSV = ""
  Close #1
Next Lig
End Sub
 

Pièces jointes

  • SvgFichierCSV.xlsm
    16.5 KB · Affichages: 32
Dernière édition:

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa