Problème avec la fonction TROUVE

Bonjour à tous,

je suis actuellement confronté à un soucis de compatibilité Calc/Excel.

Contexte :

Je suis actuellement en télétravail et je dois fournir des fichiers Excel à des utilisateurs qui me le demandent, cependant mon ordinateur de télétravail est sous Linux, aussi je travaille avec Calc. La plupart du temps cela ne pose pas de soucis, je m'abstiens simplement de faire des macros et cherche à trouver des solutions utilisant uniquement des formules.

Feuille de calcul et son fonctionnement :

j'ai eu comme problème à trouver la présence d'une chaîne de caractère (constituant une séquence) au sein d'une autre.

J'ai une série de chaînes de caractères autorisées, je dois tester une chaîne fournie par l'utilisateur pour savoir si elle contient une séquence.

Par exemple :

L'utilisateur fourni ACDB.

J'ai 16 séquences de caractères (8 de 4 et 8 de 3 voir en PJ), mais aucune de ces 16 séquences n'est dans ACDB.

Je renvoie 0

L'utilisateur fourni CADC.

Une de mes séquences autorisées est ADC, elle est donc présente dans la séquence fournie par l'utilsiateur et elle a un poids de 2, je renvois ce poids.

Pour ce faire, j'utilise sous Calc la fonction suivante :

=SI( ESTERREUR( INDEX( $F$3:$F$18; EQUIV( 0; ESTERREUR( TROUVE( $E$3:$E$18; B3) );0 ) )); 0; INDEX( $F$3:$F$18; EQUIV( 0; ESTERREUR( TROUVE( $E$3:$E$18; B3) );0 ) ) )

Je teste si ma formule me renvoie une erreur, si oui je renvois 0, sinon je renvois ma formule.

Problème :

Quand mon utilisateur teste mon fichier avec Excel. A l'ouverture, en lecture seule donc, les bonnes valeurs (mes valeurs tests) sont affichées. La séquence CADC possède bien un 2 (en C5).

Dès qu'il active les modifications afin de pouvoir s'en servir, la feuille est recalculée, et toutes les valeurs de la colonne C passent à 0 ...

A noter que les formules soient déclarées en matricielle ou non ne change rien.

Merci par avance si quelqu'un peut m'aiguiller sur une solution.

Cordialement,

Bruno

12test-trouve.xlsx (5.26 Ko)

Bonjour,

1-) toutes les séquences en colonnes B ne correspondent pas à celles de la colonne E

2-) regarde un peu la formule qui est fausse et de plus contient des espaces

Donc pas de miracle

Bonjour,

merci d'avoir pris le temps d'apporter une réponse.

1) Oui c'est normal, je réexplique, j'ai sûrement été trop peu clair :

  • On saisi en colonne B des séquences.
  • On a en colonne E une liste de séquences autorisées.
  • On souhaite calculer, pour chaque élément de la colonne B (donc de B3 à B8 dans l'exemple fourni) si il y a présence d'une séquence de la colonne E.
Exemple, en B5 on a la séquence CADC, elle contient la séquence ADC que l'on retrouve dans la colonne E (E18 pour être exact).

Il est possible qu'aucune des séquences autorisées (colonne E) ne se retrouve dans la colonne B, c'est le principe du test. Par ailleurs on peut être amené à tester n séquences, la colonne B n'est donc pas limitée en taille (elle peut contenir 1 élément comme 200 si besoin).

2) Les espaces n'ont pas d'incidence dans les formules, comme certaines de mes formules ont des niveaux d'imbrication parfois profond je place des espace pour une question de lisibilité, mais si cela est gênant je peux supprimer les espaces et renvoyer un fichier.

Quant au fait que le formule soit fausse, c'est justement le but de ma présence ici

Par ailleurs elle fonctionne parfaitement avec Calc.

Cordialement,

Bruno

Bonjour,

Le problème vient de la différence de traitement des valeurs booléennes par Calc et Excel.

Calc traite de la même façon VRAI/FAUX et 1/0 alors que ce n'est pas le cas d'Excel.

Remplaces EQUIV(0; par EQUIV(FAUX(); dans ta formule.

A+

Bonjour OOoiste et merci pour cette réponse.

Cela fonctionne parfaitement, avec juste une précaution que j'indique si ça peut aider d'autres personnes qui expérimentent mon soucis : à l'ouverture Excel change automatiquement la formule ...TROUVE($E$3:$E$18... par ...TROUVE(@$E$3:$E$18... ce qui fait que ça ne fonctionne pas, même en appliquant la modification 0 > FAUX()

Merci encore et bonne journée.

Bonjour OOoiste et merci pour cette réponse.

Cela fonctionne parfaitement, avec juste une précaution que j'indique si ça peut aider d'autres personnes qui expérimentent mon soucis : à l'ouverture Excel change automatiquement la formule ...TROUVE($E$3:$E$18... par ...TROUVE(@$E$3:$E$18... ce qui fait que ça ne fonctionne pas, même en appliquant la modification 0 > FAUX()

Merci encore et bonne journée.

Cela se produit uniquement avec Excel 365.

Cela ne devrait pas se produire si la validation est matricielle.

Rechercher des sujets similaires à "probleme fonction trouve"