Remplacer #N/A par 0

Résolu
Dan -  
 Dan -
Bonjour,

Alors, je sais vous allez me dire, << Il y a plein de réponses sur le sujet >>
Mais je les ai toutes essayées, et AUCUNE ne fonctionnent.
Voici mon problème.
J'ai deux fichiers liés.
Le premier s'appelle PDS, là où il y a la formule.
L'autre s'appelle ZAF, là où Excel va chercher le résultat.
Voilà la formule que j'ai faite et qui, lorsqu'elle ne trouve pas de correspondance, affiche #N/A.
Et à la place je voudrai voir afficher 0.
=INDEX(ZAF_ANALYSIS_PATTERN.xls!G$1:G$50000;EQUIV(A23;ZAF_ANALYSIS_PATTERN.xls!D$1:D$50000;0))

J'ai essauyé avec :
si(....=#N/A;0)
estna
esterreur
IMPOSSIBLE.

A tous merci de votre aide
A voir également:

10 réponses

Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Bonjour,

pour commencer pourquoi as tu mis une extension Excel dans le nom de ta feuille ZAF_ANALYSIS_PATTERN.xls
ZAF_ANALYSIS_PATTERN suffit largement

ensuite déclare la formule en matricielle, pour la valider il faut l'activer soit double clic ou simple clic et clic sur la formule dans la barre des formules et cliquer en même temps sur les trois touches du clavier Ctrl, Shift et Entrée
Si tu fais bien la formule se placera entre ces accolades {}

Pour gérer le message d'erreur #N/A avant de confirmer ta formule en matricielle et si ta version Excel est supérieure ou égale à 2007 écrire la formule

=SIERREUR(INDEX(ZAF_ANALYSIS_PATTERN.xls!G$1:G$50000;EQUIV(A23;ZAF_ANALYSIS_PATTERN.xls!D$1:D$50000;0));"")

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
1
Vaucluse Messages postés 27336 Statut Contributeur 6 441
 
Bonjour
et salut Mike....
Je ne crois pas que cette formule soit matricielle, mais la solution que tu donnes et quand même correcte.
Ce qui par contre ce qui me surprend, c'est que le demandeur fait référence à deux fichiers, ce qui justifierait le.xls, mais par contre on en déduit qu'il manque le nom de la feuille?

bien cordialement
0
Dan > Vaucluse Messages postés 27336 Statut Contributeur
 
Merci à tous les deux.
Oui, il y a bien deux fichiers.
Mais lorsque je rentre ta formule Mike,
Excel me répond #NOM?
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137 > Vaucluse Messages postés 27336 Statut Contributeur
 
Salut Vaucluse,

Ce qui m'a fait penser qu'il s'agissait du nom de la feuille est le manque également des entre crochets [ ] pour définir le nom de la feuille et effectivement en matricielle le résultat était correct.
Mais avec le complément d'information c'est plus facile
Bonne après midi
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Re,

alors il te manque le nom de ta feuille du deuxième fichier, essaye comme cela en supposant que ta feuille sur le fichier est nommée Feuil2

=INDEX([ZAF_ANALYSIS_PATTERN.xls]Feuil2!$A$1:$G$50000;EQUIV(A23;[ZAF_ANALYSIS_PATTERN.xls]Feuil2!$D$1:$D$50000;0);7)

ou comme cela
=INDEX('C:\Users\Michel\Desktop\[ZAF_ANALYSIS_PATTERN.xls]Feuil2'!$G$1:$G$50000;EQUIV(A23;'C:\Users\Michel\Desktop\[ZAF_ANALYSIS_PATTERN.xls]Feuil2'!$D$1:$D$50000;0);1)

ensuite on raccourcira la formule en nommant les plages
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Dan
 
Désolé Mike, mais ça ne fonctionne pas.
Par contre il n'y a pas de nom de feuille,
car en fait le nom du fichier et le nom de la feuille sont identiques.
Soit :
ZAF_ANALYSIS_PATTERN

Je ne sais pas si,
mais surement que cela peux avoir une importance.
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Re,

Voilà avec le nom de la feuille

=INDEX('[ZAF_ANALYSIS_PATTERN.xls]ZAF_ANALYSIS_PATTERN '!$G$1:$G$50000;EQUIV(A23;'[ZAF_ANALYSIS_PATTERN.xls]ZAF_ANALYSIS_PATTERN '!$D$1:$D$50000;0);1)


sais tu comment faire pour nommer une plage de cellule !
0
Vaucluse Messages postés 27336 Statut Contributeur 6 441
 
re
si je peux me permettre un petit conseil:
pour intégrer la bonne adresse sans erreur dans la formule:
ouvrez les deux fichiers
commencez à écrire la ,formule jusqu'à INDEX(
venez dans le fichier émetteur et cliquez sur la cellule G1 voulue
l'adresse s'affiche, complètez ensuite en utilisant le même libellé pour le nom de la feuille d'origine.
Crdlmnt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dan
 
Whaou ! Mike tu es impressionnant de rapidité pour la réponse.
Mais malheureusement il ne marque toujours #N/A.
0
Vaucluse Messages postés 27336 Statut Contributeur 6 441
 
en attendant Mike
revenez à ce qu'il vous a proposé
=SIERREUR(Formule;"")
qui affichera un résultat si A23 existe, sinon rien.
crdlmnt
0
Dan
 
Idem,
il me réponds #NOM?
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Re,

Tu n'as pas répondu à ma question,
sais tu comment faire pour nommer une plage de cellule !
et quelle version as tu d'Excel pour gérer l'erreur !
ouvre ton fichier
ZAF_ANALYSIS_PATTERN.xls
puis enregistre mon fichier
voir ce qui se passe

https://www.cjoint.com/c/ECnpKwMhJKp

si tu as toujours un message d'erreur il faudra mettre à notre disposition tes fichiers que tu pourras joindre avec ce lien
https://www.cjoint.com/
0
Vaucluse Messages postés 27336 Statut Contributeur 6 441
 
A tout hasard, SIERREUR ne fonctionne qu'à partir de Excel 2007, quel est "l'age" du votre.
Le #/NOM vient peut être de là.
Si avant 2007, commencez par le principe:

=SI(NB.SI('[ZAF_ANALYSIS_PATTERN.xls]ZAF_ANALYSIS_PATTERN '!$D$1:$D$50000;A23)=0;"";Formule)
0
Dan
 
Désolé de ce silence, j'ai dû m'absenter, une urgence, je suis ambulancier.
Effectivement mon fichier est sous Excel 2003.
Je viens de tout transférer sous Excel 2010.
Et là effectivement tout fonctionne avec la toute première solution
de Mike-31.
Mille excuses de vous avoir fait perdre un temps précieux.
C'est vrai que j'ai omis de vous signaler sous quelle version j'étais.
Encore une fois DÉSOLÉ.
Et un grand MERCI à vous deux Mike-31 et Vaucluse pour votre dévouement, votre rapidité de réponse et votre ténacité à trouver la solution.
MERCI beaucoup et BRAVO à vous deux.
Dan.
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Re,

pour utiliser la formule sur les deux versions d'excel 2003 et 2007 et supérieur, télécharge sur l'ordi qui tourne avec Excel 2003 le pack de compatibilité qui est gratuit avec ce lien
https://www.commentcamarche.net/telecharger/bureautique/16799-pack-de-compatibilite-microsoft-office/

ou modifie la formule comme ceci pour intégrer la gestion d'erreur pour les deux versions Excel

=SI(ESTERREUR(INDEX('[ZAF_ANALYSIS_PATTERN.xls]ZAF_ANALYSIS_PATTERN '!$G$1:$G$50000;EQUIV(A23;'[ZAF_ANALYSIS_PATTERN.xls]ZAF_ANALYSIS_PATTERN '!$D$1:$D$50000;0);1));"";INDEX('[ZAF_ANALYSIS_PATTERN.xls]ZAF_ANALYSIS_PATTERN '!$G$1:$G$50000;EQUIV(A23;'[ZAF_ANALYSIS_PATTERN.xls]ZAF_ANALYSIS_PATTERN '!$D$1:$D$50000;0);1))

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Dan
 
Encore un grand merci pour tout Mike.
Super sympa.
Bon, TRÈS BON week-end.
0