Exporter simplement une feuille en CSV (sép. ;)

Bonjour à tous;

Je parcours votre forum depuis de nombreux mois, mais cette fois-ci, je n'y ai pas trouvé la réponse.

Voici mon problème:

Je possède un fichier Excel composé de plusieurs feuilles.

Une macro me permet de parcourir un tableau gigantesque puis de tirer une feuille "Exploitation" avec des données dedans.

Dans l'objectif de lire ces données via PHP dans un site Web, je souhaiterais qu'à la fin de ma macro, je lui dise d'exporter cette feuille "Exploitation" au format CSV avec un séparateur de type point virgule.

L'astuce de la fonction "Enregistrer Sous..." ne me plaît pas trop, surtout qu'Excel me pose un tas de questions et qu'a la fin, mon fichier XLS est au format CSV, et je ne peux donc continuer à travailler dessus. (Je sais qu'il est peut être possible de les éviter via la ligne "Application.DisplayAlerts = False/True"

Je m'interpellais sur le fait qu'il existait peut être une fonction dans VBA permettant de faire ceci rapidement.

J'appel à votre aide.

Bien Cordialement

Bonjour,

Voici une petite macro qui te permettra de faire ça facilement :

Sub RegCSV()
Dim Plage As Object, oL As Object, oC As Object, Tmp As String, Sep$
Sep = ";"
Set Plage = ActiveSheet.Range("A1:AJ" & ActiveSheet.Range("A65000").End(3).Row)
Open "NomEtCheminFichier.csv" For Output As #1
For Each oL In Plage.Rows
Tmp = ""
For Each oC In oL.Cells
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Print #1, Tmp
Next
Close
End Sub

YAPUKA ajuster un peu le code à tes conditions particulières :

dans mon exemple la base de données se situe dans les colonnes A1 à J et la colonne index est en colonne A

Si ta plage de cellule est la plage B5 à AH2600 et la plage index est la colonne B on écrirait :

Set Plage = ActiveSheet.Range("B5:AH" & ActiveSheet.Range("B65000").End(3).Row)

Remplacer également :

"NomEtCheminFichier.csv" par le nom (et chemein éventuel) du fichier à créer.

Nota : Si le fichier n'existe pas il est créé, sinon la procédure écrase le fichier précédent;

A+

Bonjour,

j'ai en effet apporté quelques modifications concernant les plages de cellules.

Au final, cela ressemble à ça:

Sub Fct_Export_CSV()
chemincsv = Range("Paramètres!D58").Value
Worksheets("Exploitation").Select
Dim Plage As Object, oL As Object, oC As Object, Tmp As String, Sep$
Sep = ";"
Set Plage = ActiveSheet.Range("A1:F" & ActiveSheet.Range("A65000").End(3).Row)
Open chemincsv For Output As #1
For Each oL In Plage.Rows
Tmp = ""
For Each oC In oL.Cells
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Print #1, Tmp
Next
Close
End Sub

Et cela fonctionne à merveille.

J'annote le fichier en [Résolu].

Merci pour ton aide.

Bonjour,

Merci pour ce code déjà.

Comment est il possible d'extraire le fichier CSV et de lui donner le nom de l'onglet actif (ActiveSheet.Name) ?

Merci

Rechercher des sujets similaires à "exporter simplement feuille csv sep"