Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 langage powerquery

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JPaul78

XLDnaute Junior
Bonjour à tous,
je réalise, dans une requête powerquery, un nettoyage de la colonne [Energie] de la façon suivante:
PowerQuery:
Table.AddColumn(#"Nom du mois inséré", "Energie_Modif", each if [Energie] = "Essence" then "Essence" else if [Energie] = "Gazole" then "Gazole" else if Text.Contains([Energie], "GPL") then "GPL" else if Text.Contains([Energie], "gaz") then "GPL" else if [Energie] = "Electricité" then "Electricité" else if Text.Contains([Energie], "hybride") then "Hybride" else if Text.Contains([Energie], "Superéthanol") then "Essence" else if [Energie] = null then null else null)

Mais cela me retourne error ald null lorsque la cellule [Energie] est vide malgré l'ajout "else if [Energie] = null then null" alors que le dernier "else" devrait transformer cela en "null". et comme j'ai un autre traitement après, cela dysfonctionne.
Y a-t-il une solution? Comment peut-on traiter les cellules vide? y a -t-il possibilité de traiter une erreur dans ce langage?
Par avance merci de votre aide
 
Solution
Bonjour
Il y a un ordre à respecter :
  1. null en premier car Text.Contains reverra une erreur
  2. = en 2ème car risque d'imbrication : gazole contient gaz
  3. Text.Contains en dernier et dans ce cas il faut gérer la casse
VB:
if [Energie] = null then null else if [Energie] ="Essence" then "Essence" else if [Energie] = "Gazole" then "Gazole" else if [Energie] = "Electricité" then "Electricité" else if Text.Contains([Energie], "GPL") then "GPL" else if Text.Contains(Text.Lower([Energie]), "gaz") then "GPL" else if Text.Contains(Text.Lower([Energie]), "hybride") then "Hybride" else if Text.Contains(Text.Lower([Energie]), "superéthanol") then "Essence" else null
ou plus optimisé
Code:
if [Energie] = null then null else if [Energie] ="Essence" or [Energie] = "Gazole" or [Energie] = "Electricité" then...
Bonjour
Il y a un ordre à respecter :
  1. null en premier car Text.Contains reverra une erreur
  2. = en 2ème car risque d'imbrication : gazole contient gaz
  3. Text.Contains en dernier et dans ce cas il faut gérer la casse
VB:
if [Energie] = null then null else if [Energie] ="Essence" then "Essence" else if [Energie] = "Gazole" then "Gazole" else if [Energie] = "Electricité" then "Electricité" else if Text.Contains([Energie], "GPL") then "GPL" else if Text.Contains(Text.Lower([Energie]), "gaz") then "GPL" else if Text.Contains(Text.Lower([Energie]), "hybride") then "Hybride" else if Text.Contains(Text.Lower([Energie]), "superéthanol") then "Essence" else null
ou plus optimisé
Code:
if [Energie] = null then null else if [Energie] ="Essence" or [Energie] = "Gazole" or [Energie] = "Electricité" then [Energie] else if Text.Contains([Energie], "GPL") or Text.Contains(Text.Lower([Energie]), "gaz") then "GPL" else if Text.Contains(Text.Lower([Energie]), "hybride") then "Hybride" else if Text.Contains(Text.Lower([Energie]), "superéthanol") then "Essence" else null

Il peut aussi être intéressant de travailler avec une table de conversion
 
Dernière édition:
Merci beaucoup Chris tes solutions fonctionnent impec! Pourrais-tu m'en dire un peut plus sur les tables de conversion? Merci
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Réponses
16
Affichages
1 K
Réponses
2
Affichages
641
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…