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

10 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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
      1. Dan > Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Merci à tous les deux.
        Oui, il y a bien deux fichiers.
        Mais lorsque je rentre ta formule Mike,
        Excel me répond #NOM?
        0
      2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147 > Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  3. 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
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Dan
     
    Whaou ! Mike tu es impressionnant de rapidité pour la réponse.
    Mais malheureusement il ne marque toujours #N/A.
    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      en attendant Mike
      revenez à ce qu'il vous a proposé
      =SIERREUR(Formule;"")
      qui affichera un résultat si A23 existe, sinon rien.
      crdlmnt
      0
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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
  8. 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
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  10. Dan
     
    Encore un grand merci pour tout Mike.
    Super sympa.
    Bon, TRÈS BON week-end.
    0