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 :

Importation de fichier CSV et format des colonnes ? [XL-2010]


Sujet :

Excel

  1. #1
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut Importation de fichier CSV et format des colonnes ?
    Bonjour,

    J'ai un petit problème de format et de validation dans Excel
    Exemple (une fois l'importation du CSV)
    je suis dans une colonne ou j'ai plusieurs valeur qui ressemble a
    +2,99000000000000E+000
    +3,84000000000000E+000
    +1,31600000000000E+002
    Ces valeurs sont au format TEXT, je convertis au format numéro et pas de changement, je suis obligé d'entrer dans la cellule (par un double clic) et revalide par entrée et la valeur change :
    2,99
    3,84
    131,60

    Comment faire pour le faire pour toutes les valeurs du tableau ? (en VBA ou pas ?)

    En vous remerciant d'avance

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Curieux, car ton 1er nombre équivaut à 299,000,000,000,000 et non pas 2,99
    Tu peux t'en rendre compte en insérant une colonne à droite contenant la fonction "Value(cellule)" avec un format personnalisé "#,##0"

  3. #3
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut
    Quand j'écris dans une cellule vide
    +2,99000000000000E+000 {enter}
    j'ai une valeur qui est :
    2,99E+00 le format est de type scientifique et quand je la change en nombre j'ai bien la valeur : 2,99
    Pour moi la valeur est bonne (je me trompe peut être ?)

  4. #4
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    C'est juste; mon séparateur décimal est le "point", d'où la confusion.
    Donc, en insérant une colonne a droite contenant la formule "Value(celluleDeGauche)" et en appliquant le format personnalisé "#.##" (ou "#,##"), ça devrait marcher

  5. #5
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 410
    Points : 2 871
    Points
    2 871
    Par défaut
    Bonjour

    A priori, il y a une petite coche verte en haut à gauche des cellules concernées. En cliquant sur la première qui est concernée, un petit panneau doit apparaitre. En cliquant sur ce panneau, Excel propose de convertir en nombre. Si on choisit cela, on retrouve un nombre "habituel". Eventuellement, il faut changer ensuite le format (qui est passé en scientifique) en mode Standard.

    On peut gagner beaucoup de temps en sélectionnant d'un coup toutes les cellules concernées. MAIS, il faut que la première que l'on sélectionne pose ce problème afin que le panneau s'affiche.

    Tout ceci est illustré sur l'image suivante.
    Nom : nbe.png
Affichages : 288
Taille : 13,8 Ko


    Bien entendu cela fonctionne sur un "one-shot" mais ce n'est pas la méthode à utiliser s'il faut le faire 50 fois par jour tous les jours.

    En espérant que cela convienne

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut
    Bonjour Pierre Dumas

    Merci pour votre réponse, vu l'image que vous avez copié je dirais que c'est de l'Office 2013/2011 ?
    J'ai fait des tests avec la version que j'ai (2010) et au debut je n'avais pas cette petit bulle d'option mais j'ai trouvé en faisant une autre manipulation.
    et effectivement ça change bien la valeur (de type string) en numéro (de type int ou décimal), mais j'ai 37000 lignes a faire comme ça, il n'existerais pas un moyen pour faire toutes les valeurs en meme temps ?
    (j'ai bien changé la première valeur mais les autres n'ont pas suivis)

  7. #7
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 410
    Points : 2 871
    Points
    2 871
    Par défaut
    Rebonjour

    C'est justement pour éviter de le faire une cellule par une cellule que j'ai écrit (et qui est illustré par l'image) :
    On peut gagner beaucoup de temps en sélectionnant d'un coup toutes les cellules concernées. MAIS, il faut que la première que l'on sélectionne pose ce problème afin que le panneau s'affiche.
    Il faut sélectionner TOUTES les cellules (sachant que le première sélectionnée DOIT avoir le souci d'être écrite sur beaucoup de caractères) et ensuite cliquer sur le panneau.

    En espérant que vous réussirez à réaliser la manipulation cette fois-ci.

    Bonne fin de journée

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut
    Effectivement ça fonctionne merci
    ça fonctionne aussi en sélectionnant le tableau sans les en-tete

    Existerait-il une macro VBA pour que ça se met a jour automatiquement ?

  9. #9
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Il est préférable d'ouvrir proprement le fichier que de faire une réparation à postériori.

    Un des problèmes d'Excel, c'est qu'il croit connaitre le besoin de l'utilisateur mieux que celui-ci.
    Et donc il prend des initiatives sans lui demander son avis.
    Entre autre, il imagine pouvoir ouvrir un fichier CSV sans qu'on ait a lui expliquer les spécificités du contenu.

    Le moyen le plus simple que j'ai trouvé pour contourner ça, c'est de lui faire croire que le fichier est "autre chose" que du CSV.
    Pour ça, je renomme le .csv en .txt.
    Du coup, Excel ne sait pas exactement comment l'ouvrir et se met à poser des questions (généralement trois fenêtres successives) dans lesquelles on peut indiquer ses spécificités.
    Parmi celles-ci figure le séparateur de données utilisé et la nature de chaque colonne.
    Un conseil : ne laisser "Standard" que pour les véritables valeurs numériques. Pour tout le reste (y compris les codes composés de chiffres comme les numéro de téléphone ou de sécurité sociale), indiquer que la colonne est du texte.

    En procédant ainsi, ton importation devrait mieux se passer.

    Si tu veux le faire en VBA, il faudra passer par la méthode Workbooks.OpenText.
    Lire ça : https://docs.microsoft.com/fr-FR/off...books.opentext
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    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 420
    Points : 2 179
    Points
    2 179
    Par défaut
    bonjour,
    une autre approche en VBA!

    Code TEST.CSV : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    N°;DATE;COMMANTAIRE;VALEUR
    1;01/01/2019;A;1,1
    2;02/01/2019;A;2,2
    3;03/01/2019;A;3,3
    4;04/01/2019;A;4,4
    5;05/01/2019;A;5,5
    6;06/01/2019;A;6,6
    7;07/01/2019;A;7,7
    8;08/01/2019;A;8,8
    9;09/01/2019;A;9,9
    10;10/01/2019;A;11
    11;11/01/2019;A;12,1
    Code Schema.ini : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [TEST.CSV]
    Format=Delimited(;)
    DateTimeFormat=MM/dd/yyyy
    DecimalSymbol=, 
    Col1=[] Long
    Col2=[DATE] DateTime
    Col3=[COMMANTAIRE] Text Width 10  
    Col4=[VALEUR] Double
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    With CreateObject("AdoDb.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyRep;Extended Properties=""Text;HDR=No;FMT=Delimited;"""
        ActiveCell.CopyFromRecordset .Execute("Select * from [TEST#CSV]")
        .Close
     End With
    End Sub

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

Discussions similaires

  1. Importer un fichier CSV en spécifiant les colonnes
    Par A753128 dans le forum Débuter
    Réponses: 0
    Dernier message: 06/05/2019, 13h39
  2. Importer un fichier CSV en choisissant les colonnes
    Par wam111 dans le forum Administration
    Réponses: 5
    Dernier message: 25/04/2018, 15h16
  3. [LibreOffice][Tableur] Format des colonnes lors d'un import CSV
    Par CBresso dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 14/04/2015, 16h25
  4. Réponses: 3
    Dernier message: 11/06/2007, 11h20
  5. Réponses: 4
    Dernier message: 13/12/2006, 17h10

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