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

POWER Discussion :

[Power Query] problème de conversion texte en nombre


Sujet :

POWER

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Décembre 2014
    Messages : 42
    Points : 26
    Points
    26
    Par défaut [Power Query] problème de conversion texte en nombre
    Bonjour,

    Je suis débutant en Power Query et en commençant un tutoriel, je rencontre une difficulté dans la conversion des négatifs en nombre entier "123".

    Voici mes opérations :

    1. J'extrais les données des tableaux de la page wikipedia de la Démographie de la France
    Obtenir les données > web > URL : https://fr.wikipedia.org/wiki/D%C3%A...e_de_la_France

    2. Je sélectionne le tableau qui a pour titre "Source : Ined43, Our World in Data, Fondation Gapminder44 et Insee45" et Transformer les données

    3. Je supprime la dernière ligne (122) qui contient les entêtes.
    Supprimer les lignes du bas > Nombre de lignes : 1 > OK

    Normalement, il devrait convertir convertir les types Texte en nombre, chez moi il ne le fait pas :
    4. Ctrl + A > Transformer > Détecter le type de données

    Power Query détecte bien les types de données pour les colonnes (entiers 1.2.3. ou décimaux 1.2) SAUF pour la colonne Accroissement naturel, qui reste sous format texte ABC.

    Le problème se situe sur les nombres négatifs : si je "force" en sélectionnant ma colonne, puis Type de données > Nombre entier, alors Query me retourne des erreurs.
    Exemple : DataFormat.Error : Désolé... Nous ne pouvons pas procéder à la conversion en un nombre.

    Que me conseillez-vous pour solutionner ce problème sans bricoler ?

    Merci de votre aide !

    PS : Peut-être mon post concerne plutôt le sous-forum Microsoft BI > Power BI ?

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 771
    Points : 28 631
    Points
    28 631
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Les données numériques du tableaux sont séparés par des caractères qui s'apparentent à des caractères espacés est en fait un espace insécable
    Il y a lieu d'effectuer le remplacement de l'espace insécable par rien (Options avancées de la boite de dialogue et ensuite vous pourrez typer la colonne en numérique

    Nom : Espace insecable.png
Affichages : 5637
Taille : 36,3 Ko


    [EDIT]
    Le problème se situe sur les nombres négatifs : si je "force" en sélectionnant ma colonne, puis Type de données > Nombre entier, alors Query me retourne des erreurs.
    Exemple : DataFormat.Error : Désolé... Nous ne pouvons pas procéder à la conversion en un nombre.
    Pour les caractères négatifs, je ne connais pas la touche exacte à utiliser pour remplacer ce caractère mais voici la ligne de code pour ce remplacement. Dans excel ce caractère est considéré comme un point d'interrogation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReplaceNegative = Table.ReplaceValue(#"Colonnes renommées","−","-",Replacer.ReplaceText,{"Accroissement naturel"}),
    Code complet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let
        Source = Web.Page(Web.Contents("https://fr.wikipedia.org/wiki/D%C3%A9mographie_de_la_France")),
        Data = Source{2}[Data],
        HeaderFirstRow = Table.PromoteHeaders(Data, [PromoteAllScalars=true]),
        RenameColumn = Table.RenameColumns(HeaderFirstRow,{{"Column1", "Année"}}),
        ReplaceNegative = Table.ReplaceValue(RenameColumn,"−","-",Replacer.ReplaceText,{"Accroissement naturel"}),
        ReplaceNon_breakingSpace = Table.ReplaceValue(ReplaceNegative,"#(00A0)","",Replacer.ReplaceText,{"Population (1er janvier)", "Naissances", "Décès", "Accroissement naturel"}),
        ModifyType = Table.TransformColumnTypes(ReplaceNon_breakingSpace,{{"Population (1er janvier)", Int64.Type}, {"Naissances", Int64.Type}, {"Décès", Int64.Type}, {"Accroissement naturel", Int64.Type}, {"Taux de natalité (pour 1000)", type number}, {"Taux de mortalité (pour 1000)", type number}, {"Accroissement naturel (pour 1000)", type number}, {"Taux de fécondité", type number}, {"Taux de mortalité infantile (pour 1000 naissances)", type number}, {"Espérance de vie (hommes)", type number}, {"Espérance de vie (femmes)", type number}})
    in
        ModifyType
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Décembre 2014
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    Bonjour Philippe,

    Je vous remercie pour votre code, j'ai juste fait un copié-collé dans l'éditeur avancé et supprimé la dernière ligne qui était de trop, et cela fonctionne !

    La ligne : doit correspondre à l'étape appliquée "Navigation", qui indique à PowerQuery que la table à importer est la 3ème (0, 1, 2), c'est bien cela ?

    J'ai beaucoup buté au début, car tant les espaces insécables que le signe "négatif long" qui provoquaient des erreurs étaient invisibles pour moi, j'ai dû sélectionner et copier ailleurs la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table.ReplaceValue(RenameColumn,"−","-",Replacer.ReplaceText,{"Accroissement naturel"})
    pour m'apercevoir que les signes moins étaient différents !

    Sauf erreur de ma part, ce caractère spécial à remplacer est appelé dans excel "tiret demi-cadratin" et son UNICODE est 8722.

    Merci pour votre aide, il va me falloir du temps pour comprendre tout ça

  4. #4
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 057
    Points : 2 522
    Points
    2 522
    Par défaut
    Bonjour

    en complément :

    pour obtenir le code d'un caractère dans Power Query il faut utiliser la fonction Character.ToNumber

    Character.ToNumber("−") renverra 8722

    pour convertir 8722 en hexadécimal il faut utiliser Number.ToText avec le format "x" (voir https://docs.microsoft.com/fr-fr/pow.../number-totext)

    Number.ToText(8722,"x") renverra 2212

    au final "#(2212)" dans le Table.ReplaceValue

    Stéphane

  5. #5
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 057
    Points : 2 522
    Points
    2 522
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Pour les caractères négatifs, je ne connais pas la touche exacte à utiliser pour remplacer ce caractère mais voici la ligne de code pour ce remplacement. Dans excel ce caractère est considéré comme un point d'interrogation
    Philippe

    Dans Excel avec ce caractère il faut utiliser la fonction UNICODE et non CODE (opération inverse avec UNICAR et non CAR)

    Stéphane

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 771
    Points : 28 631
    Points
    28 631
    Billets dans le blog
    53
    Par défaut
    Bonjour Stéphane,
    Merci.
    C'est vrai que je n'avais plus pensé à cette fonction.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développeur & logistique
    Inscrit en
    Février 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développeur & logistique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2023
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [Power Query] Problème de conversion texte en entier
    Bonjour,

    J'ai rencontré le même problème en tentant de convertir la colonne "Solde naturel" en entier. Le problème a été causé par l'importation du caractère spécial "-"

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

Discussions similaires

  1. [XL-2007] Problème de format texte en nombre
    Par mimicor15 dans le forum Excel
    Réponses: 9
    Dernier message: 27/01/2017, 18h25
  2. [XL-2003] Conversion texte vers nombre
    Par Toine-45 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/01/2014, 17h40
  3. [PROC] Conversion texte en nombre
    Par pierreTPE57 dans le forum SAS Base
    Réponses: 3
    Dernier message: 09/11/2012, 14h29
  4. [Débutant] problème de conversion text en single
    Par xingjing910 dans le forum VB.NET
    Réponses: 9
    Dernier message: 10/04/2012, 16h10
  5. Conversion texte en nombre
    Par berapard dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/07/2008, 12h29

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