I. Introduction
Des erreurs peuvent parfois apparaître dans les formules de calcul ou lors de l'exécution d'une macro.
L'erreur peut être la conséquence d'une saisie erronée, mais peut parfois aussi être inévitable: Exemple des formules dans un tableau de bord prérempli et complété à chaque fin de mois. Les cellules contenant des formules pour les prochains mois peuvent logiquement renvoyer une erreur car les données ne sont pas encore renseignées. De la même façon, une macro qui vérifie l'existence d'une feuille peut logiquement renvoyer une erreur si l'onglet n'existe pas.
Excel dispose de plusieurs outils qui permettent d'identifier et gérer ces erreurs. Il est intéressant de connaître la signification les codes d'erreur, de cerner la cause et pouvoir ainsi trouver une solution corrective plus facilement. C'est l'objet de ce tutoriel.
L'erreur peut être la conséquence d'une saisie erronée, mais peut parfois aussi être inévitable: Exemple des formules dans un tableau de bord prérempli et complété à chaque fin de mois. Les cellules contenant des formules pour les prochains mois peuvent logiquement renvoyer une erreur car les données ne sont pas encore renseignées. De la même façon, une macro qui vérifie l'existence d'une feuille peut logiquement renvoyer une erreur si l'onglet n'existe pas.
Excel dispose de plusieurs outils qui permettent d'identifier et gérer ces erreurs. Il est intéressant de connaître la signification les codes d'erreur, de cerner la cause et pouvoir ainsi trouver une solution corrective plus facilement. C'est l'objet de ce tutoriel.
II. Les formules
II-A. Les types d'erreurs
Un petit triangle vert, dans l'angle supérieur gauche, permet de visualiser rapidement les cellules contenant des erreurs.
Les formules Excel renvoient des valeurs d'erreur spécifiques en fonction du problème rencontré:
#NUL! :
Survient lorsque vous spécifiez une intersection de deux zones qui, en réalité, ne se coupent pas.
* Par exemple lors de l'utilisation d'un opérateur de plage incorrect (=SOMME(A1 A10)). Il manque les deux-points (:) dans la formule pour séparer la référence de la première cellule de la référence de la dernière cellule.
#DIV/0! :
Survient lorsqu'un nombre est divisé par zéro.
#VALEUR! :
Survient lorsqu'un argument ou un élément de la formule est inapproprié.
* Vous avez attribué une plage à un opérateur ou à une fonction qui exige une seule valeur et non pas une plage.
* Les éléments de la formule ne sont pas compatibles (Par exemple =10+"mimi" ).
* Il s'agit d'une formule matricielle qui doit être revalidée: Dans ce cas sélectionnez la cellule, touche F2 puis appuyez sur CTRL+MAJ+ENTRÉE.
* Les dimensions de la matrice sont incorrectes.
#REF! :
Survient lorsque les coordonnées d'une cellule ne sont pas valides.
* Lors de l'utilisation d'une liaison non valide (Vérifiez le format de la liaison ='C:\dossier\[NomClasseur.xls]NomFeuille'!$A$1).
* Lorsque la liaison vers une rubrique d'échange dynamique de données (DDE ou Dynamic Data Exchange) n'est pas disponible.
* Après la suppression ou le collage de cellules auxquelles d'autres formules font référence.
#NOM? :
Survient lorsque l'application ne reconnaît pas le texte dans une formule.
* Vérifiez l'existence et l'orthographe des cellules et plages nommées.
* Vérifiez l'existence et l'orthographe des fonctions utilisées.
* La formule contient une référence vers une fonction personnelle inexistante (Vérifiez que les fichiers xls ou xla contenant la fonction complémentaire sont bien ouverts.
* Vérifiez la présence deux points (:) nécessaires pour référencer une plage de cellules.
* Vérifiez que l'utilisation des étiquettes est bien autorisée:
Menu Outils/Options/Sélectionnez l'onglet "Calcul"/Cochez l'option "Accepter les étiquettes dans les formules."/Cliquez sur le bouton OK pour valider.
* Vérifiez que les textes sont encadrés par des guillemets (Par exemple =RECHERCHE("mimi";A:A)).
* Si la formule fait référence à des valeurs ou à des cellules d'autres feuilles de calcul ou d'autres classeurs dont le nom contient un caractère non alphabétique ou un espace,
vérifiez que vous avez bien placé une apostrophe (') de part et d'autre du nom (='Nom Feuille'!C9).
#NOMBRE! :
Survient si formule ou une fonction contient des valeurs numériques non valides.
* Lorsqu'un nombre est trop grand ou trop petit pour être représenté dans Excel. Les valeurs doivent être compris entre -1*10307 et 1*10307.
* Lorsqu'une fonction qui s'exécute par itération ne parvient pas à trouver un résultat.
Pour résoudre le problème, dans le menu Outils/Options/onglet "Calcul"/Cochez l'option "Itération".
* Lorsqu'un argument est incorrect dans une fonction qui exige un argument numérique.
#N/A :
Survient lorsqu'une valeur nécessaire au bon fonctionnement de la formule est manquante.
* Si la dimension des plages de cellules n'est pas identique dans les formule matricielles:
Par exemple, =SOMMEPROD((A1:A10="dvp")*(B1:B9="number one")) renvoie une erreur. Vous devez écrire: =SOMMEPROD((A1:A10="dvp")*(B1:B10="number one"))
* Si des cellules référencées dans la formule contiennent des valeurs #N/A ou NA().
* Si une fonction personnalisée n'est pas disponible.
* Si un argument obligatoire est absent, ou d'un type inapproprié dans la fonction.
* Si les fonctions RECHERCHEV, RECHERCHEH ou INDEX effectuent une recherche dans une ligne ou une colonne non triée.
Spécifiez la valeur FAUX dans le dernier argument de ces fonctions. Elles peuvent ainsi effectuer une recherche dans une ligne ou une colonne non triée.
#### :
* Survient lorsqu'une colonne n'est pas suffisamment large pour afficher la totalité d'une donnée numérique:
Modifiez tout simplement la largeur de la colonne afin de régler le problème.
* Survient lorsque les calculs sur les dates et les heures donnent des résultats négatifs.
Si vous utilisez le calendrier depuis 1900, les dates et les heures doivent impérativement être positives.
1ere solution. Modifiez le format de la cellule contenant la formule:
Clic droit dans la cellule/Format de cellule/ Onglet "Nombre"/Sélectionnez la catégorie "Standard" par exemple/Cliquez sur le bouton OK pour valider.
2eme solution. Passez en calendrier depuis 1904: Menu outils/Options/Onglet "Calcul"/Cochez l'option "Calendrier depuis 1904".
Les formules Excel renvoient des valeurs d'erreur spécifiques en fonction du problème rencontré:
#NUL! :
Survient lorsque vous spécifiez une intersection de deux zones qui, en réalité, ne se coupent pas.
* Par exemple lors de l'utilisation d'un opérateur de plage incorrect (=SOMME(A1 A10)). Il manque les deux-points (:) dans la formule pour séparer la référence de la première cellule de la référence de la dernière cellule.
#DIV/0! :
Survient lorsqu'un nombre est divisé par zéro.
#VALEUR! :
Survient lorsqu'un argument ou un élément de la formule est inapproprié.
* Vous avez attribué une plage à un opérateur ou à une fonction qui exige une seule valeur et non pas une plage.
* Les éléments de la formule ne sont pas compatibles (Par exemple =10+"mimi" ).
* Il s'agit d'une formule matricielle qui doit être revalidée: Dans ce cas sélectionnez la cellule, touche F2 puis appuyez sur CTRL+MAJ+ENTRÉE.
* Les dimensions de la matrice sont incorrectes.
#REF! :
Survient lorsque les coordonnées d'une cellule ne sont pas valides.
* Lors de l'utilisation d'une liaison non valide (Vérifiez le format de la liaison ='C:\dossier\[NomClasseur.xls]NomFeuille'!$A$1).
* Lorsque la liaison vers une rubrique d'échange dynamique de données (DDE ou Dynamic Data Exchange) n'est pas disponible.
* Après la suppression ou le collage de cellules auxquelles d'autres formules font référence.
#NOM? :
Survient lorsque l'application ne reconnaît pas le texte dans une formule.
* Vérifiez l'existence et l'orthographe des cellules et plages nommées.
* Vérifiez l'existence et l'orthographe des fonctions utilisées.
* La formule contient une référence vers une fonction personnelle inexistante (Vérifiez que les fichiers xls ou xla contenant la fonction complémentaire sont bien ouverts.
* Vérifiez la présence deux points (:) nécessaires pour référencer une plage de cellules.
* Vérifiez que l'utilisation des étiquettes est bien autorisée:
Menu Outils/Options/Sélectionnez l'onglet "Calcul"/Cochez l'option "Accepter les étiquettes dans les formules."/Cliquez sur le bouton OK pour valider.
* Vérifiez que les textes sont encadrés par des guillemets (Par exemple =RECHERCHE("mimi";A:A)).
* Si la formule fait référence à des valeurs ou à des cellules d'autres feuilles de calcul ou d'autres classeurs dont le nom contient un caractère non alphabétique ou un espace,
vérifiez que vous avez bien placé une apostrophe (') de part et d'autre du nom (='Nom Feuille'!C9).
#NOMBRE! :
Survient si formule ou une fonction contient des valeurs numériques non valides.
* Lorsqu'un nombre est trop grand ou trop petit pour être représenté dans Excel. Les valeurs doivent être compris entre -1*10307 et 1*10307.
* Lorsqu'une fonction qui s'exécute par itération ne parvient pas à trouver un résultat.
Pour résoudre le problème, dans le menu Outils/Options/onglet "Calcul"/Cochez l'option "Itération".
* Lorsqu'un argument est incorrect dans une fonction qui exige un argument numérique.
#N/A :
Survient lorsqu'une valeur nécessaire au bon fonctionnement de la formule est manquante.
* Si la dimension des plages de cellules n'est pas identique dans les formule matricielles:
Par exemple, =SOMMEPROD((A1:A10="dvp")*(B1:B9="number one")) renvoie une erreur. Vous devez écrire: =SOMMEPROD((A1:A10="dvp")*(B1:B10="number one"))
* Si des cellules référencées dans la formule contiennent des valeurs #N/A ou NA().
* Si une fonction personnalisée n'est pas disponible.
* Si un argument obligatoire est absent, ou d'un type inapproprié dans la fonction.
* Si les fonctions RECHERCHEV, RECHERCHEH ou INDEX effectuent une recherche dans une ligne ou une colonne non triée.
Spécifiez la valeur FAUX dans le dernier argument de ces fonctions. Elles peuvent ainsi effectuer une recherche dans une ligne ou une colonne non triée.
#### :
* Survient lorsqu'une colonne n'est pas suffisamment large pour afficher la totalité d'une donnée numérique:
Modifiez tout simplement la largeur de la colonne afin de régler le problème.
* Survient lorsque les calculs sur les dates et les heures donnent des résultats négatifs.
Si vous utilisez le calendrier depuis 1900, les dates et les heures doivent impérativement être positives.
1ere solution. Modifiez le format de la cellule contenant la formule:
Clic droit dans la cellule/Format de cellule/ Onglet "Nombre"/Sélectionnez la catégorie "Standard" par exemple/Cliquez sur le bouton OK pour valider.
2eme solution. Passez en calendrier depuis 1904: Menu outils/Options/Onglet "Calcul"/Cochez l'option "Calendrier depuis 1904".
II-B. L'aide à la résolution des erreurs
Vous pouvez utiliser l'aide Excel (F1) pour obtenir des informations très détaillées sur chaque type d'erreur.
Depuis Excel2002, une balise active apparaît lorsque vous sélectionnez une cellule qui contient une erreur.
Cliquez sur ce bouton pour afficher un menu d'aide à la résolution des problèmes.
Les options du menu sont adaptées au type d'erreur:
* Description du type d'erreur.
* Afficher l'aide Excel associée à l'erreur identifiée.
* Modifier la formule.
* Evaluer la formule.
* Masquer la balise et le petit triangle vert.
* Repérer les antécédents contenant des erreurs.
* Afficher la barre d'outils d'Audit des formules.
* Afficher la boîte de dialogue d'options pour la vérification des erreurs.
La barre d'outils d'Audit des formules propose aussi plusieurs outils pour identifier les erreurs.
(Menu Outils/Audit de formules/Afficher la barre d'outils)
Sélectionnez la cellule contenant la formule puis cliquez sur le bouton "Repérer les antécédents".
La commande dessine des flèches d'audit à partir des cellules qui fournissent directement des valeurs à la formule active (antécédents).
Une flèche rouge signifie que la cellule antécédente contient une erreur.
Pour repérer les formules qui fournissent indirectement les valeurs à la formule de la cellule active, cliquez à nouveau sur le bouton "Repérer les antécédents".
Cette commande dessine une flèche d'audit vers la cellule active, à partir des cellules spécifiées dans la formule, si cette dernière renvoie une erreur.
Evalue la formule étape par étape.
Identifie toutes les formules qui contiennent des valeurs non comprises dans les limites définies par le menu Données/Validation.
Le bouton "Vérification des erreurs" reprend les options d'aide sous forme d'une boîte de dialogue.
Les paramètres et les règles de vérification d'erreurs sont accessibles depuis le menu Outils/Options/Onglet "Vérification des erreurs".
Depuis Excel2002, une balise active apparaît lorsque vous sélectionnez une cellule qui contient une erreur.
Cliquez sur ce bouton pour afficher un menu d'aide à la résolution des problèmes.
Les options du menu sont adaptées au type d'erreur:
* Description du type d'erreur.
* Afficher l'aide Excel associée à l'erreur identifiée.
* Modifier la formule.
* Evaluer la formule.
* Masquer la balise et le petit triangle vert.
* Repérer les antécédents contenant des erreurs.
* Afficher la barre d'outils d'Audit des formules.
* Afficher la boîte de dialogue d'options pour la vérification des erreurs.
La barre d'outils d'Audit des formules propose aussi plusieurs outils pour identifier les erreurs.
(Menu Outils/Audit de formules/Afficher la barre d'outils)
Sélectionnez la cellule contenant la formule puis cliquez sur le bouton "Repérer les antécédents".
La commande dessine des flèches d'audit à partir des cellules qui fournissent directement des valeurs à la formule active (antécédents).
Une flèche rouge signifie que la cellule antécédente contient une erreur.
Pour repérer les formules qui fournissent indirectement les valeurs à la formule de la cellule active, cliquez à nouveau sur le bouton "Repérer les antécédents".
Cette commande dessine une flèche d'audit vers la cellule active, à partir des cellules spécifiées dans la formule, si cette dernière renvoie une erreur.
Evalue la formule étape par étape.
Identifie toutes les formules qui contiennent des valeurs non comprises dans les limites définies par le menu Données/Validation.
Le bouton "Vérification des erreurs" reprend les options d'aide sous forme d'une boîte de dialogue.
Les paramètres et les règles de vérification d'erreurs sont accessibles depuis le menu Outils/Options/Onglet "Vérification des erreurs".
II-C. Les formules pour gérer les erreurs
Excel dispose aussi de fonctions spécifiques pour identifier et gérer les erreurs.
ESTERR :
Renvoie VRAI si la cellule contient une erreur (autre que #NA).
=ESTERR(A1)
ESTERREUR :
Renvoie VRAI si la cellule contient une erreur (#NA compris).
=ESTERREUR(A1)
La fonction ESTERREUR, associée à une condition SI, permet de masquer les messages erreurs.
Cette formule affiche "" dans la cellule si la division A1/A2 renvoie une erreur:
=SI(ESTERREUR(A1/A2);"";A1/A2)
Un exemple pour additionner les valeurs d'une plage, dont certaines cellules contient des erreurs.
{=SOMME(SI(ESTERREUR(A1:A5);"";A1:A5))}
Formule à valider par Ctrl+Maj+Entree.
Utilisez les formats conditionnels pour masquer toutes les valeurs d'erreur dans une feuille:
Sélectionnez toutes les cellules, puis le Menu Format/Mise en forme conditionnelle.
Dans le champ "La formule est:", saisissez =ESTERREUR(A1)
Puis Format/Police/Sélectionnez la police blanche.
Cliquez sur le bouton OK dans les différentes boîtes de dialogue.
Les valeurs d'erreur sont désormais toutes masquées.
ESTNA :
Vérifie si la cellule contient une erreur type #N/A (Renvoie VRAI ou FAUX).
=ESTNA(A1)
TYPE.ERREUR :
Renvoie une valeur en fonction du type d'erreur dans la cellule.
=TYPE.ERREUR(A1)
#NUL!: renvoie 1
#DIV/0!: renvoie 2
#VALEUR!: renvoie 3
#REF!: renvoie 4
#NOM?: renvoie 5
#NOMBRE!: renvoie 6
#N/A: renvoie 7
La fonction renvoie #N/A si la cellule ne contient pas d'erreur.
NA :
Renvoie la valeur d'erreur #N/A dans la cellule contenant cette formule.
=NA()
La fonction NA permet de marquer les cellules vides et évite d'inclure involontairement des cellules vides dans les calculs.
Vous pouvez aussi saisir directement #N/A dans la cellule.
ESTERR :
Renvoie VRAI si la cellule contient une erreur (autre que #NA).
=ESTERR(A1)
ESTERREUR :
Renvoie VRAI si la cellule contient une erreur (#NA compris).
=ESTERREUR(A1)
La fonction ESTERREUR, associée à une condition SI, permet de masquer les messages erreurs.
Cette formule affiche "" dans la cellule si la division A1/A2 renvoie une erreur:
=SI(ESTERREUR(A1/A2);"";A1/A2)
Un exemple pour additionner les valeurs d'une plage, dont certaines cellules contient des erreurs.
{=SOMME(SI(ESTERREUR(A1:A5);"";A1:A5))}
Formule à valider par Ctrl+Maj+Entree.
Utilisez les formats conditionnels pour masquer toutes les valeurs d'erreur dans une feuille:
Sélectionnez toutes les cellules, puis le Menu Format/Mise en forme conditionnelle.
Dans le champ "La formule est:", saisissez =ESTERREUR(A1)
Puis Format/Police/Sélectionnez la police blanche.
Cliquez sur le bouton OK dans les différentes boîtes de dialogue.
Les valeurs d'erreur sont désormais toutes masquées.
ESTNA :
Vérifie si la cellule contient une erreur type #N/A (Renvoie VRAI ou FAUX).
=ESTNA(A1)
TYPE.ERREUR :
Renvoie une valeur en fonction du type d'erreur dans la cellule.
=TYPE.ERREUR(A1)
#NUL!: renvoie 1
#DIV/0!: renvoie 2
#VALEUR!: renvoie 3
#REF!: renvoie 4
#NOM?: renvoie 5
#NOMBRE!: renvoie 6
#N/A: renvoie 7
La fonction renvoie #N/A si la cellule ne contient pas d'erreur.
NA :
Renvoie la valeur d'erreur #N/A dans la cellule contenant cette formule.
=NA()
La fonction NA permet de marquer les cellules vides et évite d'inclure involontairement des cellules vides dans les calculs.
Vous pouvez aussi saisir directement #N/A dans la cellule.
III. Les macros
III-A. Comment gérer les erreurs
Les erreurs d'exécution se produisent lorsqu'une instruction tente d'accomplir une opération non valide.
Chaque erreur d'exécution provoque l'arrêt des macros. La ligne incriminée est surlignée en jaune et un message d'alerte s'affiche à l'écran.
Le numéro d'erreur ainsi qu'une description courte s'affichent dans la boîte de dialogue.
Le bouton Fin permet de sortir immédiatement de la procédure.
Le bouton Débogage ferme le message d'alerte et affiche la ligne qui a déclenché l'erreur.
Le bouton Aide ouvre l'aide associée au code d'erreur.
L'application dispose d'un gestionnaire d'erreurs pour prendre en compte ce genre de désagréments.
C'est l'instruction On Error qui valide la gestion d'erreur. Le gestionnaire est ensuite activé lorsque survient une erreur.
Chaque erreur d'exécution provoque l'arrêt des macros. La ligne incriminée est surlignée en jaune et un message d'alerte s'affiche à l'écran.
Le numéro d'erreur ainsi qu'une description courte s'affichent dans la boîte de dialogue.
Le bouton Fin permet de sortir immédiatement de la procédure.
Le bouton Débogage ferme le message d'alerte et affiche la ligne qui a déclenché l'erreur.
Le bouton Aide ouvre l'aide associée au code d'erreur.
L'application dispose d'un gestionnaire d'erreurs pour prendre en compte ce genre de désagréments.
C'est l'instruction On Error qui valide la gestion d'erreur. Le gestionnaire est ensuite activé lorsque survient une erreur.
III-A-1. On Error GoTo
Effectue un branchement vers une ligne spécifiée. Par exemple On Error goTo errorHandler
Cette instruction indique l'emplacement de la procédure qui gère les erreurs. Lorsqu'une erreur survient, l'exécution de la macro se déplace automatiquement jusqu'à cette ligne: errorHandler, dans l'exemple ci dessous.
On Error GoTo errorHandler doit être placé juste après la déclaration des variables, ou au moins avant la première ligne de procédure risquant de provoquer une erreur.
errorHandler: doit être placé en fin de procédure, éventuellement précédé par l'instruction Exit Sub.
Cette instruction indique l'emplacement de la procédure qui gère les erreurs. Lorsqu'une erreur survient, l'exécution de la macro se déplace automatiquement jusqu'à cette ligne: errorHandler, dans l'exemple ci dessous.
On Error GoTo errorHandler doit être placé juste après la déclaration des variables, ou au moins avant la première ligne de procédure risquant de provoquer une erreur.
errorHandler: doit être placé en fin de procédure, éventuellement précédé par l'instruction Exit Sub.
Vba |
|
S'il n'y a pas de problème, la macro suit son cours et se termine par l'instruction Exit Sub. Dans le cas contraire, la macro va directement à la ligne errorHandler: pour gérer l'erreur.
Vous pouvez aussi ajouter l'instruction Resume si vous souhaitez reprendre l'exécution au niveau de la ligne à l'origine de l'erreur:
Vba |
|
III-A-2. On Error GoTo 0
Invalide le gestionnaire d'erreurs précédemment créé par l'instruction On Error Goto.
Chaque erreur d'exécution provoque l'arrêt des macros, après la ligne On Error GoTo 0.
Dans l'exemple suivant, le gestionnaire d'erreur joue son rôle jusqu'à la ligne On Error GoTo 0. Ensuite la division par zéro fait planter la procédure.
Chaque erreur d'exécution provoque l'arrêt des macros, après la ligne On Error GoTo 0.
Dans l'exemple suivant, le gestionnaire d'erreur joue son rôle jusqu'à la ligne On Error GoTo 0. Ensuite la division par zéro fait planter la procédure.
Vba |
|
III-A-3. On Error Resume Next
Permet de continuer la procédure et passe directement à la ligne suivante, en cas d'erreur.
Cette instruction est pratique pour contourner une ligne pouvant poser problème.
Par exemple, lorsque vous vérifiez l'existence d'une feuille dans le classeur:
Cette instruction est pratique pour contourner une ligne pouvant poser problème.
Par exemple, lorsque vous vérifiez l'existence d'une feuille dans le classeur:
Vba |
|
Cette instruction doit être employée avec prudence car elle masque tous les bugs qui peuvent survenir dans la procédure. Vous ne recevrez aucune information pour localiser une erreur qui pourrait avoir une influence sur le résultat final de votre macro. Utilisez On Error Resume Next seulement si vous ne pouvez pas faire autrement, ou de façon ciblée sur une ligne précise (Comme dans l'exemple précédent).
III-B. Description de l'objet Err
L'objet Err contient des informations sur les erreurs d'exécution. Lorsqu'une erreur se produit, les propriétés de l'objet Err stockent d'une part des informations qui identifient l'erreur et d'autre part des informations permettant de gérer cette erreur.
III-B-1. Clear
La méthode Clear réinitialise le contenu de l'objet Err à la suite du traitement d'une erreur.
Les propriétés de l'objet Err sont alors remises à zéro ou remplacées par des chaînes de longueur nulle.
La méthode Clear est appelée automatiquement dès que l'une des instructions suivantes est exécutée:
* Tout type d'instruction Resume.
* Exit Sub, Exit Function ou Exit Property.
* Toute instruction On Error.
Si la méthode Clear n'était pas utilisée dans l'exemple suivant, le message s'afficherait à chaque tour de boucle après le déclenchement de la première erreur.
Les propriétés de l'objet Err sont alors remises à zéro ou remplacées par des chaînes de longueur nulle.
La méthode Clear est appelée automatiquement dès que l'une des instructions suivantes est exécutée:
* Tout type d'instruction Resume.
* Exit Sub, Exit Function ou Exit Property.
* Toute instruction On Error.
Si la méthode Clear n'était pas utilisée dans l'exemple suivant, le message s'afficherait à chaque tour de boucle après le déclenchement de la première erreur.
Vba |
|
III-B-2. Description
La propriété Description renvoie ou définit un chaîne de caractères qui correspond à une courte description de l'erreur.
Vba |
|
III-B-3. HelpFile
La propriété HelpFile renvoie ou définit le chemin d'accès complet à un fichier d'aide.
Vba |
|
III-B-4. HelpContext
La propriété HelpContext renvoie ou définit l'identificateur de contexte associé à une rubrique d'un fichier d'aide.
Cette propriété permet d'afficher automatiquement la rubrique indiquée dans la propriété HelpFile. Si les deux propriétés HelpFile et HelpContext sont vides, la valeur de la propriété Number est vérifiée. Si la valeur de la propriété Number correspond à la valeur d'une erreur d'exécution Visual Basic, l'identificateur de contexte de l'aide Visual Basic pour cette erreur est utilisé. Si la valeur de la propriété Number ne correspond pas à une erreur Visual Basic, l'écran Sommaire du fichier d'aide Visual Basic s'affiche.
Cette propriété permet d'afficher automatiquement la rubrique indiquée dans la propriété HelpFile. Si les deux propriétés HelpFile et HelpContext sont vides, la valeur de la propriété Number est vérifiée. Si la valeur de la propriété Number correspond à la valeur d'une erreur d'exécution Visual Basic, l'identificateur de contexte de l'aide Visual Basic pour cette erreur est utilisé. Si la valeur de la propriété Number ne correspond pas à une erreur Visual Basic, l'écran Sommaire du fichier d'aide Visual Basic s'affiche.
Vba |
|
III-B-5. LastDllError
La propriété LastDllError renvoie un code d'erreur système produit lors de l'appel d'une bibliothèque de Liaisons Dynamiques (DLL).
L'exemple suivant, adapté de l'aide MSDN, montre comment utiliser la propriété LastDllError après avoir appelé une fonction dans l'API Windows. La procédure PrintWindowCoordinates recherche la position d'une fenêtre à partir de son Handle, en appellant la fonction GetWindowRect. Si vous passez un Handle qui n'est pas valide, une erreur se produit, laissant apparaître le numéro d'erreur via la propriété LastDllError. La fonction LastDLLErrorDescription permet de retrouver la description associée à la valeur d'erreur.
L'exemple suivant, adapté de l'aide MSDN, montre comment utiliser la propriété LastDllError après avoir appelé une fonction dans l'API Windows. La procédure PrintWindowCoordinates recherche la position d'une fenêtre à partir de son Handle, en appellant la fonction GetWindowRect. Si vous passez un Handle qui n'est pas valide, une erreur se produit, laissant apparaître le numéro d'erreur via la propriété LastDllError. La fonction LastDLLErrorDescription permet de retrouver la description associée à la valeur d'erreur.
Vba |
|
III-B-6. Number
La propriété Number renvoie ou définit une valeur numérique spécifique en fonction du type d'erreur. Il s'agit de la propriété par défaut de l'objet Err.
Consultez le chapitre III-D-1 si vous souhaitez lister les codes d'erreurs définis dans Excel.
L'exemple suivant lit le commentaire de la cellule A1. La procédure renvoie une erreur 91 si le commentaire n'existe pas.
Consultez le chapitre III-D-1 si vous souhaitez lister les codes d'erreurs définis dans Excel.
L'exemple suivant lit le commentaire de la cellule A1. La procédure renvoie une erreur 91 si le commentaire n'existe pas.
Vba |
|
III-B-7. Raise
La méthode Raise est utilisée pour générer une erreur d'exécution dans la macro.
La syntaxe: Err.Raise Number, Source, Description, HelpFile, HelpContext
Number:
Identifie la nature de l'erreur. La plage de 0 à 512 est réservée aux erreurs système. La plage de 513 à 65535 est disponible pour les erreurs définies par l'utilisateur.
Source:
(Facultatif) Nomme l'objet ou l'application à l'origine de l'erreur.
Description:
(Facultatif) Spécifie la chaîne de caractères qui décrit l'erreur.
HelpFile:
(Facultatif) Définit le chemin d'accès complet au fichier d'aide associé à cette erreur.
Si ce chemin n'est pas indiqué, la procédure adopte le fichier d'aide de Visual Basic.
Consultez le tutoriel de ThierryAIM pour créer vos fichiers d'aide .chm.
HelpContext:
(Facultatif) Désigne l'identificateur de contexte contenu dans le fichier d'aide.
Cet exemple vérifie le contenu d'un InputBox et crée une gestion d'erreur personnalisée en fonction des données saisies:
La syntaxe: Err.Raise Number, Source, Description, HelpFile, HelpContext
Number:
Identifie la nature de l'erreur. La plage de 0 à 512 est réservée aux erreurs système. La plage de 513 à 65535 est disponible pour les erreurs définies par l'utilisateur.
Source:
(Facultatif) Nomme l'objet ou l'application à l'origine de l'erreur.
Description:
(Facultatif) Spécifie la chaîne de caractères qui décrit l'erreur.
HelpFile:
(Facultatif) Définit le chemin d'accès complet au fichier d'aide associé à cette erreur.
Si ce chemin n'est pas indiqué, la procédure adopte le fichier d'aide de Visual Basic.
Consultez le tutoriel de ThierryAIM pour créer vos fichiers d'aide .chm.
HelpContext:
(Facultatif) Désigne l'identificateur de contexte contenu dans le fichier d'aide.
Cet exemple vérifie le contenu d'un InputBox et crée une gestion d'erreur personnalisée en fonction des données saisies:
Vba |
|
III-B-8. Source
La propriété Source renvoie ou définit une chaîne de caractères indiquant le nom de l'objet ou de l'application qui a généré l'erreur.
III-C. La fonction ERL
La fonction ERL permet de récupérer le numéro de ligne qui a provoqué une erreur dans la macro.
Vous devez avoir préalablement numéroté les lignes de procédure dans l'éditeur de macros.
Vous devez avoir préalablement numéroté les lignes de procédure dans l'éditeur de macros.
Vba |
|
Si la ligne x = 5 / 0 n'est pas numérotée, la fonction ERL renvoie le numéro de la derniere ligne précédant l'erreur (6 dans l'exemple précédent).
ERL renvoie 0 s'il n'y a pas d'erreur dans la procedure.
ERL renvoie 0 si aucune ligne n'est numérotée dans la macro.
Il existe des outils gratuits, tel que MZ-Tools, qui vous aideront à numéroter les lignes de macros très facilement.
III-D. Divers
III-D-1. Lister les codes d'erreurs dans une feuille de calcul
Les codes d'erreurs récupérables sont stockés dans le fichier d'aide VbLR6.chm (Excel2002).
Cette macro liste dans une feuille de calcul les numéros d'erreur, les descriptions, Les chemins du fichier d'aide et leur index.
Cette macro liste dans une feuille de calcul les numéros d'erreur, les descriptions, Les chemins du fichier d'aide et leur index.
Vba |
|
Vous pouvez ensuite placer cette deuxième macro dans le module objet de la feuille de calcul qui contient la liste les codes d'erreurs précédemment créée.
Vba |
|
Désormais, la rubrique d'aide s'affiche si vous double cliquez sur une des lignes contenant les codes d'erreur.
III-D-2. Identifier automatiquement l'apparition des erreurs dans la feuille de calcul
Cette procédure évènementielle Worksheet_Calculate affiche un message d'alerte dès qu'une formule provoque une erreur.
Une option permet d'ouvrir l'aide Excel.
Une option permet d'ouvrir l'aide Excel.
Vba |
|
Placez cette macro dans un module standard pour supprimer les flèches d'audit:
(Ou Menu Outils/Audit de formules/Supprimer toutes les flèches)
Vba |
|
III-D-3. Retrouver les cellules qui contiennent des erreurs
La macro suivante retrouve les cellules qui contiennent des erreurs dans la plage spécifiée.
Vba |
|
III-D-4. La fonction Error
La fonction Error renvoie le message correspondant au numéro d'erreur spécifié.
Si le numéro d'erreur n'est pas valide, une erreur se produit. Si le numéro d'erreur est omis, le message correspondant à l'erreur d'exécution la plus récente est renvoyé. Si aucune erreur d'exécution n'est survenue, ou si la valeur est égale à 0, la fonction Error renvoie une chaîne de longueur nulle ("").
La chaîne renvoyée par la fonction Error correspond à la propriété "Description" de l'objet Err.
Si le numéro d'erreur n'est pas valide, une erreur se produit. Si le numéro d'erreur est omis, le message correspondant à l'erreur d'exécution la plus récente est renvoyé. Si aucune erreur d'exécution n'est survenue, ou si la valeur est égale à 0, la fonction Error renvoie une chaîne de longueur nulle ("").
La chaîne renvoyée par la fonction Error correspond à la propriété "Description" de l'objet Err.
Vba |
|
III-D-5. La fonction IsError
La fonction IsError renvoie une valeur de type Boolean qui indique si l'expression spécifiée est une valeur d'erreur.
Vba |
|
III-D-6. La fonction CVErr
La fonction CVErr renvoie une donnée de type Variant et de sous-type Error contenant un numéro d'erreur spécifié par l'utilisateur.
Cet exemple supprime la ligne complète si une cellule de la colonne A contient une erreur type #DIV/0!.
Cet exemple supprime la ligne complète si une cellule de la colonne A contient une erreur type #DIV/0!.
Vba |
|
Aucun commentaire:
Enregistrer un commentaire