IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ajout de colonne dans fichiers csv


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Ajout de colonne dans fichiers csv
    Bonjour les amis,

    J'ai pratiquement le même besoin que dans cette discussion.. Mais malheureusement (et honte à moi) je ne parviens pas à adapter la macro..

    En fait je voudrai moi aussi ajouter une colonne à des fichiers se trouvant dans un dossier pour y mettre le nom du fichier.
    Par contre mes fichiers sont en csv et lorsque je les enregistre .. il me demande par deux fois de valider l'enregistrement... et le résultat obtenu est très bizarre (il remplace les "," par des ";")...


    Pourriez vous m'aider svp? il est trois heures du mat et j'ai envie de jeter mon pc par la fenêtre... au secours!!!

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, à vue de nez car pas testé, entoure la sauvegarde par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.DisplayAlerts = False
    '.....
    Application.DisplayAlerts = True
    Dans la ligne de sauvegarde, si ton séparateur csv est la virgule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...SaveAs  FileFormat:=xlCSV, Local:=False
    D'autre part les fichiers csv n'ayant qu'une feuille remplacer Ws par Worksheets (1) et supprimer la boucle For Each Ws .....

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Merci Kiki29

    J'ai effectuer les modifications et je rencontre deux erreurs:

    Pour "Aplication.DisplayAlerts = False" il me dit que la variable n'existe pas
    et lorsque je mets cette instruction en commentaire il me met une erreur 1004 qui dit que le fichier (et il cite le nom du fichier) n'existe pas....
    Tu aurais une idée du soucis stp?

    (je te joins le code, je suis sur excel 2010)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     
    Option Explicit
     
    Public Sub RajouterColonne()
     
        Dim nomFichier As String
        Dim wb As Workbook
        Dim ws As Worksheet
        Dim i As Integer
     
     
     
        'On recherche le premier fichier xlsx
        nomFichier = Dir("C:\Users\djamel\Desktop\Union\*.csv")
     
        Do While nomFichier <> "" 'Pour tous les fichiers
     
            Set wb = Workbooks.Open(nomFichier) 'On ouvre le classeur
     
     
                Worksheets(1).Columns("A:A").Insert Shift:=xlToRight
     
                i = 1
                Do While ws.Cells(i, "B").Value <> "" 'Tant que la colonne B n'est pas vide
                    ws.Cells(i, "A").Value = nomFichier 'Ou nomFichier si tu veux le chemin complet
                    i = i + 1 'Ligne suivante
                Loop
     
     
      Aplication.DisplayAlerts = False
            wb.SaveAs FileFormat:=xlCSV, Local:=False  'On sauve le classeur
            wb.Close 'On le ferme
     Aplication.DisplayAlerts = True
            nomFichier = Dir 'Fichier xlsx suivant
     
        Loop
     
     
    End Sub

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, "bestial" donc surement à adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Option Explicit
     
    Sub AjoutColonne()
    Dim sFichier As String
        sFichier = Dir$(ThisWorkbook.Path & "\*.csv")
        Do While Len(sFichier) > 0
            SaveCsv sFichier
            sFichier = Dir$
        Loop
    End Sub
     
    Private Sub SaveCsv(ByVal sNomFichier As String)
    Dim sChaine As String
    Dim iNumFichier1 As Integer, iNumFichier2 As Integer
    Dim Sep As String * 1
    Dim sOut As String
     
        Close
        Sep = ";"
     
        iNumFichier1 = FreeFile
        sOut = ThisWorkbook.Path & "\" & "Tempo.csv"
        Open sNomFichier For Input As #iNumFichier1
            iNumFichier2 = FreeFile
            Open sOut For Output As #iNumFichier2
                Do While Not EOF(iNumFichier1)
                    Line Input #iNumFichier1, sChaine
                    sChaine = "zzzz" & Sep & sChaine
                    Print #iNumFichier2, sChaine
                Loop
            Close #iNumFichier2
        Close #iNumFichier1
     
        Kill sNomFichier
        Name sOut As ThisWorkbook.Path & "\" & sNomFichier
    End Sub

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Merci Kiki29

    il me met une erreur 59 avec comme commentaire "fichier introuvable"

    le programme s'arrète sur cette ligne:

    Open sNomFichier For Input As #iNumFichier1
    (et le plus bizarre c'est que lorsque je pointe le curseur sur sNomfichier il m'indique le nom d'un fichier présent dans le dossier)

    Une idée stp?

  6. #6
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, l'erreur 59 correspond à une Longueur d'enregistrement incorrecte ( Extrait de l'Aide en ligne ) .....
    Je serais curieux de voir un de tes fichiers csv, j'ose espérer que tu as testé ce code sur des fichiers de test ? Curieux de savoir ce que tu as pu faire du code ?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Re l'ami

    Je te joins une copie d'un fichier csv...

    Par contre je n'ai pas compris ta question.. le code que j'ai utilisé et celui que tu m'as transmit... (je ne sais pas codé..)
    J'ai fait une gaffe?
    Fichiers attachés Fichiers attachés

  8. #8
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, Il est de quel origine ton CSV ? Unix ?
    La présence de caractères é pour é dans la colonne "Webarchive age" fait que le code ne fonctionne pas correctement, mais le fichier est généré sans message d'erreur.
    En remplaçant é par é dans ton source, le code fourni fonctionne et le fichier généré comporte bien une colonne supplémentaire.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    j'obtiens ce fichier grâce à imacros sur chrome (mon os est seven)...

    Je suis un peu perdu.. qu'est ce que je dois faire stp?

  10. #10
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, as-tu essayé le code dans un nouveau classeur Excel vierge ? Sinon quel est ton code actuel ? car hormis ce problème de caractères UTF ici tout fonctionne.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Juillet 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Oui ca Marche !!!
    Oui effectivement cela Marche !
    En fait il me met "zzzz" dans une nouvelle cellule en A1

    Mai comment faire pour qu'il m'insère le nom du fichier sur chaque ligne du tableau stp?

    Pour le code j'utilise celui que tu m'as transmit (je ne sais pas codé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     
    Option Explicit
     
    Sub AjoutColonne()
    Dim sFichier As String
        sFichier = Dir$(ThisWorkbook.Path & "\*.csv")
        Do While Len(sFichier) > 0
            SaveCsv sFichier
            sFichier = Dir$
        Loop
    End Sub
     
    Private Sub SaveCsv(ByVal sNomFichier As String)
    Dim sChaine As String
    Dim iNumFichier1 As Integer, iNumFichier2 As Integer
    Dim Sep As String * 1
    Dim sOut As String
     
        Close
        Sep = ";"
     
        iNumFichier1 = FreeFile
        sOut = ThisWorkbook.Path & "\" & "Tempo.csv"
        Open sNomFichier For Input As #iNumFichier1
            iNumFichier2 = FreeFile
            Open sOut For Output As #iNumFichier2
                Do While Not EOF(iNumFichier1)
                    Line Input #iNumFichier1, sChaine
                    sChaine = "zzzz" & Sep & sChaine
                    Print #iNumFichier2, sChaine
                Loop
            Close #iNumFichier2
        Close #iNumFichier1
     
        Kill sNomFichier
        Name sOut As ThisWorkbook.Path & "\" & sNomFichier
    End Sub

  12. #12
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Re, tu remplaces "zzzzz" par sNomFichier, il faudrait avant cela régler le pb des caractères UTF ( é à remplacer par é etc ) , n'ayant ni Chrome ni iMacros je ne sais pas si cela est possible au niveau d'iMacros pour générer un fichier correct.

Discussions similaires

  1. ajout guillemet dans fichier csv
    Par bbawa dans le forum VBScript
    Réponses: 0
    Dernier message: 27/01/2014, 09h57
  2. [2008] Ajout colonne dans fichier CSV
    Par Herlece dans le forum SSIS
    Réponses: 7
    Dernier message: 11/03/2013, 18h20
  3. [Toutes versions] Ajouter une colonne dans un fichier dbf à partir d'ACCESS
    Par loufab dans le forum Contribuez
    Réponses: 2
    Dernier message: 13/05/2012, 13h07
  4. ajout colonne dans fichier directement
    Par Strami dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/02/2009, 10h09
  5. Ajouter une colonne à un fichier csv contenant les resultats d'un calcul
    Par Freedd dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 31/07/2008, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo