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

Excel Discussion :

Conversion .xlsx en csv avec séparateur personnalisé [XL-365]


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Informaticienne
    Inscrit en
    Mai 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Informaticienne
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 34
    Par défaut Conversion .xlsx en csv avec séparateur personnalisé
    Bonjour à toutes et tous,

    Je souhaite à convertir des fichiers excel en csv mais avec un séparateur personnalisé (§).
    Je ne trouve pas comment faire ....
    Merci de votre aide.
    Bonne journée .

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Une solution pas très élégante mais simple et rapide.
    En supposant que tes données sont en colonne A, B et C, tu mets en D1 la formule :
    Avec Excel 365, tu peux utiliser à la place la fonction JOINDRE.TEXTE https://support.office.com/fr-FR/art...3-0e8fc845691c

    Tu copies D1 vers le bas autant que tu as de lignes de données.
    Tu ouvres un nouveau fichier.
    Sélectionne la colonne D de tes données sources > Ctrl+C > Sélectionne A1 de ton nouveau fichier > Clic droit > Copier valeurs

    Il ne reste plus qu'à enregistrer le nouveau fichier en CSV.

    Si tu as à le faire régulièrement, tout ceci peut bien sûr être automatisé par une macro en VBA.

  3. #3
    Membre averti
    Femme Profil pro
    Informaticienne
    Inscrit en
    Mai 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Informaticienne
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 34
    Par défaut
    Bonjour et merci pour la réponse,
    Cependant, la formule indiquée ne répond pas au besoin, en effet, le § est remplacé par un õ

    Merci

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Fjsinfo Voir le message
    Cependant, la formule indiquée ne répond pas au besoin, en effet, le § est remplacé par un õ
    Ce n'est pas la formule qui est en cause mais l'enregistrement et/ou l'application de destination.

    Normalement, ce qui transforme les § en õ, c'est le passage de MS-DOS à Windows.
    N'aurais-tu pas enregistré le fichier au format CSV MS-DOS ?
    Si c'est le cas, essaye de l'enregistrer en CSV Windows.

    Il faudrait que tu en dises plus sur l'application qui va ouvrir le CSV (et éventuellement son OS) car ton problème est sans doute à cause du codage des caractères.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Tu dois réaliser cela souvent ou sur beaucoup de fichiers?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre averti
    Femme Profil pro
    Informaticienne
    Inscrit en
    Mai 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Informaticienne
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 34
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.

    Tu dois réaliser cela souvent ou sur beaucoup de fichiers?
    Bonjour, oui, je dois le faire sur plusieurs fichiers.
    En fait, je crée d'abord le fichier en .xslx car plus facile à travailler, puis je dois le convertir en csv pour qu'il puisse être utilisé.

  7. #7
    Membre averti
    Femme Profil pro
    Informaticienne
    Inscrit en
    Mai 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Informaticienne
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 34
    Par défaut
    Pas très propre mais j'ai fait un remplacer tout de õ pour §

    Merci à tous.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Normalement, un csv devrait s'appuyer sur une table de données. Voici un code qui enregistre un tableau nommé tableau1 en CSV. Si des données doivent être formatées d'une certaine manière (nombres avec . et pas , ou date dans un certain format), il conviendra d'adapter la boucle d'alimentation de la variable Data en traitant cellule par cellule

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Sub Test()
      Dim Data As String
      Dim t As ListObject
      Dim r As ListRow
      Dim c As Range
      Dim h As Range
      Dim Pos As Long
      Dim Separator As String
      Dim FileName As String
     
      FileName = "e:\temp\Fichier.csv"
      Separator = "§"
      Set t = Range("tableau1").ListObject
      Set h = t.HeaderRowRange
     
      For Each c In h
        If Data = "" Then Data = c.Value Else Data = Data & Separator & c.Value
      Next c
      Data = Data & Chr(10)
     
      For Each r In t.ListRows
        Pos = 1
        For Each c In r.Range
          If Pos = 1 Then Data = Data & c.Value Else Data = Data & Separator & c.Value
          Pos = 0
        Next c
        If r.Index < t.ListRows.Count Then Data = Data & Chr(10)
      Next r
     
      CreateCSV Data, FileName
    End Sub
     
    Function CreateCSV(Data As String, FileName As String) As Long
      Dim st As Object
     
      If Dir(FileName) <> "" Then Kill FileName
      Set st = CreateObject("ADODB.Stream")
      With st
        .Type = 2
        .Charset = "utf-8"
        .Open
        .writetext Data
        .savetofile FileName
      End With
     
    EndHandler:
      Set st = Nothing
      If Err <> 0 Then CreateCSV = Err.Number
    End Function
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    C'est à cause de problèmes de ce genre que j'utilise la procédure que j'ai donnée, car elle force la création du csv en utf-8 alors que l'enregistrement via Excel le fait en iso-8859-1, si je ne dis pas de bêtises.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre averti
    Femme Profil pro
    Informaticienne
    Inscrit en
    Mai 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Informaticienne
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 34
    Par défaut
    Merci à tous pour vos réponses.
    J'ai dû finalement refaire tous mes fichiers depuis notepad afin qu'ils soient interprétables par mon script.

    Merci encore pour votre temps.
    Bonne journée.

  11. #11
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    Code Inspiré par Pierre Fauconnier : 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
    Sub test()
    ThisWorkbook.Sheets("Feuil1").UsedRange.Copy
    CreateCSV Replace(PressePapier, vbTab, "§"), Environ("Temp") & "\TOTO.txt"
    End Sub
    Function CreateCSV(Data As String, FileName As String) As Long
      Dim st As Object
     
      If Dir(FileName) <> "" Then Kill FileName
      Set st = CreateObject("ADODB.Stream")
      With st
        .Type = 2
        .Charset = "utf-8"
        .Open
        .writetext Data
        .savetofile FileName
      End With
     
    EndHandler:
      Set st = Nothing
      If Err <> 0 Then CreateCSV = Err.Number
    End Function
     
    Public Property Let PressePapier(Value)
    Const DATAOBJECT_BINDING As String = "new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"
        With CreateObject(DATAOBJECT_BINDING)
            .SetText Value
            .PutInClipboard
        End With
    End Property
    Public Property Get PressePapier()
    Const DATAOBJECT_BINDING As String = "new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"
        With CreateObject(DATAOBJECT_BINDING)
            .GetFromClipboard
            PressePapier = .GetText
        End With
    End Property

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

Discussions similaires

  1. Lire un fichier csv avec séparateur ";"
    Par Invité dans le forum C++/CLI
    Réponses: 7
    Dernier message: 05/11/2015, 21h00
  2. [AC-2010] Export table en csv avec séparateur
    Par cleataz dans le forum Access
    Réponses: 14
    Dernier message: 03/10/2015, 06h45
  3. [XL-2007] Comment exporter un CSV, avec séparateur ',' à partir d'un XLS ?
    Par yo_haha dans le forum Excel
    Réponses: 5
    Dernier message: 27/11/2014, 10h24
  4. Réponses: 11
    Dernier message: 07/10/2011, 09h19
  5. csv avec séparateur point-virgule
    Par jacques chez pago dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/10/2009, 17h25

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