[Issue] Mauvais résultat sur fonction INDIRECT

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
JLL
Fraîchement OOthentifié
Messages : 4
Inscription : 19 déc. 2006 15:55

[Issue] Mauvais résultat sur fonction INDIRECT

Message par JLL »

Bonjour
Dans la cellule B1( sous Excel), j'utilise la fonction Indirect( A1) dans la laquelle j'ai indiqué le nom d'une cellule. Je récupère donc le contenu de la cellule nommée en B1.
Exemple:
Le contenu A1 : Z30_
Le contenu de B1: =indirect(A1)
Quelque part, sur un autre onglet, une cellule est nommée Z30_ et son contenu est le mot Test.
Sous Excel j'affiche en B1 le mot Test.
Avec Calc j'ai le contenu de la cellule A1 soit Z30_ !!
Quelqu'un a-t-il une solution ?
En vous remerciant
Le modérateur a écrit :Titre modifié pour plus de clarté.
OO2.2.1 ; Excel 97; Win XP pro
Jeff
GourOOu
GourOOu
Messages : 9631
Inscription : 18 sept. 2006 09:40
Localisation : France

Message par Jeff »

Bonsoir,

tout d'abord je te conseille un peu de lecture : http://user.services.openoffice.org/fr/ ... html#11582

Sans ça, je risque de répondre à côté....

Bon, ça marche sous ma config telle qu'elle apparait dans ma signature.

Un 'tit truc :
(en A1) =ZL30_ (le =)
(en B1) =INDIRECT("A1") (les guillemets)

Si ton problème est résolu, merci de cliquer sur Editer dans ton premier message pour mettre [Résolu] dans ton titre...sinon à bientôt ! :wink:

EDIT : y'a un cas où j'obtiens "=ZL30_" en B1, c'est si A1 est formaté texte ; reformater nombre (équivalent de Standard sous Excel), puis ressaisir un terme (par ex. le signe =)
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Message par Pierre-Yves Samyn »

Bonsoir
Jeff a écrit : Un 'tit truc :
(en A1) =ZL30_ (le =)
(en B1) =INDIRECT("A1") (les guillemets)
Hélas, justement le problème me semble venir du fait que la cellule doit contenir le nom du nom, pas le résulat... Du coup, effectivement, je reproduis le problème et pour l'instant je n'ai pas de solution (je tourne autour avec des trucs du genre :

Code : Tout sélectionner

="CELLULE(""ADDRESS"";"&CONCATENER(MINUSCULE(A1))&")"
pour inclure ensuite dans le INDIRECT

Si cela peut donner des idées à quelqu'un...

Une solution (lourde) pourrait être d'insérer quelque part dans le classeur la liste des noms (par Insertion / Noms / Insérer / Liste) puis de faire une recherche dans cette liste du contenu de la cellule A1 afin d'obtenir les références, mais bon... :(
Jeff
GourOOu
GourOOu
Messages : 9631
Inscription : 18 sept. 2006 09:40
Localisation : France

Message par Jeff »

Jeff a écrit :Sans ça, je risque de répondre à côté...
Même avec ça, remarquez bien....

Autre truc qui a (certainement/peut-être) une relation :
Sous Calc, lorsque l'on nomme une cellule, si l'on fait une égalité en allant chercher la cellule avec la souris, Calc mets les références colonnes/ligne au lieu du nom de la cellule...

EDIT : malheureusement, ça se confirme : si en cellule A1 je rentre Feuille3.A1 (ma cellule nommée ZL30_ est à cette place) ça fonctionne, sinon...non.
A voir, après un délai de réflexion...indéterminé
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Message par Pierre-Yves Samyn »

Bonjour

Le problème a fait l'objet d'un issue http://qa.openoffice.org/issues/show_bug.cgi?id=4695

Pour aller plus loin dans :
Pierre-Yves Samyn a écrit :Une solution (lourde) pourrait être d'insérer quelque part dans le classeur la liste des noms (par Insertion / Noms / Insérer / Liste) puis de faire une recherche dans cette liste du contenu de la cellule A1 afin d'obtenir les références, mais bon... :(
Ci-dessous la syntaxe qu'il faudrait employer :

Code : Tout sélectionner

=INDIRECT(STXT(RECHERCHEV(A1;A8:B9;2;0);2;NBCAR(RECHERCHEV(A1;A8:B9;2;0))))
A8:B9 est la plage dans laquelle figure la liste des noms
RECHERCHEV retourne la référence associée au nom sous la forme =$Feuille1.$C$1
NBCAR donne le nombre de caractères de cette référence
STXT premet d'enlèver le "="
INDIRECT utilise le résultat...

J'avais prévenu que ce serait lourd... :)