Macro conversion colomne fichier CSV

Novice avance !?

XLDnaute Occasionnel
bonjour,

je rencontre un problème au niveau de la fonction convertir d'excel sur un fichier csv.

on part du principe que le fichier csv (pièce jointe) est ouvert et que la macro suivante est lancée à partir d'un autre fichier contenant toutes mes différentes macros.

De base la 1ère colomne contient toutes les informations avec comme séparteur la virgule et donc ma macro doit répartir chacune des informations séparemment dans les colonnes correspondantes.

Sauf que rien ne s'est passé une fois que la macro a "fait" son travail et que l'on réouvre le fichier.

Pourriez-vous m'aider ? svp
merci
Code:
Sub Conversion_Column()
Application.DisplayAlerts = False
Columns(1).Select
Selection.TextToColumns Destination:=Cells(1, 1), DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
chemin = "C:\DIVERS\"
    ActiveWorkbook.SaveAs Filename:= _
            chemin & "ligne 19.csv", _
          FileFormat:=xlCSV, CreateBackup:=False, Local:=False
          DoEvents
    ActiveWorkbook.Save
   
    ActiveWorkbook.Close savechanges:=False
 
 Application.DisplayAlerts = True
 
End Sub
 

Pièces jointes

  • ligne19.zip
    572 bytes · Affichages: 29

Novice avance !?

XLDnaute Occasionnel
Re : Macro conversion colomne fichier CSV

le fichier ligne19.csv est à la base un nouveau fichier .xls vierge ouvert via une macro qui alimente également ce fichier et l'enregistrement se fait par ce code:

Code:
chemin = "C:\DIVERS\"
ActiveWorkbook.SaveAs Filename:= _
chemin & "\ligne19.csv", _
FileFormat:=xlCSV, CreateBackup:=False, Local:=False
DoEvents
ActiveWorkbook.Save

ActiveWorkbook.Close savechanges:=True
 

Novice avance !?

XLDnaute Occasionnel
Re : Macro conversion colomne fichier CSV

ok bien compris mais lorsque j'ouvre à nouveau ce fichier csv et que tout est concaténé dans la 1ère colonne séparé par des virgules et que je convertit manuellement cette colonne puis j'enregistre à nouveau le fichier en csv manuellement...le fichier conserve son nouveau format avec des données dans chacunes des colonnes.

donc manuellement ok ça marche
alors pourquoi par code vba ça ne marcherait pas !?

Via mon fichier perso.xls où sont stockées mes macros j'appelle ce fichier csv, j'y applique la conversion de la colonne et je réenregistre ce fichier dans son format orginel .csv

en le faisant pas à pas avec la touche F8 on voit bien le fichier se formater correctement, s'enregistrer et se fermer.
et pourtant en réouvrant le fichier tout est concaténé à nouveau dans la 1ère colonne.

ok c'est un fichier csv mais pourquoi cette macro ne pourrait pas faire ce qu'il est possible de faire manuellement ?

merci
bonne soirée
 

Mytå

XLDnaute Occasionnel
Re : Macro conversion colomne fichier CSV

Re le forum

Essaye avec le code suivant :
- Propriété Local à True (Local:=True)
- ActiveWorkbook.Save mis en commentaire
Code:
Sub Conversion_Column()
    Application.DisplayAlerts = False
    Columns(1).TextToColumns Destination:=Cells(1, 1), _
                             DataType:=xlDelimited, _
                             TextQualifier:=xlNone, _
                             ConsecutiveDelimiter:=False, _
                             Tab:=False, _
                             Semicolon:=False, _
                             Comma:=True, _
                             Space:=False, _
                             Other:=False, _
                             FieldInfo:=Array(1, 1), _
                             TrailingMinusNumbers:=True
    chemin = "C:\DIVERS\"
    ActiveWorkbook.SaveAs Filename:= _
                          chemin & "ligne 19.csv", _
                          FileFormat:=xlCSV, _
                          CreateBackup:=False, _
                          Local:=True
    DoEvents
    'ActiveWorkbook.Save
    ActiveWorkbook.Close savechanges:=False
    Application.DisplayAlerts = True
End Sub
Mytå
 
Dernière édition:
Haut Bas