Rédiger des formules à partir de texte d'autres cellules

Bonjour à tous et d'abord merci pour tous les conseils que vous donnez aux pauvres néophytes comme moi, ce forum est très actif...

Mon souci du jour a déjà été abordé il y a un moment, mais la discussion ne m'a pas vraiment renseigné.

Je voudrais savoir s'il est possible, pour le moment sans Visual Basic (qui m'est pour le moment inconnu), d'écrire une formule dans une cellule en prenant des "bouts" dans d'autres cellules.

J'explique le fichier exemple que je vous ai joint... :

cellule A1 = une date et B1 = un entier (par exemple)

cellule A2 = cellule ou doit s'appliquer une fonction SI. exemple : A2 : =si(B2;C2;D2)

cellule B2 = cellule critère dans laquelle sera exprimé en texte la fonction critère : B2 : ="ou($B$2<2;$B$2>4)"

cellule C2 = cellule si vrai exprimée en texte : C2 : =E2&"$F$5" où E2 donnerai une référence à une autre feuille (exemple Janv 14)

cellule D2 = cellule si faux exprimée en texte : D1 : =F2&"$F$5" où F2 donnerai aussi une autre feuille (ex : Fév 14)

Dans mon exemple, on pourrait imaginer que le texte inscrit dans E2 et F2 soit généré lui-même à partir d'une formule du genre :

E2 : ="'"&CHOISIR(MOIS($A$1);"Janv ";"Fév ";"Mars ";etc...)&ANNEE($A$1)-2000&"'!"

F2 : ="'"&CHOISIR(MOIS($A$1)+1;"Janv ";"Fév ";"Mars ";etc...)&ANNEE($A$1)-2000&"'!"

L'utilité serait d'avoir des formules "complexes" comportant plusieurs fois les références aux autres pages et qu'on pourrait faire varier en changeant seulement quelques cellules de départ (une date par exemple), plutôt que de faire un complexe travail de "Rechercher/Remplacer".

J'espère que j'ai été suffisamment clair pour vous sur mon objectif et surtout que vous aurez une solution "simple" que je n'aurait pas trouvé seul. (pour l'instant, je fais choux blanc).

Merci à tous.

Bonsoir,

tu as une partie de la solution avec la fonction indirect.

en A1 "feuil3!A4"

en A2 =indirect(A1) t'affichera en A2 le contenu de A4 en feuil3

ne fonctionne que pour les références de cellules.

Bonjour,

C'est tout à fait possible faire ce que tu demande... et sans VBA.

La fonction INDIRECT() permet de faire cela. Par contre il faudrait que ton exemple ne soit pas si flou =SI(B2;C2;D2)

Est ce que tu peux faire un exemple plus concret ?

Cordialement,

Leakim

h2so4 a écrit :

Bonsoir,

tu as une partie de la solution avec la fonction indirect.

en A1 "feuil3!A4"

en A2 =indirect(A1) t'affichera en A2 le contenu de A4 en feuil3

ne fonctionne que pour les références de cellules.

Donc, en utilisant la fonction indirect(), je pourrais appeler les références que je veux sans avoir à les retaper à chaque fois ? Simplement en "préparant" les références dans d'autres cellules avant ?

Je vais essayer...

leakim a écrit :

Bonjour,

C'est tout à fait possible faire ce que tu demande... et sans VBA.

La fonction INDIRECT() permet de faire cela. Par contre il faudrait que ton exemple ne soit pas si flou =SI(B2;C2;D2)

Est ce que tu peux faire un exemple plus concret ?

Cordialement,

Leakim

Désolé Leakim, mon fichier exemple ne fonctionne pas ? J'ai du mal le poster.

Merci beaucoup.

bonsoir,

dans ton cas en combinant indirect et l'utilisation de nom on pourrait écrire la formule ainsi

=SI(cond1;INDIRECT(C2);INDIRECT(D2))

cond1 est un nom defini comme suit

=OU($B$2<2;$B$2>4)

Dans mes différentes recherches, j'ai pu voir apparaître parfois la notion de "nom". Est-ce le fait de donner un nom à une plage de cellules pour pouvoir appeler toute la plage en une seule fois ? Si c'est bien cela, je ne comprends pas comment/pourquoi l'utiliser pour des cellules seules. Cela ne revient-il pas au même que d'écrire la référence comme A1 ?

Autre problème, lié à l'utilisation de INDIRECT(), c'est que j'ai aussi besoin de faire référence à des feuilles issues d'autres classeurs, et je crois que la fonction INDIRECT() oblige à avoir les classeurs en question ouverts au moment de l'utilisation, non ?

Bonsoir,

1) en effet, Indirect ne fonctionne pas pour faire référence à des classeurs fermés

2) nom permet de de définir une plage, mais peut également être utilisé pour donner un nom à une formule. ce que j'ai fait avec le nom cond1, dans ce cas-ci, il est en effet plus simple d'écrire cette formule dans une cellule par exemple A15 et d'utiliser A15 dans ta formule),

h2so4 a écrit :

Bonsoir,

1) en effet, Indirect ne fonctionne pas pour faire référence à des classeurs fermés

2) nom permet de de définir une plage, mais peut également être utilisé pour donner un nom à une formule. ce que j'ai fait avec le nom cond1, dans ce cas-ci, il est en effet plus simple d'écrire cette formule dans une cellule par exemple A15 et d'utiliser A15 dans ta formule),

J'essaierai tout ça ces prochains jours, mais si je comprends bien, on peut définir un nom pour une fonction donnée, et appeler ce nom ensuite dans une formule, mais on ne peut pas écrire la formule dans une cellule et appeler la cellule dans la formule ?

Bon, je vais voir.

Merci.

Rand Al'Thor

J'ai un peu regardé les noms.

Ils me permette,t d'appeler toujours la même plage, ou valeur ou formule "figée", mais ils ne me permettent pas d'appliquer une formule récurrente à des cellules différentes.

Par exemple, si je donnais un nom à ma "fonction" CHOISIR() (pour écrire le mois en abrégé à partir de la valeur du mois de telle ou telle date) je ne crois pas pouvoir l'appliquer à différentes cellule contenant des dates, c'est ça ? Il me faut dans ce cas là définir une fonction à l'aide de macro, non ?

Rechercher des sujets similaires à "rediger formules partir texte"