je viens de passer sous XP et Excel 2003, et je rencontre quelques problèmes
(que j'aurais peut-être eu aussi avec les anciennes versions ??).
J'ai des données numériques (entiers) dans les colonnes G,H,I, et je veux
faire des recherches avec index(equiv...). Pour simplifier la question,
j'utilise les codes suivants:
err 1 = #N/A si manque une valeur
err 2 = ne prend en compte que la colonne de gauche (!)
1- Estvide: ne semble pas fonctionner avec une plage multicellules:
err =ESTVIDE(G24:I24) , retourne toujours faux, même avec 3 cellules vides!!
err 2 {=ESTVIDE(G23:I23)}
J'utilise donc sommeprod(G23:I23;G23:I23); est-ce la solution?
2- index(equiv...)
la formule matricielle suivante fonctionne bien
ok {=SI(SOMMEPROD(G28:I28;G28:I28)=0;"";MAX(SI(ESTERREUR(EQUIV(G28:I28;numéro;0));0;EQUIV(G28:I28;numéro;0))))}
.... mais à ma grande surprise, celle-ci ne marche pa
err1+2 {=SI(SOMMEPROD(G29:I29;G29:I29)=0;"";MAX(SI(ESTERREUR(EQUIV(G29:I29;numéro;0));0;INDEX(fin;EQUIV(G29:I29;numéro;0)))))}
.... ce qui m'oblige à employer la syntaxe ci-dessous ( non matricielle),
que je n'aime pas; d'une part elle est très longue, et surtout, si j'ai une
quatrième valeur en colonne J, il faut encore rallonger la formule:
ok =SI(SOMMEPROD(G26:I26;G26:I26)=0;"";
MAX(SI(ESTERREUR(EQUIV(G26;numéro;0));0;INDEX(fin;EQUIV(G26;numéro;0)));
SI(ESTERREUR(EQUIV(H26;numéro;0));0;INDEX(fin;EQUIV(H26;numéro;0)));
SI(ESTERREUR(EQUIV(I26;numéro;0));0;INDEX(fin;EQUIV(I26;numéro;0))) ))
Y -a-t-il une incompatibilité générale entre INDEX et les matricielles, ou
ai-je fait une erreur quelque part, ou ....?
1- Estvide: ne semble pas fonctionner avec une plage multicellules: ====================================================================
Il fonctionne mais retourne une matrice. Si tu veux savoir si elles sont TOUTES vides, il faut utiliser : ET(ESTVIDE(G23:I23))
Cela convertit une matrice de VRAI et FAUX en une seule valeur (un scalaire). Si toutes les cellules sont vides, le ET() retourne VRAI, sinon FAUX.
J'utilise donc sommeprod(G23:I23;G23:I23); est-ce la solution? Non. Voir réponse précédente.
2- index(equiv...) =================== >
la formule matricielle suivante fonctionne bien: ok {=SI(SOMMEPROD(G28:I28;G28:I28)=0;"";MAX(SI(ESTERREUR(EQUIV(G28:I28;numéro;0));0
;EQUIV(G28:I28;numéro;0))))}
.... mais à ma grande surprise, celle-ci ne marche pas err1+2 {=SI(SOMMEPROD(G29:I29;G29:I29)=0;"";MAX(SI(ESTERREUR(EQUIV(G29:I29;numéro;0));0
;INDEX(fin;EQUIV(G29:I29;numéro;0)))))}
Comme ceci: {=SI(ET(ESTVIDE(G29:I29));"";MAX(SI(ESTERREUR(EQUIV(G29:I29;numéro;0)); 0;INDEX(fin;EQUIV(G29:I29;numéro;0)))))}
Salutations,
Daniel M.
Bourby_m
Bonjour,
merci à Daniel M; j'ai bien compris pour ESTVIDE, ça marche bien.
En revanche, pour index(equiv....), j'ai toujours les mêmes problèmes: - si G29:I29 est vide, le résultat est vide (=ok) - si G29 est vide, mais pas H et I29, résultat #N/A ("manque une valeur pour la fonction") - si G, H et I29 sont pleins, le résultat n'est pas le maxi, mais la valeur correspondant à G29
Quelle est mon erreur? Merci de votre aide
Bourby
"Daniel.M" wrote:
Bonjour,
1- Estvide: ne semble pas fonctionner avec une plage multicellules: ==================================================================== >
Il fonctionne mais retourne une matrice. Si tu veux savoir si elles sont TOUTES vides, il faut utiliser : ET(ESTVIDE(G23:I23))
Cela convertit une matrice de VRAI et FAUX en une seule valeur (un scalaire). Si toutes les cellules sont vides, le ET() retourne VRAI, sinon FAUX.
J'utilise donc sommeprod(G23:I23;G23:I23); est-ce la solution? Non. Voir réponse précédente.
2- index(equiv...) =================== > >
la formule matricielle suivante fonctionne bien: ok {=SI(SOMMEPROD(G28:I28;G28:I28)=0;"";MAX(SI(ESTERREUR(EQUIV(G28:I28;numéro;0));0
;EQUIV(G28:I28;numéro;0))))}
.... mais à ma grande surprise, celle-ci ne marche pas err1+2 {=SI(SOMMEPROD(G29:I29;G29:I29)=0;"";MAX(SI(ESTERREUR(EQUIV(G29:I29;numéro;0));0
;INDEX(fin;EQUIV(G29:I29;numéro;0)))))}
Comme ceci: {=SI(ET(ESTVIDE(G29:I29));"";MAX(SI(ESTERREUR(EQUIV(G29:I29;numéro;0)); 0;INDEX(fin;EQUIV(G29:I29;numéro;0)))))}
Salutations,
Daniel M.
Bonjour,
merci à Daniel M; j'ai bien compris pour ESTVIDE, ça marche bien.
En revanche, pour index(equiv....), j'ai toujours les mêmes problèmes:
- si G29:I29 est vide, le résultat est vide (=ok)
- si G29 est vide, mais pas H et I29, résultat #N/A ("manque une valeur pour
la fonction")
- si G, H et I29 sont pleins, le résultat n'est pas le maxi, mais la valeur
correspondant à G29
Quelle est mon erreur?
Merci de votre aide
Bourby
"Daniel.M" wrote:
Bonjour,
1- Estvide: ne semble pas fonctionner avec une plage multicellules:
==================================================================== >
Il fonctionne mais retourne une matrice. Si tu veux savoir si elles sont TOUTES
vides, il faut utiliser :
ET(ESTVIDE(G23:I23))
Cela convertit une matrice de VRAI et FAUX en une seule valeur (un scalaire).
Si toutes les cellules sont vides, le ET() retourne VRAI, sinon FAUX.
J'utilise donc sommeprod(G23:I23;G23:I23); est-ce la solution?
Non. Voir réponse précédente.
2- index(equiv...)
=================== > >
la formule matricielle suivante fonctionne bien:
ok
{=SI(SOMMEPROD(G28:I28;G28:I28)=0;"";MAX(SI(ESTERREUR(EQUIV(G28:I28;numéro;0));0
;EQUIV(G28:I28;numéro;0))))}
.... mais à ma grande surprise, celle-ci ne marche pas
err1+2
{=SI(SOMMEPROD(G29:I29;G29:I29)=0;"";MAX(SI(ESTERREUR(EQUIV(G29:I29;numéro;0));0
;INDEX(fin;EQUIV(G29:I29;numéro;0)))))}
Comme ceci:
{=SI(ET(ESTVIDE(G29:I29));"";MAX(SI(ESTERREUR(EQUIV(G29:I29;numéro;0));
0;INDEX(fin;EQUIV(G29:I29;numéro;0)))))}
merci à Daniel M; j'ai bien compris pour ESTVIDE, ça marche bien.
En revanche, pour index(equiv....), j'ai toujours les mêmes problèmes: - si G29:I29 est vide, le résultat est vide (=ok) - si G29 est vide, mais pas H et I29, résultat #N/A ("manque une valeur pour la fonction") - si G, H et I29 sont pleins, le résultat n'est pas le maxi, mais la valeur correspondant à G29
Quelle est mon erreur? Merci de votre aide
Bourby
"Daniel.M" wrote:
Bonjour,
1- Estvide: ne semble pas fonctionner avec une plage multicellules: ==================================================================== >
Il fonctionne mais retourne une matrice. Si tu veux savoir si elles sont TOUTES vides, il faut utiliser : ET(ESTVIDE(G23:I23))
Cela convertit une matrice de VRAI et FAUX en une seule valeur (un scalaire). Si toutes les cellules sont vides, le ET() retourne VRAI, sinon FAUX.
J'utilise donc sommeprod(G23:I23;G23:I23); est-ce la solution? Non. Voir réponse précédente.
2- index(equiv...) =================== > >
la formule matricielle suivante fonctionne bien: ok {=SI(SOMMEPROD(G28:I28;G28:I28)=0;"";MAX(SI(ESTERREUR(EQUIV(G28:I28;numéro;0));0
;EQUIV(G28:I28;numéro;0))))}
.... mais à ma grande surprise, celle-ci ne marche pas err1+2 {=SI(SOMMEPROD(G29:I29;G29:I29)=0;"";MAX(SI(ESTERREUR(EQUIV(G29:I29;numéro;0));0
;INDEX(fin;EQUIV(G29:I29;numéro;0)))))}
Comme ceci: {=SI(ET(ESTVIDE(G29:I29));"";MAX(SI(ESTERREUR(EQUIV(G29:I29;numéro;0)); 0;INDEX(fin;EQUIV(G29:I29;numéro;0)))))}