Exporter des données d'un fichier .xlsm vers un fichier .csv via une macro VBA

Signaler
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Bonjour

mon problème consiste à copier une ligne (à partir d'un fichier .xlsm) et la coller dans un fichier .csv avec comme séparateurs bien sur ";"

le problème c pas dans le faite que j'obtiens des séparateurs "," mais qu'il m'endommage la dernière colonne genre tous les chiffre comme 785413 il les transforment en 78,,,,,

en faite j'ai crée ce code mais le fichier :

Sub Macro3()

Application.ScreenUpdating = False
Rep = "C:\Users\toshiba\Desktop\Others"
FichD = ActiveWorkbook.Name
FichTest = "TestExcel.csv"


Workbooks.OpenText Filename:="C:\Users\toshiba\Desktop\Others\TestExcel.csv", StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlNone, ConsecutiveDelimiter _
:=False, Semicolon:=True, DecimalSeparator:="."

Workbooks.Open Rep & FichTest
Rows("1:1").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

With Workbooks(FichD)
.Sheets("TestExcel").Range("A1:F1").Copy
Workbooks(FichTest).Sheets("TestExcel").Range("A1:G1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1:F1").Select
Selection.Copy
Range("A1:F1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A2:F2").Select
Application.CutCopyMode = False
Selection.Copy
Range("A1:F1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWorkbook.Save
ActiveWindow.Close

End With
End Sub

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut

Prends l'habitude d'utiliser la coloration syntaxique quand tu colles du code = 3ème icone à droite. Cela le rends beaucoup plus lisible et cela conserve les indentations (espaces en tête de ligne).

Concernant les fichiers CSV, le plus simple est de laisser faire Excel et d'utiliser le "Enregistrer sous" au format CSV.
L'inconvénient, c'est qu'un fichier CSV ainsi créé correspond à une feuille entière ET unique.
Puisque tu ne veux placer dans ce fichier CSV uniquement certaines lignes, le plus simple est de fabriquer une nouvelle feuille (pourquoi pas dans un nouveau classeur), d'y placer les données qui t'intéressent, puis de générer le fichier CSV par le menu "Enregistrer sous".
Tu seras ainsi certain de la compatibilité.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
Bonjour Jack

ok pour le code mais je n'ai pas bien sais ou se trouve la 3ème icone à droite

en ce qui concerne mon besoin:
d'incrémenter d'une ligne chaque jour chaque fichier.csv à partir d'un fichier principal qui contient un tableau principal


>Votre idée est géniale mais je dois avoir une fonctionnalité qui me permet d'écraser les fichiers anciens (j-1) et transformer chaque chaque fichier presque 50 fichier .xls en fichier .csv avec séparateur ";", ceci à travers une macro qui contient tout ca, c'est possible ?

Trader ;)
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Tu écris ceci
.Sheets("TestExcel").Range("A1:F1").Copy
Workbooks(FichTest).Sheets("TestExcel").Range("A1:G1").Select

Pourquoi A1:G1 plutôt que A1:F1 ou encore plus simple A1 ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI