Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
À l’instar de la façon dont Excel et le langage DAX ont une IFERROR fonction, Power Query a sa propre syntaxe pour tester et intercepter les erreurs.
Comme mentionné dans l’article sur la gestion des erreurs dans Power Query, les erreurs peuvent apparaître au niveau de l’étape ou de la cellule. Cet article se concentre sur la façon dont vous pouvez intercepter et gérer les erreurs en fonction de votre propre logique spécifique.
Remarque
Pour illustrer ce concept, cet article utilise un classeur Excel comme source de données. Les concepts présentés ici s’appliquent à toutes les valeurs de Power Query et non seulement celles provenant d’un classeur Excel.
L’exemple de source de données pour cette démonstration est un classeur Excel avec le tableau suivant.
Ce tableau d’un classeur Excel contient des erreurs Excel telles que #NULL !, #REF !, et #DIV/0 ! dans la colonne Taux standard . Lorsque vous importez cette table dans l’éditeur Power Query, l’image suivante montre comment elle ressemble.
Notez comment les erreurs du classeur Excel sont affichées avec la [Error] valeur dans chacune des cellules.
Dans cet article, vous allez apprendre à remplacer une erreur par une autre valeur. En outre, vous apprenez également à intercepter une erreur et à l’utiliser pour votre propre logique spécifique.
Fournir une autre valeur lors de la recherche d’erreurs
Dans ce cas, l’objectif est de créer une colonne Taux final dans l’exemple de source de données qui utilise les valeurs de la colonne Taux standard . En cas d’erreur, elle utilise la valeur de la colonne Taux spécial correspondante.
Pour créer une colonne personnalisée, accédez au menu Ajouter une colonne et sélectionnez Colonne personnalisée. Dans la fenêtre Colonne personnalisée , entrez la formule try [Standard Rate] otherwise [Special Rate]. Nommez cette nouvelle colonne Final Rate.
Cette formule tente d’évaluer la colonne Taux standard et génère sa valeur si aucune erreur n’est trouvée. Si des erreurs sont détectées dans la colonne Taux standard , la sortie est la valeur définie après l’instruction otherwise , qui, dans ce cas, est la colonne Taux spécial .
Après avoir ajouté les types de données corrects à toutes les colonnes du tableau, l’image suivante montre comment la table finale ressemble.
Remarque
En guise d’approche alternative, vous pouvez également entrer la formule try [Standard Rate] catch ()=> [Special Rate], qui équivaut à la formule précédente, mais en utilisant le mot clé catch avec une fonction qui ne nécessite aucun paramètre.
Le catch mot clé a été introduit dans Power Query en mai 2022.
Fournir votre propre logique d’erreur conditionnelle
À l’aide de l’exemple de source de données que la section précédente, le nouvel objectif est de créer une colonne pour le taux final. Si la valeur du taux standard existe, cette valeur est utilisée. Sinon, la valeur de la colonne Taux spécial est utilisée, à l’exception des lignes avec une #REF! erreur.
Remarque
L’unique objectif de l’exclusion de l’erreur #REF! est à des fins de démonstration. Avec les concepts présentés dans cet article, vous pouvez cibler tous les champs de votre choix à partir de l’enregistrement d’erreur.
Lorsque vous sélectionnez un espace blanc en regard de la valeur d’erreur, vous obtenez le volet d’informations en bas de l’écran. Le volet d’informations contient à la fois la raison de l’erreur et DataFormat.Errorle message d’erreur : Invalid cell value '#REF!'
Vous ne pouvez sélectionner qu’une seule cellule à la fois. Vous pouvez donc examiner efficacement les composants d’erreur d’une seule valeur d’erreur à la fois. À ce stade, vous créez une colonne personnalisée et utilisez l’expression try .
Utiliser try avec une logique personnalisée
Pour créer une colonne personnalisée, accédez au menu Ajouter une colonne et sélectionnez Colonne personnalisée. Dans la fenêtre Colonne personnalisée , entrez la formule try [Standard Rate]. Nommez cette nouvelle colonne Toutes les erreurs.
L’expression try convertit les valeurs et les erreurs en valeur d’enregistrement qui indique si l’expression try a géré une erreur ou non, ainsi que la valeur appropriée ou l’enregistrement d’erreur.
Vous pouvez développer cette colonne nouvellement créée avec des valeurs d’enregistrement et examiner les champs disponibles à développer en sélectionnant l’icône en regard de l’en-tête de colonne.
Cette opération expose trois nouveaux champs :
- Toutes les erreurs.HasError indiquent si la valeur de la colonne Taux standard a eu une erreur ou non.
-
Toutes les erreurs.Valeur : si la valeur de la colonne Taux standard n’a pas d’erreur, cette colonne affiche la valeur de la colonne Taux standard . Pour les valeurs avec des erreurs, ce champ n’est pas disponible et, pendant l’opération de développement, cette colonne contient des valeurs
null. -
Toutes les erreurs.Erreur : si la valeur de la colonne Taux standard a eu une erreur, cette colonne affiche l’enregistrement d’erreur de la valeur de la colonne Taux standard . Pour les valeurs sans erreur, ce champ n'est pas disponible et, lors de l'opération de développement, cette colonne contient des valeurs
null.
Pour une investigation plus approfondie, vous pouvez développer la colonne All Errors.Error pour obtenir les trois composants de l’enregistrement d’erreur :
- Motif de l’erreur
- Message d'erreur
- Détails de l’erreur
Après avoir effectué l’opération de développement, le champ All Errors.Error.Message affiche le message d’erreur spécifique qui vous indique exactement quelle erreur Excel a chaque cellule. Le message d’erreur est dérivé du champ Message d’erreur de l’enregistrement d’erreur.
Maintenant, avec chaque message d’erreur dans une nouvelle colonne, vous pouvez créer une colonne conditionnelle avec le nom Final Rate et les clauses suivantes :
- Si la valeur de la colonne All Errors.Error.Message est égale
null, la sortie est la valeur de la colonne Taux standard . - Sinon, si la valeur de la colonne All Errors.Error.Message n’est pas égale
Invalid cell value '#REF!'., la sortie est la valeur de la colonne Taux spécial . - Sinon, nul.
Après avoir conservé uniquement les colonnes Compte, Taux standard, Taux spécial et Taux final , et ajout du type de données correct pour chaque colonne, l’image suivante montre à quoi ressemble la table finale.
Utiliser try et catch avec une logique personnalisée
Vous pouvez également créer une nouvelle colonne personnalisée en utilisant les mots clés try et catch.
try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null