VBA Excel: Ajout de données dans un fichier .csv
Fermé
Aurélia
-
22 mars 2014 à 14:35
f894009 Messages postés 17268 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 29 mars 2025 - 22 mars 2014 à 17:26
f894009 Messages postés 17268 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 29 mars 2025 - 22 mars 2014 à 17:26
Bonjour,
Je dispose de fichiers au format .csv que j'ouvre avec Excel 2010 et qui s'affichent correctement, sans que les séparateurs n'apparaissent.
Tels qu'ils s'affichent dans Excel, j'aimerais, par une macro, pouvoir:
- insérer une colonne en D,
- l'intituler "Traitement" en D5,
- de D6 à la dernière ligne du tableau (nombre de lignes variable), coller la valeur contenue en B1.
Et ce, sans modifier l'extension du fichier (je parviens à le faire sur un fichier .xlsx mais pas sur un .csv); est-ce réalisable?
Je vous en remercie par avance!
Je dispose de fichiers au format .csv que j'ouvre avec Excel 2010 et qui s'affichent correctement, sans que les séparateurs n'apparaissent.
Tels qu'ils s'affichent dans Excel, j'aimerais, par une macro, pouvoir:
- insérer une colonne en D,
- l'intituler "Traitement" en D5,
- de D6 à la dernière ligne du tableau (nombre de lignes variable), coller la valeur contenue en B1.
Et ce, sans modifier l'extension du fichier (je parviens à le faire sur un fichier .xlsx mais pas sur un .csv); est-ce réalisable?
Je vous en remercie par avance!
1 réponse
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
1 713
22 mars 2014 à 15:37
22 mars 2014 à 15:37
Bonjour,
un exemple:
un exemple:
'votre code ouverture
'
Fichier = ActiveWorkbook.Name
Windows(Fichier).Activate
'derniere cellule non vide colonne A
derlig = Range("A" & Rows.Count).End(xlUp).Row
'insere colonne D
Columns("D:D").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D5").FormulaLocal = "Traitement"
'copie B1
Range("B1").Copy Range("D6:D" & derlig)
'sauvegarde csv
ActiveWorkbook.SaveAs Filename:="c:\DATA.csv", Local:=True
ActiveWorkbook.Close
22 mars 2014 à 16:19
Merci pour le code. En l'exécutant, la partie "Fichier = " sur la ligne 3 ressort en erreur avec le message "variable non définie".
De plus, en le lisant, je m'aperçois que j'ai manqué de précision dans ma demande: j'aimerais en effet pouvoir lancer la macro sans avoir à ouvrir les fichiers .csv qui se situent dans le même répertoire. Le code s'exécutera donc sur un fichier "texte" qui, me semble-t-il, ne devrait pas reconnaître les références de cellules: "B1", Columns("D:D"); mais je peux me tromper...
Merci d'avance!
22 mars 2014 à 16:35
comme indique, "variable non définie" c'est que la variable fichier est non declaree
je m'aperçois que j'ai manqué de précision dans ma demande Oui
code s'exécutera donc sur un fichier "texte" Pas forcement, parce que la ce sera un peu capilotracte
22 mars 2014 à 16:49
Merci pour les réponses.
Comment dois-je déclarer la variable fichier?
Merci
22 mars 2014 à 17:11
Dim Fichier tout simplement !!!!!
22 mars 2014 à 17:16
Merci bcp!
Autre petite question: quelle modification apporter au code pour que le fichier reprenne son nom et son emplacement d'origine à l'enregistrement sans avoir à les préciser à chaque fois, et non "Data.csv"?
Merci encore