Comment exporter en CSV plusieurs feuilles ? (multiples variables)

Bonjour à tous et merci énormément aux différents contributeurs qui m’ont permis d’apprendre le VBA comme un grand !! Autant je commence à piger et ne me débrouille pas trop mal, autant un peu d’aide serait la bienvenue pour un projet.

Aujourd’hui c’est mon premier post : avis aux amateurs de VBA !

Je m’explique ; J’ai besoin de créer une macro qui me permettra d’obtenir un CSV à partir de plusieurs classeurs Excel. (pour import BDD)

Les différents classeurs en questions contiennent notamment la feuille « CATALOGUE PERSO » qui nous intéresse et se trouvent en :

C:\maboite\GRC\CLIENTS\"code client"\FC "code client".xlsm

Chaque feuille « CATALOGUE PERSO » contient un UID unique en cellule E4 propre à son code client

Aucune autre information ne m’intéresse avant la ligne 9

En colonne A j’ai des références, en colonne B j’ai des dénominations, en colonne C j’ai des conditionnements de vente, et en D j’ai des prix HT

Chaque catalogue a une longueur variable mais il y a une ligne vide à la fin de chaque catalogue. (Ce qui permet au VBA de savoir qu’il a fini pour ce catalogue et qu’il doit passer au suivant).

J’ai donc besoin d’une superbe macro qui me créer un CSV( ; ) avec :

En colonne A les références, en colonne B les dénominations, en colonne C les conditionnements de vente, en colonne D les prix HT et en E les IUD de chacune des feuilles « CATALOGUE PERSO » de chacun de mes clients.

Je souhaite exécuter cette macro depuis un classeur qui se trouve en :

C:\maboite\GRC\SUIVI ACTIVITE.xlsm

et qui contient une plage avec mes différents codes client. (Ce qui permet en VBA de trouver le chemin des fiches clients et d’ouvrir les bons Excel)

orga serveur

J’imagine que ce n’est pas super clair donc je vous joints 2 fichiers (dont j’ai bien évidemment enlevé les macros et infos sensibles) afin de vous éclairer, vous les braves Exceleurs qui allez me prêter main forte !

Je reste disponible, n’hésitez pas à me poser des questions si cela peut vous aider.

Je suis sur Lyon, je paye un coup à boire avec plaisir à ceux qui arriveront à bout de ce casse-tête et qui ne sont pas trop loin

Amicalement,

Balek

45fc-client1.xlsm (222.53 Ko)

Bonjour

Voici le fichier SUIVI ACTIVITES modifié

75suivi-activite.xlsm (19.91 Ko)

Espérons que j'ai bien compris la demande. Sinon, vous pouvez peut-être adapter à partir de cette base

A +

Merci beaucoup pour cette réponse.

il manquait un "\" mais maintenant ça marche presque:

Déja, je souhaiterais créer un CSV unique, or avec ta solution je créer autant de CSV que j'ai de clients.

Aussi, ça n'exporte que la ligne 9... les autres lignes ne sont pas exportées.

Merci de m'aider a régler ces soucis

Il faudrait réussir a définir le fintab pour chaque catalogue.

Dernière chose, je souhaite que les fiches clients soient fermées sans sauvegarder. (je sais pas ou mettre le SaveChanges:=False)

Merci par avance,

Balek

Bonsoir

un essai sur la base que Patty a fourni....

Fermeture du fichier sans enregistrement

parcourt toutes les lignes

et met le tout dans un seul fichier....

Fred

31suivi-activite.xlsm (18.50 Ko)

Merci Fred, j'en suis la :

Sub creer_CSV()

Dim ecri As String

dlig = Range("A" & Rows.Count).End(xlUp).Row

If MsgBox("Tu veux un export CSV, T'es sur ?!", vbYesNo, "Confirmation") = vbYes Then

For i = 5 To dlig

CodeCli = Cells(i, 1).Value

Chemin = ActiveWorkbook.Path & "\CLIENTS\" & CodeCli & "\"

Workbooks.Open Filename:=Chemin & "FC " & CodeCli & ".xlsm"

Worksheets("CATALOGUE PERSO").Select

Set ws = Sheets("CATALOGUE PERSO")

fintab = ws.Range("A:A").Find(What:="*", LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

Open Chemin & "\" & CodeCli & ".csv" For Output As #1

For j = 9 To fintab

ecri = ws.Cells(j, 1).Value & ";" & ws.Cells(j, 2).Value & ";" & ws.Cells(j, 3).Value & ";" & ws.Cells(j, 4).Value & ";" & ws.Cells(4, 5).Value

Print #1, ecri

Next j

Close

CloseClasseur (Chemin & "FC " & CodeCli & ".xlsm")

Next

MsgBox "Export CSV OK "

End If

End Sub

Sub CloseClasseur(Classeur As String)

Dim Wbk As Excel.Workbook

For Each Wbk In Excel.Workbooks

If UCase(Wbk.Path & "\" & Wbk.Name) = UCase(Classeur) Then

Wbk.Close False

End If

Next

End Sub]

Tout est impec ! Le seul gros hic est que ça me créer toujours un CSV par client dans chaque dossier client... Or, j'ai vraiment besoin de créer un unique CSV dans le dossier parent avec tout les exports a la suite.

Merci par avance !

Bonsoir

Essaie peut-être cela, mais pas testé . Trop tard pour ce soir

Sub creer_CSV()
Dim ecri As String
dlig = Range("A" & Rows.Count).End(xlUp).Row
chemin = ActiveWorkbook.Path & "\CLIENTS\"
Open chemin & "\Clients.csv" For Output As #1
For i = 5 To dlig
    Nomcli = Cells(i, 1).Value
    Workbooks.Open Filename:=chemin & "FC " & Nomcli & ".xlsm"
    Worksheets("CATALOGUE PERSO").Select
    Set ws = Sheets("CATALOGUE PERSO")
    fintab = ws.Range("A:A").Find(What:="*", LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    For j = 9 To fintab
        ecri = Nomcli & ";" & ws.Cells(j, 1).Value & ";" & ws.Cells(j, 2).Value & ";" & ws.Cells(j, 3).Value _
        & ";" & ws.Cells(j, 4).Value & ";" & ws.Cells(4, 5).Value
        Print #1, ecri
    Next j
    CloseClasseur (chemin & "FC " & Nomcli & ".xlsm")
Next
Close
End Sub

Sinon , je revois demain

A+

Merci Patty mais ça ne marche pas, j'ai même essayé de trifouiller un peu mais en vain..

J'attends de tes nouvelles demain alors

Bonne soirée.

Balek

Bonjour

Je suis allée un peu vite hier.

Est-ce que cela va mieux ??

J'ai rajouté le nom du client en première position et un titre.

Tu peux arranger ensuite cela comme tu veux

Dis-moi

A+

Bonjour Patty,

il y avait quelques erreurs mais j'ai compris ton code et j'ai modifié un peu.

Merci beaucoup !!! Ca marche impec maintenant.

Bon week end !

Balek

Bonjour

Enchantée pour toi

Je ne pouvais pas tester correctement n'ayant pas les mêmes chemins et les mêmes données, donc ce qui est bien , c'est que tu t'y sois retrouvé

Je suis sur Lyon, je paye un coup à boire

Quand je passerai par là, je te ferai signe LOL

Bonne continuation

Quand je passerai par là, je te ferai signe LOL

Ah mais carrément !! Ce sera un plaisir je suis sérieux

Bye

Rechercher des sujets similaires à "comment exporter csv feuilles multiples variables"