Poser votre question
0

Fonctionnement de l'opérateur "!" d'intersection de matrices.

posée 2020-02-27 13:17:02 +0100

Image Gravatar de gZen0n

updated 2020-02-27 14:25:34 +0100

Bonjour,

Je souhaite utiliser l'opérateur "!" afin de tester l'appartenance de la cellule actuelle à une plage stockée au format texte dans une autre cellule. Admettons que Feuille1.A1="$Feuille2.$A$1:$A$100" J'ai essayé Feuille2.A5=SI(CELLULE("ADRESSE")!INDIRECT($Feuille1.$A$1);...) Mais j'ai une erreur 502.

Quelqu'un connaitrait-il la syntaxe à adopter ? Merci

Cordialement,

gZen0n

EDIT : J'ai trouvé sur le forum ooffice la formule NON(ESTERREUR(LIGNES(cellule!plage))) mais je n'arrive pas à l'appliquer à mon cas... L'erreur est systématique, je crois que le problème vient de la référence à la plage.

éditer requalifier signaler fermer fusionner supprimer

2Réponses

0

répondue 2020-02-27 14:37:19 +0100

Image Gravatar de Pioulo

updated 2020-02-27 14:44:07 +0100

Bonjour,

Première remarque : si dans ta cellule (dans ton exemple, Feuille2.A5) tu fais référence à ta propre cellule, tu aura une référence circulaire (erreur 522). Or si tu fais une intersection, c'est bien entre deux références : celle de la cellule et celle de la plage. Pour outrepasser cette référence circulaire il faut autoriser Calc à des itérations : Outils > Options > LibreOffice Calc > Calcul, cocher Itérations. À partir de là, tu peux faire ton test, en mettant, par exemple en A1 de Feuille2 : =SI(ESTREF(INDIRECT($Feuille1.$A$1)!INDIRECT(CELLULE("adresse")));"oui";"non") et en recopiant cette formule matricielle vers le bas. Rappel : validation de la formule par Ctrl+Maj+ Entrée, recopie de la formule par Ctrl+la croix de recopie. Exemple ci-joint.C:\fakepath\Intersect.ods

Cordialement,

éditer signaler supprimer permalien plus

Commentaires

Merci de cette réponse, cela dit, pourquoi définir la formule en tant que formule matricielle ? Cela fonctionne sans, et je ne comprends pas l'utilité de cette fonctionnalité.

Image Gravatar de gZen0ngZen0n ( 2020-02-27 14:56:49 +0100 )éditer

J'avais pris au départ le cas général d'une intersection à plus d'une cellule, qui nécessite la validation matricielle. Ici effectivement, ça ne sert à rien, puisque l'intersection est soit d'1 cellule, soit de zéro (#REF!). Cordialement,

Image Gravatar de PiouloPioulo ( 2020-02-27 15:17:01 +0100 )éditer

D'accord, mais ma question est plus générale : A quoi sert cette fonction ? Quelle différence si l'on travaille avec des matrices de plus d'une cellule ?

Image Gravatar de gZen0ngZen0n ( 2020-02-27 16:15:24 +0100 )éditer

Elle permet de trouver une plage commune de cellules en fonction de leur localisation. Par exemple =A1:C30!C22:E41retournera la plage C22:C30, ce qui ensuite te permet de travailler sur la matrice résultante uniquement. Par exemple, si tu as des expressions françaises, belges et suisses (en colonnes) portant sur le pain, le vin et le beurre (en ligne), en utilisant EQUIV(), en construisant tes références avec, puis avec INDIRECT() et !, tu isoles assez vite les expressions portant, par exemple sur le beurre suisse ! Mais bon, les fonctions DECALER(), INDEX() de base de données permettent aussi de faire plein de choses dans ce domaine...

Image Gravatar de PiouloPioulo ( 2020-02-27 22:02:30 +0100 )éditer

Désolé pour cette réponse tardive.Je me suis mal exprimé. Je voulais dire : à quoi sert la fonctionnalité de formule matricielle (Ctrl+Maj+Entrée) ? Pourquoi l'utiliser ?

Image Gravatar de gZen0ngZen0n ( 2020-02-29 12:33:49 +0100 )éditer
0

répondue 2020-02-27 15:06:30 +0100

Image Gravatar de pierre-yves samyn

Bonjour

Autre solution qui ne nécessite pas l'activation des itérations... mais qui est aussi beaucoup plus complexe...

=SINA(EQUIV(ADRESSE(LIGNE();COLONNE();1;;STXT(CELLULE("FILENAME");CHERCHE("$";CELLULE("FILENAME");1)+1;256));$Feuille1.$A$3&"."&ADRESSE(LIGNE(INDIRECT($Feuille1.$A$4));1);0);"non")

Voir Intersection.ods

Cordialement

éditer signaler supprimer permalien plus

Commentaires

Merci ! L'activation des itérations peut poser problème ?

Image Gravatar de gZen0ngZen0n ( 2020-02-27 16:13:56 +0100 )éditer

Oui, tu ne seras plus en mesure, pour ce classeur, de repérer des erreurs de référence circulaire...

Image Gravatar de PiouloPioulo ( 2020-02-27 22:04:18 +0100 )éditer
S'identifier/S'inscrire pour répondre

Outils de question

1 suiveurs

Stats

Posée: 2020-02-27 13:17:02 +0100

Consultée: 75 fois

Mise à jour: Feb 27 '20