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 :

fichier excell csv en UTF-8


Sujet :

Excel

  1. #1
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 023
    Points : 308
    Points
    308
    Par défaut fichier excell csv en UTF-8
    Bonjour,

    Je ne sais s'il est mieux de poser ma question ici ou dans un forum plus orienté HTML ou PHP mais bon...

    J'ai un fichier CSV que je crée a partir d'un tableau Excell.
    Ce fichier est exploité par un code PHP qui en extrait du texte qu'il affiche sur une page WEB en UTF-8.

    Mon problème est que les caractère accentués ne s'affichent pas correctement.
    Après de longues recherches j'ai trouvé que quand on enregistre le CSV avec Excell2010 il faut allez dans outil--> Option Web onglet Codage et choisir UNICODE (UTF-8).
    Malgré ça mes accents ne sont toujours pas là.
    Pour être sur que c'est bien la qu'est le probleme j'ai édité mon CSV avec NOTPAD++, j'ai remis quelques caractère accentués correctement et j'ai sauvé en UTF-8. Et là ca marche !!!!

    C'est donc bien cette usine à gaz de Excell qui refuse de sauver en UTF-8.

    --> Questions :
    Pourquoi ?
    Comment résoudre ?
    Le cas échéant avec quoi je peux créer des tableau "sauvables" en csv UTF-8 ?

    Merci de votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    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 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Si tu lis l'Anglais, regarde sur cette page la réponge que Major Bandwith se fait à lui-même cette page :

    https://groups.google.com/forum/#!to...os/teFXx6Zd9dk

    Sinon, je testerai.

  3. #3
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 023
    Points : 308
    Points
    308
    Par défaut
    Je ne lis pas suffisamment bien l'Anglais pour ça
    Et de toute évidence Google translation non plus .

    Merci de ton aide.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    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 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Essaie comme ça :

    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
    Sub test()
        Dim Var As Integer, Fichier As String, FichierUTF8 As String
        'fichier à transposer
        Fichier = "C:\Users\Daniel\Documents\Donnees\Daniel\mpfe\testutf.txt"
        'fichier résultat
        FichierUTF8 = "C:\Users\Daniel\Documents\Donnees\Daniel\mpfe\testutf2.txt"
        Var = writeOut2(Fichier, FichierUTF8)
    End Sub
     
    Public Function writeOut2(cText As String, file As String) As Integer
    On Error GoTo errHandler
    Dim fsT, tFilePath, tOpenPath As String
     
    tOpenPath = cText
    tFilePath = file
     
    'Create Stream object
    Set fsT = CreateObject("ADODB.Stream")
     
    'Specify stream type – we want To save text/string data.
    fsT.Type = 2
     
    'Specify charset For the source text data.
    fsT.Charset = "utf-8"
     
    'Open the stream And write binary data To the object
    fsT.Open
    fsT.LoadFromFile tOpenPath
     
    'Save binary data To disk
    fsT.SaveToFile tFilePath, 2
     
    GoTo finish
     
    errHandler:
    MsgBox (Err.Description)
    writeOut2 = 0
    Exit Function
     
    finish:
    writeOut2 = 1
    End Function

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour,

    et sans code avec Enregistrer sous … en format CSV (DOS) ? …

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    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 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour Marc-L,

    Tu as fait un test ou c'est une suggestion ?

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Les deux mon Capitaine !

  8. #8
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 023
    Points : 308
    Points
    308
    Par défaut
    Bonjour Daniel C,

    Merci pour ce code mais c'est quoi ?
    Je ne connais rien au macro, VB et co de Excelle je suis un user lambda.
    Je dois dire aussi que si j'ai fait un truc en PHP sur ma page qui lit un CSV c'est pour me simplifier la vie, si maintenant il faut chaque fois traiter le fichier...

    J'ai essayé toutes les formes de CSV et ça ne marche pas ! Excell semble incapable d'enregistré en UTF-8 car même quand j'ouvre le fichier csv dans NOTPAD++ les caractère accentués ne sont déjà plus là, a la place il y a des virgules par exemple.

    C'est tout de même dingue que Excell ne puisse pas faire un truc aussi simple, je veux bien que c'est de la merde de chez Krosoft mais tout de même !

    Donc en résumé : si la solution "code de Daniel C" est ensuite transparente pour l'user et que vous pouvez me dire comment la mettre en oeuvre je suis preneur.
    Sinon vous pouvez peut être me dire s'il existe un tableur convenable qui peut enregistrer en UTF-8 de préférence open source car vu le prix exorbitant déjà payé pour la suite Office je n'ai pas trop de budget pour acheter toutes les usines à gaz du marché pour finir par tomber sur quelque chose qui marchera.
    Ce qui m’énerve c'est que j'ai trouvé dans Excell la procédure censée permettre d'enregistré en UTF-8 mais ça ne marche pas.

    Des fois je me dis que je passerais bien sur MAC...

  9. #9
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 513
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 513
    Points : 16 441
    Points
    16 441
    Par défaut
    Bonjour

    Les options Web d'Excel concernent l'export en format html pas en csv.

    Il y a des années, j'ai traité des fichiers en 29 langues avec un code similaire à celui proposé par Daniel et cela fonctionne parfaitement.

    Le VBA n'est pas plus compliqué que le php.

    Une solution donnée sur un forum, mais non testée :
    • Créer un fichier TXT avec un éditeur de texte comme notepad
    • Dans ce fichier, régler l'encodage à UTF8
    • Sauver avec l'extension .CSV et fermer
    • Aller dans Excel et ouvrez le fichier que vous voulez exporter en CSV
    • Sauver votre fichier avec le format CSV (comma delimited)
    • et enregistrer dans le fichier précedement créer avec l'encodage UTF8
    • L'encodage sera conservé


    Si elle fonctionne il suffit de garder en réserve un fichier ainsi créé avec Notepad.

    Sinon j'avais donné là http://www.developpez.net/forums/d12...lcul-puis-csv/

    une solution passant par Word qui, lui, propose l'UTF.

  10. #10
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 023
    Points : 308
    Points
    308
    Par défaut
    OK donc c'est du VBA le code donné plus haut ?
    Bon moi Excell ça se limite a faire =a1+a2 et en réflechissant une bonne demi heure faire un calcul de TVA...
    Donc le VBA je ne sais même pas ou ça se met dans Excell.
    Donc si quelqu'un savait "me prendre par la main" ou me dire ou je peux trouver vraiment un truc basic pour mettre ça en place...

    Autres question :

    Est ce qu'avec ce code ce sera transparent ? Je veux dire est ce qu'il y auara des manip à faire ou alors on rempli le tableau on sauve et le code "magique" fait ce qu'il doit sans même qu'on sache qu'il est là ?

    Merci de votre aide...

  11. #11
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 513
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 513
    Points : 16 441
    Points
    16 441
    Par défaut
    Re

    Je t'ai donné deux solutions sans VBA : les as-tu testées ?

  12. #12
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    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 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Lorsque tu veux transposer un fichier en utf-8, ouvre le classeur joint et presse le bouton (le fichier csv est lui fermé). Choisis le fichier csv. Le fichier converti se trouvera dans le même répertoire que le fichier source. Il portera le même nom avec "UTF8" à la fin. Teste le classeur.
    Fichiers attachés Fichiers attachés

  13. #13
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 023
    Points : 308
    Points
    308
    Par défaut
    @ Z8chris.
    Non je n'ai pas testé tes solutions trop contraignantes.
    Si c'est pour faire un truc comme ça j'ai plus vite fait de revenir à mon système archaïque d'avant.
    Je comprends que ta solution te paraisse bien a toi qui est le nez dans le camboui mais quand on est pas mécanicien on envisage pas d'allez dans le moteur pousser sur le contacteur pour démarrer, on veut tourner le clef et que ça marche.

    € Daniel C.
    J'ai essayé le "machin" que tu m'as envoyé.
    Ca c'est une super solution tout à fait du genre de ce que je cherche, on pousse sur un bouton et hop c'est magic.
    Malheureusement ça ne marche pas.
    J'ai essayé et c'est toujours le bordel dans mes caractères j'ai donc ouvert le fichier datesUTF8.CSV avec Notpad++ et j'ai pu constater que les accent ne sont déjà plus la j'ai par exemple fx82rier pour février...

  14. #14
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 513
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 513
    Points : 16 441
    Points
    16 441
    Par défaut
    Bonjour

    On te propose du VBA, tu n'en veux pas.

    On te propose des alternatives sans VBA, tu n'en veux pas non plus et tu deviens quelque peu agressif.

    Bon courage à Daniel, pour ma part, je passe mon chemin...

  15. #15
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 023
    Points : 308
    Points
    308
    Par défaut
    J'ai pas dit que je ne voulais pas du VBA.
    J'ai juste dit que je ne sais pas comment mettre ça en place.
    Je n'ai jamais fait autre chose avec Excell qu'une "bête" facture et donc le VBA je ne sais même pas ou ça se met dans excelle ni comment ça marche dans le principe.
    Mais je cherche sur le net et quand j'aurai compris j'essayerai si je n'ai pas trouvé une autres solution d'ici là.
    Et pour ce qui est d'être agressif, non je suis juste énervé de voir que je paye une licence une fortune pour une suite office qui n'est pas capable de faire un truc qui est décrit partout comme étant LE standard.
    Après on s'étonne que les gens crackent !

  16. #16
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 023
    Points : 308
    Points
    308
    Par défaut
    J'ai trouvé une solution ultra simple.
    Ca pourra peut-être aider quelqu'un...

    1/ Sauvegarder votre fichier Exell en csv.
    2/ ouvrir ce fichier dans Notpad (pas dans Notpad++).
    3/ Faire enregistrer sous --> A côté du bouton enregistrer il y a un menu déroulant qui est sur ANSI, mettez le sur UTF-8 et cliquez sur enregistrer.

    Et voilà les caractères accentués sont bien là et en UTF-8.

    Merci pour votre aide.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/06/2009, 22h23
  2. [MySQL] convertir un fichier excel(*.csv) en un (*.sql)
    Par rhani2010 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/10/2006, 19h39
  3. sauvegarde d'un fichier excel csv sous le format xls
    Par blondelle dans le forum C++Builder
    Réponses: 5
    Dernier message: 01/08/2006, 11h30
  4. Import de fichier Excel (CSV) dans MySQL
    Par mathieu77186 dans le forum Outils
    Réponses: 2
    Dernier message: 27/03/2006, 23h23
  5. Réponses: 1
    Dernier message: 02/02/2006, 14h26

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