[Power Query] aide pour conversion texte en nombre

Bonjour à tous :)

Débutant dans Power Query (j'ai installé Power BI Desktop), je m'essaie à un tuto.

Malheureusement, je suis rapidement bloqué car j'ai un souci de conversion de texte en nombre.

Voici les premières opérations que j'ai effectuées (il s'agit de travailler sur des données de démographie) :

1. J'ai extrait les données des tableaux de la page wikipedia de la démographie de la France :

Obtenir les données > web > URL : demographie_de_la_France

2. J'ai sélectionné le tableau qui a pour titre "Source : Ined43, Our World in Data, Fondation Gapminder44 et Insee45" et Transformer les données
3. J'ai supprimé 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, je fais :

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.

A défaut de solutionner mon problème dans Power Query, j'ai copié collé dans Excel 2013 mon tableau, il apparaît que les valeurs de la colonne Accroissement naturel sont du texte, et là j'ai tenté plusieurs formules ou astuces pour les convertir en nombre (comme sélectionner une cellule vide > copier, puis sélectionner ma plage et collage spécial > ajouter), mais rien n'y fait, impossible de convertir en nombre !

Chose étrange : dans Power Query, les valeurs positives ne sont pas vues en erreur alors que je récupère 19 erreurs pour les négatives.

Si vous avez des méthodes ou suggestions, que ce soit sous Power Query ou Excel, merci pour votre aide :)

Multipost déjà résolu ailleurs...

Sans doute, mais encore ?

Dans mon fichier, j'ai essayé, :

- "Convertir les nombres stockés en tant que texte en nombres", en utilisant l'assistant de conversion Données > Convertir, je n'ai pas réussi

- La sélection d'une cellule vide avec ajouter, ou de la cellule avec 1 et multiplier dans le collage spécial, ça ne marche pas non plus.

- L'utilisation de =CNUM() idem

Ce n'est peut-être pas compliqué mais si je poste c'est que ça fait des heures que je bloque...

Merci

RE

Sans doute, mais encore ?

Va voir la réponse à l'un de tes multiples posts...

Multiple ? Je n'ai posté qu'une seule fois ailleurs et j'ai pu résoudre le problème sous Power Query, merci au passage à la personne qui m'a aidée c'était loin d'être évident.

Mais sous Excel il doit y avoir une solution plus simple (convertir la colonne E du fichier en nombre) et je ne vois pas comment procéder.

Bonjour

Dans la mesure où on t'indique qu'il y a un espace insécable il faut faire un cherche et remplace de cet caractère par rien

Mais le fichier étant importé via PowerQuery pourquoi vouloir le faire en dehors ?

La plupart des espaces issus du Web sont des espaces insécables

Bonjour,

La plupart des espaces issus du Web sont des espaces insécables

OK je ne le savais pas

Dans la mesure où on t'indique qu'il y a un espace insécable il faut faire un cherche et remplace de cet caractère par rien

En effet, il avait deux points deux choses à modifier :

  • Le moins, caractère spécial "tiret demi-cadratin" UNICAR(8722) à remplacer par le moins de calcul "-"
  • L'espace insécable UNICAR(160) à remplacer par ""

Il y a en plus des séparateurs de milliers à gérer en E37 et E38, je ne vois pas comment faire autrement que manuellement

Ma formule pour corriger

: =CNUM(SUBSTITUE(SUBSTITUE(E2;UNICAR(8722);"-");UNICAR(160);""))

Mais le fichier étant importé via PowerQuery pourquoi vouloir le faire en dehors ?

Eh bien parce-qu'étant débutant dans PowerQuery j'ai essayé de me débrouiller sous Excel (avec encore un peu de mal). La solution sous PowerQuery proposée dans l'autre forum fonctionne mais je ne la comprends pas bien, je n'ai pas de connaissances en M.

Merci

RE

Le séparateur de milliers est un format de nombre. Il ne faut rien ajouter mais simplement formater correctement dans Excel

Ce que tu cites n'est pas une formule Excel mais du VBA

Dans la mesure où il faut soit PowerQuery (le plus simple et logique) soit VBA pour importer il faut décider ce que tu veux utiliser

A partir du moment où on utilise l'un ou l'autre il faut finir le travail avec et non empiler 36 trucs

PowerQuery ne s'utilise quasi jamais en utilisant l'éditeur avancé mais en utilisant les options des onglets ou du clic droit : c'est justement cela qui le rend bien plus facile à appréhender que le VBA.

Bonjour Chris

Oui je me doute bien que faire des aller-retour entre Excel et PowerQuery ce n'est pas optimum.

Ce que tu cites n'est pas une formule Excel mais du VBA

Là tu me surprends

=CNUM(SUBSTITUE(SUBSTITUE(E2;UNICAR(8722);"-");UNICAR(160);""))

est bien une formule Excel, non ?

En VBA, on a REPLACE qui équivaut SUBSTITUE, pour CNUM je ne sais pas s'il y a un équivalent direct ?

Bonjour,
Salut chris

S'il n'y a jamais de virgule en colonne E (sauf comme séparateur de milliers à corriger), ta formule peut être

=CNUM(SUBSTITUE(SUBSTITUE(SUBSTITUE(E2;",";"");UNICAR(8722);"-");UNICAR(160);""))

RE à tous

Là tu me surprends
=CNUM(SUBSTITUE(SUBSTITUE(E2;UNICAR(8722);"-");UNICAR(160);""))

est bien une formule Excel, non ?

Et pourtant j'ai répondu avant 2 h du mat Au temps pour moi.

C'est tellement simple de finir le boulot dans PQ que cela a du me perturber, lol

1 tricher pour obtenir le code

image

2 couper le code de la zone Remplacer par et coller le code dans la zone recherche

image

Pour le tiret cliquer dans une cellule le contenant : la valeur s'affiche sous la table. La copier coller pour l'utiliser dans un autre Remplacement

puis typer la colonne

Re,

@chris : découvert par hasard : suivant le principe que tu évoques (une cellule sélectionnée, contenant le fameux espace insécable) si on affiche la boîte de dialogue, le code #(00A0) apparaît entre les chiffres dans la zone Valeur à rechercher

image

... ne reste qu'à effacer les chiffres avant et après

RE

Oui sympa aussi cette astuce

Merci beaucoup @78chris et @U. Milité pour vos astuces

Suivant la méthode de Chris,

Sélection de la colonne Accroissement naturel puis Remplacer les valeurs

Dans la boîte de dialogue, je viens chercher Espace insécable dans Options avancées, le curseur restant dans "Valeur à rechercher", il m'affiche le code #(00A0), ok

Et voilà, les espaces insécables sont supprimés

Rechercher des sujets similaires à "power query aide conversion texte nombre"