Gestion du #N/A

Résolu
sransac Messages postés 11 Date d'inscription dimanche 26 novembre 2000 Statut Membre Dernière intervention 3 avril 2016 - 16 juil. 2007 à 17:59
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 16 juil. 2007 à 23:46
 bonjour

J'avais posé la question dans la rubrique débutant, mais on m'a dit que c'était dnas cette rubrique que je devais la poser.
La voici donc !

dans une macro de Excel, je teste le contenu d'une cellule par
     If ActiveCell.Value = "VAL" Then ...

cependant, il arrive de temps à autre que la cellule contienne une erreur sous la forme #N/A et dans ce cas j'ai une erreur à l'exécution de la macro quand elle arrive sur ces cellules

j'ai bien essayé de traiter l'information avec
  If ActiveCell.Value = "#N/A" Then ...
mais cela ne marche pas, j'ai toujours l'erreur à l'exécution quand je tombe sur ces cellules

Naturellement, je ne peux pas modifier la formule contenu dans la cellule pour lui faire gérer les erreurs car le résultat "erreur" fait partie des valeurs voulues en sortie et est traiter dans ailleurs dans d'autres cellules et d'autres feuilles du classeur.
Comment prendre en compte l'erreur dans la macro ?

Merci

4 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 juil. 2007 à 18:11
#N/A n'est pas un texte mais un erreur
Je te suggère donci :

If IsError (Range...........) = False Then
   .....
End If

ou (selon ton test)

If not Iserror (range....) then
 -----

end if

A titre informatif :

xlErrDiv0 2007 #DIV/0!
XlErrNA 2042 #N/A
xlErrName 2029 #NAME ?
XlErrNull 2000 #NULL!
XlErrNum 2036 #NUM!
XlErrRef 2023 #REF!
XlErrValue 2015 #VALUE!

Je ne connais pas Excel mais tu dois pouvoir te servir de ces identificateurs, si tu veux affiner)

Reste (je te l'ai dit dans ton autre discussion, qu'il serait préférable de corriger les formules elles-mêmes).
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 juil. 2007 à 18:20
Re,

Ceci étant dit, mes souvenirs très lointains d'Excel et de ses forules (je parle là d'EXCEL et non de son VBA), me font penser qu'il suffit de modifier tes formules par une condition mise devant ===>> et si condition là : ===>> autre traitement

quelque chose du genre :

: ESTERR (pour tester les valeurs d'erreur sauf #N/A) et ESTNA (popur terster la valeur d'erreur #N/A).

Devrait ressembler à ceci :

= SI(ESTNA(taformule);"";taformule)

Ceci serait à mon avis beaucoup plus propre que d'aller tester ensuite par VBA.

Reste que ce ne sont que des souvenirs !!!
A voir si passe par là un connaisseurs des formules d'Excel pour t'y aider (ce n'est pas du VBA mais du Excel).
0
sransac Messages postés 11 Date d'inscription dimanche 26 novembre 2000 Statut Membre Dernière intervention 3 avril 2016
16 juil. 2007 à 18:37
dans un premier temps je vais gérer dans la macro car j'ai vu que la modification de la formule en ajoutant la condition d'erreur à un impact important sur le reste du classeur dans lequel l'erreur est utilisée comme entrée dans d'autres formules

merci pour les infos
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
16 juil. 2007 à 23:46
JMF, tu m'impressionnes pour quelqu'un qui n'a pas (plus) Excel ... tu as une bonne mémoire.
ESTNA est bien utilisé pour vérifier les erreurs de ce type.
ESTERR ne gère pas le #N/A, effectivement
et ESTERREUR est celle qui sert à gérer toutes les erreurs incluant le #N/A.

MPi
0
Rejoignez-nous