Lire en anglais

Partager via


Gestion des erreurs

Tout comme Excel et le langage DAX possèdent une fonction IFERROR, 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.

Notes

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 uniquement à celles provenant d’un classeur Excel.

L’exemple de source de données de cette démonstration est un classeur Excel avec le tableau suivant.

Capture d’écran d’exemples de données d’un classeur Excel contenant trois erreurs.

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 à quoi elle ressemble.

Capture d’écran de l’exemple de table chargée dans Power Query.

Notez comment les erreurs du classeur Excel sont affichées avec la valeur [Error] dans chacune des cellules.

Dans cet article, vous apprenez à 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 nouvelle colonne Taux final qui utilise les valeurs de la colonne Taux standard. S’il existe des erreurs, elle utilise la valeur de la colonne de Taux spécial correspondant.

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 ce nouveau Taux final de colonne.

Capture d’écran avec la boîte de dialogue de la Colonne personnalisée ouverte et une formule essayer autrement entrée dans la colonne personnalisée.

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 trouvé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 ce à quoi la table finale ressemble.

Capture d’écran de la table avec les erreurs de taux standard remplacées par le taux spécial dans la colonne Taux final.

Notes

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 mot clé catch 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 comme dans 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, alors cette valeur est utilisée. Sinon, la valeur de la colonne Tarif spécial est utilisée, à l’exception des lignes ayant une erreur #REF!.

Notes

Le seul 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 l’un des espaces blancs 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 DataFormat.Error et le message d’erreur Invalid cell value '#REF!':

Capture d’écran de l’erreur sélectionnée, avec un message d’erreur en bas de la boîte de dialogue.

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. C’est à ce stade que 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.

Capture d’écran avec la boîte de dialogue de la Colonne personnalisée ouverte et une formule essayer entrée dans la colonne personnalisée.

L’expression try convertit les valeurs et les erreurs en une valeur d’enregistrement qui indique si l’expression try a géré une erreur ou non, de même que la valeur appropriée ou l’enregistrement d’erreur.

Capture d’écran de la table avec la colonne Toutes les erreurs ajoutées et les erreurs affichées en tant qu’enregistrements.

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.

Capture d’écran de la colonne Toutes les erreurs avec l’icône développer mis en évidence et les cases HasError, Valeur et Erreur sélectionnées.

Cette opération expose trois nouveaux champs :

  • All Errors.HasError indique si la valeur de la colonne Taux standard a une erreur ou non.
  • All Errors.Value : 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 comportera les valeurs null.
  • All Errors.Error : si la valeur de la colonne Taux standard a une erreur, cette colonne affiche l’enregistrement de l’erreur pour la valeur de la colonne Taux standard. Pour les valeurs sans erreur, ce champ n’est pas disponible, et pendant l’opération de développement, cette colonne comportera les valeurs null.

Capture d’écran de la table avec les nouveaux champs dans les colonnes, avec une valeur All.Errors.Error sélectionnée, et affichant les messages d’erreur sous la table.

Pour plus d’informations, 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étail d’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 possède chaque cellule. Le message d’erreur est dérivé du champ Message d’erreur de l’enregistrement d’erreur.

Capture d’écran avec les messages d’erreur spécifiques affichés.

Maintenant, avec chaque message d’erreur dans une nouvelle colonne, vous pouvez créer une colonne conditionnelle avec le nom Taux final et les clauses suivantes :

  • Si la valeur de la colonne All Errors.Errors.Message est égale à null, la sortie sera la valeur de la colonne Taux standard.
  • Sinon, si la valeur dans la colonne All Errors.Errors.Message n’est pas égale Invalid cell value '#REF!'., la sortie est la valeur de la colonne Taux spécial.
  • Sinon, vide.

Capture d’écran de la boîte de dialogue Ajouter une colonne conditionnelle avec l’ensemble des conditions d’erreur définie pour la nouvelle colonne.

Après avoir conservé uniquement les colonnes Compte, Taux standard, Taux spécialet Taux final, et ajouté du type de données correct pour chaque colonne, l’image suivante montre à quoi ressemble la table finale.

Capture d’écran de la table finale avec les colonnes restantes avec les types de données appropriés.

Utiliser try et catch avec une logique personnalisée

Vous pouvez également créer une colonne personnalisée à l’aide des mots clés try et catch.

try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null

Personnaliser la boîte de dialogue de la colonne avec une nouvelle formule illustrant l’approche de syntaxe essayer et intercepter.

Plus de ressources