[Résolu] Erreur de fonction matricielle sur autre feuille

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.
Kev74
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 24 avr. 2021 19:09

[Résolu] Erreur de fonction matricielle sur autre feuille

Message par Kev74 »

Bonjour,

j'ai une fonction matricielle de ce type là :

Code : Tout sélectionner

=INDIRECT("Incendie."&ADRESSE(MIN(SI(Incendie.A1:Z30="Nombre";LIGNE(Incendie.A1:Z30)));EQUIV("Nombre";INDIRECT(MIN(SI(Incendie.A1:Z30="Nombre";LIGNE(Incendie.A1:Z30)))&":"&MIN(SI(Incendie.A1:Z30="Nombre";LIGNE(Incendie.A1:Z30))));0)))


Lorsque je la fais fonctionner, elle marche que sur la Feuille Incendie et lorsque je tape cette fonction dans les autres feuilles avec Ctrl+Maj+Entrée, cela me renvoie toujours #N/D, alors que cela fonctionne parfaitement sur la feuille incendie, je ne comprends pas.

Merci d'avance.

Bonne après midi.
Dernière modification par Kev74 le 27 mai 2021 23:58, modifié 2 fois.
LibreOffice 7.0.5.2 sous Windows 10
Avatar de l’utilisateur
yclik
HédOOniste
HédOOniste
Messages : 1665
Inscription : 15 déc. 2010 08:33

Re: Erreur de fonction matricielle sur autre feuille

Message par yclik »

Bonsoir
La réponse est là a priori
OpenOffice 4.1.14 sous Windows 10
Jeff
GourOOu
GourOOu
Messages : 9628
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: Erreur de fonction matricielle sur autre feuille

Message par Jeff »

Bonjour,

Tu peux te servir de l’assistant de fonction, car même si celui-ci n’affiche pas le résultat de fonction matricielle, il va t’aider à sélectionner les bouts de formule cohérents, que tu pourra tester avec bien sûr une validation matricielle.

Dans l’exemple suivant, le texte "Nombre" est saisi en Incendie.D8

Ta formule de base :

Code : Tout sélectionner

=INDIRECT("Incendie."&ADRESSE(MIN(SI(Incendie.A1:Z30="Nombre";LIGNE(Incendie.A1:Z30)));EQUIV("Nombre";INDIRECT(MIN(SI(Incendie.A1:Z30="Nombre";LIGNE(Incendie.A1:Z30)))&":"&MIN(SI(Incendie.A1:Z30="Nombre";LIGNE(Incendie.A1:Z30))));0)))
renvoie #ND

Grâce à l’assistant, je sélectionne le contenu de INDIRECT, puis validation matricielle :

Code : Tout sélectionner

="Incendie."&ADRESSE(MIN(SI(Incendie.A1:Z30="Nombre";LIGNE(Incendie.A1:Z30)));EQUIV("Nombre";INDIRECT(MIN(SI(Incendie.A1:Z30="Nombre";LIGNE(Incendie.A1:Z30)))&":"&MIN(SI(Incendie.A1:Z30="Nombre";LIGNE(Incendie.A1:Z30))));0))
renvoie encore #ND

On continu à creuser, en sélectionnant la fonction ADRESSE, puis validation matricielle :

Code : Tout sélectionner

=ADRESSE(MIN(SI(Incendie.A4:Z33="Nombre";LIGNE(Incendie.A4:Z33)));EQUIV("Nombre";INDIRECT(MIN(SI(Incendie.A4:Z33="Nombre";LIGNE(Incendie.A4:Z33)))&":"&MIN(SI(Incendie.A4:Z33="Nombre";LIGNE(Incendie.A4:Z33))));0))
renvoie encore #ND

On continu, en sélectionnant le paramètre ligne de ADRESSE, toujours avec l’assistant :

Code : Tout sélectionner

=MIN(SI(Incendie.A4:Z33="Nombre";LIGNE(Incendie.A4:Z33)))
Là, on obtient le bon résultat, à savoir le chiffre 8 (car l'exemple concerne la cellule Incendie.D8)

On poursuit les investigations sur le paramètre colonne de ADRESSE, toujours avec l’assistant :
AOO_forum1.png

Code : Tout sélectionner

=EQUIV("Nombre";INDIRECT(MIN(SI(Incendie.A4:Z33="Nombre";LIGNE(Incendie.A4:Z33)))&":"&MIN(SI(Incendie.A4:Z33="Nombre";LIGNE(Incendie.A4:Z33))));0)
encore et toujours l’erreur #ND

On teste le retour de la matrice donnée à EQUIV :

Code : Tout sélectionner

=MIN(SI(Incendie.A4:Z33="Nombre";LIGNE(Incendie.A4:Z33)))&":"&MIN(SI(Incendie.A4:Z33="Nombre";LIGNE(Incendie.A4:Z33)))
Et là, tu vois que le résultat est 8:8

:arrow: Tu demande donc à EQUIV de chercher sur l’intégralité de la ligne 8 (car l'exemple concerne la cellule Incendie.D8) de la feuille courante, d’où l’erreur.

En plus d’indiquer le nom de la feuille, on peut également "borner" de la colonne A jusqu’à Z, la matrice de EQUIV devient :

Code : Tout sélectionner

=INDIRECT("Incendie.A"&MIN(SI(Incendie.A7:Z36="Nombre";LIGNE(Incendie.A7:Z36)))&":Z"&MIN(SI(Incendie.A7:Z36="Nombre";LIGNE(Incendie.A7:Z36))))
Je te laisse reconstruire la formule :wink:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.