XL 2013 générer un fichier csv par lignes de tableau

Seb_ABZ

XLDnaute Nouveau
Bonjour à tous

avant de partir en weekend, j'aurais un petit service à vous demander pour me faciliter la vie.

Ma société utilise un logiciel de gestion de matériel, et aujourd'hui quand un chantier débute et que nous recevons du nouveau matériel, tout est rentré à la main dans le logiciel.
Cette procédure fonctionne quand on a quelques fiches à faire, mais dans mon cas, j'en aurais plusieurs centaines.
Cependant ce logiciel propose une fonction d'importation, mais qui reste contraigante car il faut créer une fiche csv par equipement.
C'est là que j'ai besoin de vos lumières :)

Généralement je recois une liste d'équipements avec toutes les infos nécessaire au format excel. Et j'aimerai une macro pour qu'automatiquement excel me gere un fichier csv pour chaque ligne du tableau.

Mon tableau ressemble à ça (chaque "/" sépare une colonne)
Ref / Description / Fabricant / Type / Chemin dossier
01 / Grue / Liebherr / C100 / C:\01 Grue
02 / Pompe / Bosch / P100 / C:\02 Pompe

et chaque fiche devra ressembler à ça
Ref / 01
Description / Grue
Fabricant / Liebherr
Type / C100

A noter que chaque fichier csv aura le même nom "fiche_bien.csv" mais sera sauvegardé dans un fichier différent selon la colonne "Chemin dossier".

Merci par avance pour votre aide

Seb
 

Seb_ABZ

XLDnaute Nouveau
Re : générer un fichier csv par lignes de tableau

Salut Lonewolf,

je me ferai un plaisir de te faciliter la vie ;)

Je t'envoie un dossier avec un exemple d'à quoi ça devrait ressembler au final, une fois que vous aurez excercé votre amgie...:cool:

Merci
 

Pièces jointes

  • C.zip
    6.9 KB · Affichages: 18
  • C.zip
    6.9 KB · Affichages: 24

Efgé

XLDnaute Barbatruc
Re : générer un fichier csv par lignes de tableau

Bonjour Seb_ABZ, Lone-wolf
Comme j'étais parti, je livre... :D

VB:
Sub ExportCSV()
Dim i&, Num&
Dim TData As Variant
Dim Chem$, Fic$, TmpTxtRw$, Separ$


Separ = ";"
Fic = "fiche_bien.csv" 'A adapter


With Feuil1 'A adapter
    TData = .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(3).Row, 5))
End With


For i = 2 To UBound(TData, 1)
    Num = FreeFile
    Chem = Trim(TData(i, 5))
    
    TmpTxtRw = _
    Trim(TData(1, 1)) & Separ & CStr(Trim(TData(i, 1))) & vbNewLine & _
    Trim(TData(1, 2)) & Separ & Trim(TData(i, 2)) & vbNewLine & _
    Trim(TData(1, 3)) & Separ & Trim(TData(i, 3)) & vbNewLine & _
    Trim(TData(1, 4)) & Separ & Trim(TData(i, 4))
    
    If Dir(Chem, vbDirectory) = "" Then MkDir Chem
    Open Chem & "\" & Fic For Output As #Num
    Print #Num, TmpTxtRw
    Close Num
Next i
End Sub
Cordialement
 
Dernière édition:

Seb_ABZ

XLDnaute Nouveau
Re : générer un fichier csv par lignes de tableau

ah ouais quand même. Super efficace Efgé!!!!
Merci beaucoup ça marche nickel et ça crée même les dossiers, tu me gâtes là (j'avais trouvé un autre script pour ça).
Je vais bidouiller et voir si ça marche avec une structure plus compliquée (en fait j'aurais plusieurs niveaux de dossiers).

D'ailleurs si je veux utiliser une structure existante de dossiers au lieu de la créer, quelle commande faut-il utiliser stp?

Merci d'avance
 

Seb_ABZ

XLDnaute Nouveau
Re : générer un fichier csv par lignes de tableau

Bonjour Efgé,

excuse moi pour la réponse tardive. En fait je n'ai pas d'arborescence particulière, mais imaginons qu'elle existe deja. Et que la colonne "Chemin dossier", indique l'endroit où il faut créer le fichier csv. Que modifierais-tu dans ton script pour y parvenir

Passe un bon weekend.

Seb
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 841
dernier inscrit
ferid87