Macro - créer un CSV à partir de certaines lignes d'un XLTM

Bonjour à tous,

Après presqu'une après midi à tâtonner pour faire fonctionner des macros ou morceaux de macros trouver sur des forums sans comprendre tous ce que je faisais et surtout sans arriver à mes fins… Je viens demander du secours.

Je cherche à créer un bouton sur mon fichier Modèle Excel .XLTM qui automatise l'export au format CSV point virgule :

* Les lignes sans quantité (ou 0) dans la colonne B et la ligne des entêtes ne doivent pas apparaitre dans le CSV créé.

* Préférence facultative :

- la destination du fichier créé sera le dossier où est enregistré le XLTM

- le nom du fichier sera "BOULONNERIE GRANIT" suivi de la date du jour

Ci joint le fichier XLSM.

Exemple de ma requête :

* données de départ :

Nr. Comm.Nb de boitedesi / type / qte par boite
4879330112VIS TH 933 8.8 ZI 6X20/Filet total/200
4879331240VIS TH 933 8.8 ZI 6X30/Filet total/200
487931207VIS TH 931 8.8 ZI 6X40/Filet partiel/200
48793120910VIS TH 931 8.8 ZI 6X50/Filet partiel/200
4879331330VIS TH 933 8.8 ZI 8X16/Filet total/200
4879330228VIS TH 933 8.8 ZI 8X20/Filet total/200

* CSV voulu :

487933011;2;VIS TH 933 8.8 ZI 6X20/Filet total/200

487931209;10;VIS TH 931 8.8 ZI 6X50/Filet partiel/200

48793302;8;VIS TH 933 8.8 ZI 8X20/Filet total/200

Avec mes essais, j'avais réussi

- un fichier qui enregistre en CSV mais sans filtrer les lignes

- un fichier qui me supprime les lignes à 0 mais pas les vides et l'entête

- sur d'autres, mon fichier se trouvait écrasé et n'était pas réutilisable..

Bref, est-ce que mon but est atteignable ?

J'espère être compréhensible. Par avance, merci !

Hello,

qqch comme ceci ( il y a peut être 2-3 choses à adapter):

Sub export_csv()

    ' -- Ajoute feuille pour export csv
    Sheets.Add(after:=Sheets(Sheets.Count)).Name = "pour_csv"
    ' -- Ajoute filtre  sur les en tetes
    Sheets("BOULONNERIE 8.8").Activate
    Range("A1").AutoFilter
    ' -- Filtre la table sur les differents de 0 et vide
    Range("$A$1:$C$100002").AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd, Criteria2:="<>"
    ' -- Copie la tableau filtrée
    Range("A1").CurrentRegion.Copy
    Sheets("pour_csv").Paste
    Application.CutCopyMode = False
    ' -- Supprime la feuille des données
    Sheets("BOULONNERIE 8.8").Delete
    ' -- Sauvegarde en csv
    ActiveWorkbook.SaveAs Filename:="C:\Users\toto\fichier-commande-boulon-granit2.csv", FileFormat:=xlCSV, CreateBackup:=False, Local:=True

End Sub

Merci pour ton aide !

Sur ta base j'ai ajusté 2 bricoles :

- suppression de la ligne des entêtes

- enregistrement du fichier dans le dossier source + la date dans le nom

Si ça peux aider quelqu'un d'autre, voila le code que j'utilise:

Sub export_csv()

    ' -- Ajoute feuille pour export csv
    Sheets.Add(after:=Sheets(Sheets.Count)).Name = "pour_csv"
    ' -- Ajoute filtre  sur les en tetes
    Sheets("BOULONNERIE 8.8").Activate
    Range("A1").AutoFilter
    ' -- Filtre la table sur les differents de 0 et vide
    Range("$A$1:$C$100002").AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd, Criteria2:="<>"
    ' -- Copie la tableau filtrée
    Range("A1").CurrentRegion.Copy
    Sheets("pour_csv").Paste
    Application.CutCopyMode = False
    ' -- Supprime la feuille des données
    Sheets("BOULONNERIE 8.8").Delete
    ' -- suppri ligne 1
    Rows("1:1").Select
    Selection.Delete Shift:=xlUp
    ' -- Sauvegarde en csv dans le dossier du fichier source !ne fonctionne pas si le fichier est un modèle (sauf si on enregistre)
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\commande boulons Granit du " & Format(Now(), "dd mm yyyy - hh mm") & ".csv", FileFormat:=xlCSV, CreateBackup:=False, Local:=True

End Sub

Encore merci

Rechercher des sujets similaires à "macro creer csv partir certaines lignes xltm"