Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Référence indirecte

micheldu52

XLDnaute Occasionnel
Bonsoir,

Je bute sur un problème, besoin de votre aide!

Avec, par exemple, les valeurs suivantes dans les cellules A1= "toto" A2 = "test" A3 contient "=" (issu d'un choix de l'utilisateur par menu déroulant) A4= "oui" A5 = "Non"

j'ai besoin d'écrire SI(A1=A2;A4;A5) (ce qui, ici, doit donner comme résultat "Non" dans cet exemple)

MAIS...., je n'arrive pas à "intégrer" le = du A3 (qui peut aussi être > >= < <= <>.....)

=si(A1&A2&A3;A4;A5) ou autre concatener sont traduits comme =si("toto=test";"oui";"non") est le "égal" est fondu dans la chaîne et n'est pas reconnu comme opérateur de comparaison....

Auriez-vous l'astuce qui m'échappe.

Merci d'avance!

"Portez vous bien"

Cordialement,

Michel
 

micheldu52

XLDnaute Occasionnel
Pourquoi pas....
Cela étant les colonnes qui contiennent les données sont « quelque part » dans les 50 colonnes Plus à droite (En fonction du choix de l’utilisateur qui définit lui même sur quelles colonnes portera la recherche avant de définir les critères de validation ) et je vais les chercher (hors VBA) par un décaler.
Mais je peux aussi les placer dans des colonnes répliquées ce qui reviendrait à mon fichier exemple en ajoutant ces mêmes colonnes pour recevoir les donnnees récupérées par les fonctions décaler.
 

Dranreb

XLDnaute Barbatruc
Cette fonction dans un module standard par exemple a marché :
VB:
Function Evalue(ByVal Arg1 As Range, ByVal Opé As String, ByVal Arg2 As Range)
   Evalue = Evaluate(Arg1.Address & Opé & Arg2.Address)
   End Function
En M2, propagé sur 15 lignes :
Code:
=Evalue($J2;"<>";$C$3)
Renvoie VRAI partout sauf en M9 où c'est FAUX
 

micheldu52

XLDnaute Occasionnel
Je me suis endormi désolé...
Cela fonctionnera-t-il si l’on mets la référence de la Celulle où l’utilisateur a choisi <> ? (Ou tout autre opérateur) plutôt que l’opérateur écrit entre « « (sinon cela revient à décrire chaque opérateur aussi me semblent il)
Merci pour ton aide !
 

micheldu52

XLDnaute Occasionnel
Bonjour,
Je n'ai pas vu ta réponse j'étais en train d'écrire en H3 la formule suivante:

=SI(NBCAR(D$3)=1;SI(ESTERREUR(TROUVE("<";D$3));1;SI(Q19<D$4;1;0))*SI(ESTERREUR(TROUVE(">";D$3));1;SI(Q19>D$4;1;0))*SI(ESTERREUR(TROUVE("=";D$3));1;SI(Q19=D$4;1;0));SI(NBCAR(D$3)=2;SI(ESTERREUR(TROUVE(">=";D$3));1;SI(Q19>=3;1;0))*SI(ESTERREUR(TROUVE("<=";D$3));1;SI(Q19<=D$4;1;0))*SI(ESTERREUR(TROUVE("<>";D$3));1;SI(Q19<>D$4;1;0));SI(D19="debute";SI(GAUCHE(Q19;NBCAR(D$3))=D$4;1;0);SI(D$3="NC PAS";SI(ESTERREUR(CHERCHE(CONCATENER("*";D$4;"*");Q19));1;0);SI(ESTERREUR(CHERCHE(CONCATENER("*";D$4;"*");Q19));0;1)))))

qui semble marcher pour tous les cas de figure (y compris les debute, contient, ne contient pas
gérée dans les colonnes H->L, elle semble convenir et ne fait pas un km....

Je reprends cela ce soir!

Bien cordialement,
Michel
 

Pièces jointes

  • exemple.xlsx
    17.8 KB · Affichages: 5

Dranreb

XLDnaute Barbatruc
Comprends pas trop l'intérêt de tester NBCAR(A$3)=1 et d'utiliser quand même derrière SI(ESTERREUR(TROUVE("<";A$3) au lieu de A$3<>"<".
Mais de toute façon au lieu de formules aussi lourdes je préfère m'écrire des fonctions perso en VBA !
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…