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 :

Comment ne pas perdre les "0" lors d'un export en CSV


Sujet :

Excel

  1. #1
    En attente de confirmation mail
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Comment ne pas perdre les "0" lors d'un export en CSV
    Salut, je sais que ce message date un peu, mais je suis actuellement confronté au même problème que Contrec.

    Je génère un fichier csv à partir du SQL Oracle qui comporte des champs texte qui débutent par 00.... Et je souhaite récupérer ces 00... lors de l'ouverture du fichier csv dans Excel.

    Alors Contrec, tu as la solution ?

  2. #2
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par olivier131 Voir le message
    Salut, je sais que ce message date un peu, mais je suis actuellement confronté au même problème que Contrec.

    Je génère un fichier csv à partir du SQL Oracle qui comporte des champs texte qui débutent par 00.... Et je souhaite récupérer ces 00... lors de l'ouverture du fichier csv dans Excel.

    Alors Contrec, tu as la solution ?
    bonsoir,
    tu devrai plutôt ouvrir une nouvelle discussion ton probléme ne semble pas être le même que Contrec, qu'il y as t'il derriére tes 00 du texte, pour Contrect la cellule ne contient que des chiffres..?
    Connais-tu l'organisation de ton fichier, et les colonnes concernées par ton probléme?

  3. #3
    En attente de confirmation mail
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Bonsoir et merci d'avoir pris la peine de le répondre.
    En fait mon problème ne concerne pas un cas bien précis, mais c'est un problème qui se pose dès que j'ai besoin de générer un fichier texte à plat pour ensuite être repris par Excel.

    Un exemple tout simple : j'ai dans une table Oracle 2 colonnes qui représentent les codes postaux et les communes. Le code postal est un varchar(5). Quand je fais un SELECT * FROM MA_TABLE, j'obtiens un fichier du genre:

    CP COMMUNE
    ----- -----------
    01000 commune1
    01001 commune2
    15000 commune3
    etc...

    Donc le problème se pose pour les codes postaux qui débutent par 0..., quand j'ouvre le fichier sous Excel les 0 disparaissent (01000 se transforme en 1000) car Excel traite le code postal comme un numérique, normal mais très embêtant

    Voilà, j'espère que j'ai été clair et pas trop long... Si l'un d'entre vous à une solution je suis preneur ?!

    Ps: je dois préciser une chose importante, le fichier généré ne peut pas être importé depuis Excel en spécifiant telle ou telle colonne au format texte, ce serait trop facile ! En effet, les fichiers que je génère sont constitué la nuit sur un serveur puis envoyés directement par mail aux destinataires... Aucun traitement manuel ne m'est possible !

    Bonne soirée à tous.

  4. #4
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par olivier131 Voir le message
    B....
    Ps: je dois préciser une chose importante, le fichier généré ne peut pas être importé depuis Excel en spécifiant telle ou telle colonne au format texte, ce serait trop facile ! En effet, les fichiers que je génère sont constitué la nuit sur un serveur puis envoyés directement par mail aux destinataires... Aucun traitement manuel ne m'est possible !
    ...
    c'est à cette solution que je pensai, mais si tu peu automatiser le chargement d'un fichier texte, tu peu aussi automatiser ce chargement en tenant compte des colonnes de textes.. ! ta requête SQL devrai te permettre de déterminer quelles sont les colonnes de textes !

  5. #5
    Membre éprouvé
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Points : 1 079
    Points
    1 079
    Par défaut
    Bonjour,

    T'est-il possible, au moment de l'export de rajouter un caractère devant le premier chiffre ?

  6. #6
    En attente de confirmation mail
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    @ouisansdoute : oui je peux ajouter ce que je veux devant le premier chiffre. Je suppose que tu penses à mettre une simple quote ' devant les zéros pour indiquer à Excel qu'il s'agit d'un format texte ? J'ai déjà essayé, ça marche mais le problème est qu'on retrouve la quote dans le fichier Excel, donc pas beau !

    @JackOuYA : je ne comprends pas ce que tu veux dire par "déterminer quelles sont les colonnes de textes" ? Etant donné que c'est moi qui écrit les requêtes SQL, je fais ce que je veux, donc évidemment je sais quelles sont les colonnes qui doivent avoir le format texte. Mais comment l'indiquer formellement à Excel ???
    Précision, quand je parle d'automatisation, ce n'est qu'au niveau des exécutions des requêtes (donc génération d'un fichier spool format texte que je peux nommer .csv), puis envoi directement par mail. Je ne pilote pas Excel, ce sont des utilisateurs qui recoivent les mails avec en pièce-jointe un fichier csv que j'ai généré.

  7. #7
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    c'est bizarre ton truc j'ai le problème inverse avec les CSV je dois indiquer à excel quelles les colonnes sont des nombres et non du texte .
    De plus dans Excel il y a le format code postal ne suffit il pas de sélectionner la colonne et de lui imposer le format CP?
    oups je doit etre un poil à coté (à) la relecture
    tu dois en final crees non pas un CSV mais un XLS il te faudrait faire ta requete depuis excel ou piloter excel pour qu'il te mouline le truc avant de le mailler

  8. #8
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par olivier131 Voir le message
    ....
    Précision, quand je parle d'automatisation, ce n'est qu'au niveau des exécutions des requêtes (donc génération d'un fichier spool format texte que je peux nommer .csv), puis envoi directement par mail. Je ne pilote pas Excel, ce sont des utilisateurs qui recoivent les mails avec en pièce-jointe un fichier csv que j'ai généré.
    elle arrive un peu tard cette précisiton

    pour l'ouverture, avec 1° colonne texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Workbooks.OpenText Filename:="C:\users\Nouveau Document texte.txt", Origin _
            :=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
            xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
            Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _
            Array(2, 1))

  9. #9
    Invité
    Invité(e)
    Par défaut Solution pour conserver le zéro de tête dans le Code postal dans EXCEL après import depuis un CSV
    La solution c'est dans le SQL d'origine qui sert à fabriquer ton CSV.
    A lieu d'envoyer le code postal comme un champ normal il faut le placer
    à l'intérieure de la fonction de formatage TEXTE.
    Le CSV récupère, à la place de la valeur du code postal, une fonction d'Excel
    avec la valeur du code postal en premier argument et le motif du formatage "00000" en second.

    Il faut précéder la fonction du signe égal.
    J'utilise Postgresql pour créer mes CSV et ma marque de concaténation est donc le double pipe "||".
    Modifier selon votre SGBD.

    J'applique ce formatage si le Pays = 'FRANCE'.
    Les autres je les laisse tels quels.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	select ..
    		upper(voie), 
    		CASE 	WHEN upper(pays ) = 'FRANCE' 
    				THEN 
                                            '= TEXTE('      || 
                                           upper(code_postal)  ||
                                           ' ; "00000" )'
    				ELSE  upper(code_postal)::TEXT 
    				END 		 AS code_postal, 
    		upper(localite)            AS Localite, 
    		upper(pays)                AS Pays
    	...
    dans le CSV , ça donne :
    allée Jean Mace "= TEXTE(01000 ; ""00000"" )" BOURG EN BRESSE FRANCE

    et dans Excel ça donne :
    allée Jean Mace 01000 BOURG EN BRESSE FRANCE

    Bon, le but c'est de corriger ce comportement énervant d'Excel et ça marche.
    Ça ressemble un peu à une injection SQL mais ici on injecte une fonction et non pas du code.
    On peut injecter d'autres fonctions d'Excel dans les CSV.
    Je ne recommande pas l'utilisation de cette astuce pour partager des fichiers CSV , parce que
    1. le CSV n'est pas prévu pour ça, on s'attend a trouver du data non pas des fonctions,
    2. la fonction Excel fonctionne avec Excel, mais certainement pas avec tous les logiciels qui savent importer du CSV.


    A manier donc avec précaution et seulement dans un milieu ou vous maîtrisez vos processus en aval.
    Dernière modification par Invité ; 02/03/2017 à 15h05.

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/03/2009, 16h49
  2. [JTable] Comment ne pas afficher les titres ?
    Par FabienBxl dans le forum Composants
    Réponses: 3
    Dernier message: 08/10/2003, 15h01
  3. [][Excel] Comment ne pas détruire les formules ?
    Par flyangelNext dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/07/2003, 11h38

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