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 :

Exporter une feuille en .csv contenant des ALT-ENTREE [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 44
    Par défaut Exporter une feuille en .csv contenant des ALT-ENTREE
    Bonjour,

    Je fais face à un petit problème qui me turlupine.
    Je souhaiterai fais depuis une feuille excel une exportation en .CSV

    Malheureusement, cette feuille contient des cellules avec des sauts de ligne (ALT + ENTREE).
    Du coup, dans le fichier .csv, j'ai un saut de ligne à chaque fois que j'ai un alt entrée.

    Est ce que vous avez une astuce pour éviter que cela se produise ?

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Est-ce que tu souhaites conserver les sauts de lignes ? est-ce que tu enregistres le fichier comme un fichier csv ou comme un classeur Excel (ou est-ce que tu ne l'enregistres pas ?).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 44
    Par défaut
    à l'heure actuelle, j'enregistre le fichier en .csv (je n'arrive pas à faire un export sans toucher à mon fichier Excel d'origine, mais c'est une autre histoire !)
    Je souhaite conserver ces sauts de lignes dans les cellules.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    La macro suivante écrit un fichier csv. Tu peux la mettre dans ton classeur de macros personnelles. Avec le Bloc Notes, ce fichier est lu avec les cellules sur une seule ligne quand il y a des cellules avec des sauts de ligne; par contre avec Notepad++, on retrouve les infos sur deux lignes. Le ficher est créé dans le même dossier et avec le même nom( sauf l'extension) que le fichier source :

    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
    Sub Export()
        Dim Col As Integer, Enrgt As String
        Close #1
        chemin = ThisWorkbook.Path
        With ActiveSheet.UsedRange
            Col = .Column + .Columns.Count - 1
            Open chemin & "\" & Split(ActiveWorkbook.Name, ".")(0) & ".csv" For Output As #1
            For Each c In .Resize(, 1)
                Enrgt = ""
                For i = c.Column To Col
                    Enrgt = Enrgt & Cells(c.Row, i)
                Next i
                Print #1, Enrgt
            Next c
            Close #1
        End With
    End Sub

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 44
    Par défaut
    Pour l'exportation : GENIAL, merci beaucoup
    Pour le csv, en bloc note c'est le top.Tout est sur une seule ligne mais sans ; ou | pour séparer les colonnes. Possible de faire ?

    Est ce qu'on peut faire la même chose en ouvrant avec Excel ?

    Merci pour l'export en tout cas

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Voila :

    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
    Sub Export()
        Dim Col As Integer, Enrgt As String
        Close #1
        chemin = ThisWorkbook.Path
        With ActiveSheet.UsedRange
            Col = .Column + .Columns.Count - 1
            Open chemin & "\" & Split(ActiveWorkbook.Name, ".")(0) & ".csv" For Output As #1
            For Each c In .Resize(, 1)
                Enrgt = ""
                For i = c.Column To Col
                    Enrgt = Enrgt & ";" & Cells(c.Row, i)
                Next i
                Enrgt = Right(Enrgt, Len(Enrgt) - 1)
                Print #1, Enrgt
            Next c
            Close #1
        End With
    End Sub
    Sub Import()
        Dim Col As Integer, Enrgt As String
        Close #1
        chemin = ThisWorkbook.Path
        With ActiveSheet.UsedRange
            Open chemin & "\" & Split(ActiveWorkbook.Name, ".")(0) & ".csv" For Input As #1
            Do While Not EOF(1)
                Line Input #1, Enrgt
                tabl = Split(Enrgt, ";")
                ligne = ligne + 1
                For i = 0 To UBound(tabl)
                    Cells(ligne, i + 1) = tabl(i)
                Next i
            Loop
            Close #1
        End With
    End Sub
    Sauf que pour l'Import, il faudra mettre le nom et le chemin en dur.

    Utilise plutôt :

    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
    Sub Import()
        Dim Chemin As String, Enrgt As String, Tabl, Ligne As Long, Fichier As String
        Close #1
        Fichier = Application.GetOpenFilename("CSV Files (*.csv), *.csv")
        If Fichier = "Faux" Then Exit Sub
        fich = Dir(Fichier)
        Chemin = Application.Substitute(Fichier, fich, "")
        Open Chemin & fich For Input As #1
        Do While Not EOF(1)
            Line Input #1, Enrgt
            Tabl = Split(Enrgt, ";")
            Ligne = Ligne + 1
            For i = 0 To UBound(Tabl)
                Cells(Ligne, i + 1) = Tabl(i)
            Next i
        Loop
        Close #1
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2014, 08h36
  2. Réponses: 4
    Dernier message: 27/04/2007, 12h19
  3. [VBA Excel] export/sauvegarde d'une feuille excel .csv
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/12/2006, 12h07
  4. Création d'une base de données contenant des images
    Par gandalf_le_blanc dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 16/06/2004, 15h29
  5. Réponses: 4
    Dernier message: 07/12/2002, 07h34

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