Selectionner une plage de cellule en fonction d'une autre cellule

Selectionner une plage de cellule en fonction d'une autre cellule - Divers - Programmation

Marsh Posté le 02-04-2008 à 23:39:56    

Salut a tous,
 
Si quelqu'un peut m'aider :
 
J'aimerai pouvoir selectionner une plage de cellule en fonction de la valeur d'une autre cellule.
 
Pourquoi une plage de cellule? Ce serait en fait pour la RECUPERER et lui appliquer une formule (en l'occurence une formule de rendement annualisé et de volatilité annualisée)
 
Ci joint un fichier qui reprend ces infos :
 
Dans 'Perf', il y a des infos relatives aux investissements A B C et D
 
Dans 'Feuil2', on trouvera les formules que j'aimerai utiliser.
 
La cellule de condition est en A1.

Reply

Marsh Posté le 02-04-2008 à 23:39:56   

Reply

Marsh Posté le 03-04-2008 à 00:11:19    

Oups pas de piece jointe ?!
 
Bon en gros,il ya 2 feuilles, comme je l'ai dit au dessus.
 
Dans 'Perf' :
 
                 A           B          C          D
 
dates1      perf1a   perf1b    perf1c    perf1d
dates2      perf2a   perf2b    perf2c    perf2d
etc...
datesn      perfna   perfnb    perfnc    perfnd
 
 
L'idée, c'est de récupérer pour chacun des investissements A B C et D, la plage de cellule (donc les perf) qui aura pour premiere cellule la perf dont la date est mentionnée dans la cellule A1 dans 'Feuill1' .
 
Bien sur la date presente en A1 dans 'Feuill1' est "trouvable" dans le range des dates dans 'perf'
 
Une fois cette plage identifiée, lui appliquer ensuite une formule du type: produit(1+plage de cellule)^(12/nb(plage de cellule))-1
 
Ce calcul s'effectuera dans 'Feuil1'.
 
Y a t il une solution pour effectuer cette operation?
 
Dois je passer obligatoirement par VBA??
 
En tout cas, merci pour l'aide que vous pourrez m'apporter.

Reply

Marsh Posté le 03-04-2008 à 09:26:32    

Un exemple un peu plus concret serait pas si mal... (ou au moins le contenu de la Feuil1)

 
kounflex a écrit :

Oups pas de piece jointe ?!
L'idée, c'est de récupérer pour chacun des investissements A B C et D, la plage de cellule (donc les perf) qui aura pour premiere cellule la perf dont la date est mentionnée dans la cellule A1 dans 'Feuill1' .


et comment est déterminé la dernière cellule de la plage ?


Message édité par babasss le 03-04-2008 à 09:27:08

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 03-04-2008 à 11:49:44    

bonjour babass,  
 
Pour commencer, merci pour ton attention et ton aide
 
La derniere cellule de la plage serait la derniere cellule remplie.
 
Concernant, la Feuil1 :
 
A1 = date en question
 
et dans la colonne B par exemple, on aurait les investissements A B C et D
Avec en colonne C le rendement annualisé...
 
" (produit(1+plage de cellule)^(12/nb(plage de cellule))-1 )"
 
... de chacun des investissements en fonction de la date de départ en A1.
 
Voili voilou, j'espere avoir été un peu plus clair cette fois ci
 
Au plaisir de vous relire!

Reply

Marsh Posté le 03-04-2008 à 14:07:23    

Alors c'est un peu compliqué....
 
Déjà, il faut que tu récupères le numéro de la ligne de la feuille 2 qui correspond à la date de la feuille 1 : EQUIV(Feuil1!A2;Feuil2!A:A)
 
Ensuite tu récupères le numéro de la dernière ligne où il y a une valeur (ou pour plus de simplicité tu peux considérer que c'est la ligne 65536) : EQUIV(MAX(Feuil2!A:A);Feuil2!A:A) (j'utilise max car il s'agit d'une date et que tu vas les classer par ordre chrono)
 
Aprés on va utiliser la fonction indirect qui va simuler ta cellule de départ pour une fonction avec comme argument le nom de la feuille, le nom de la colonne et le numéro de la ligne (obtenu ci-dessus) : INDIRECT("Feuil2!"&"B"&EQUIV(Feuil1!A2;Feuil2!A:A)) ; et pour la cellule d'arrivée : INDIRECT("Feuil2!"&"B"&EQUIV(MAX(Feuil2!A:A);Feuil2!A:A))
 
Tu as maintenant la référence de ta cellule de départ, celle de la cellule d'arrivée, sonc ta plage sera : INDIRECT("Feuil2!"&"B"&EQUIV(Feuil1!A2;Feuil2!A:A)):INDIRECT("Feuil2!"&"B"&EQUIV(MAX(Feuil2!A:A);Feuil2!A:A))
 
NB : Je me suis basé sur le fait que la plage est uniquement sur la colonne B


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 03-04-2008 à 14:13:58    

ENORME !
Merci beaucoup, j'essaie de l'appliquer a mon fichier, et je te reviens !

Reply

Marsh Posté le 03-04-2008 à 14:34:38    

j'AI ESSAYé ... et ca marche !!
 
Un grand merci BAbass
 
Merci encore!
Ce qui me rassure, c'est qu'on peut faire tout ce qu'on veut en fait avec excel .. et qu'on peut trouver des solutions grace a des gens comme toi ...
 
Ce qui par contre est moins rassurant pour toi, c'est que maintenant je vais souvent faire appel á toi !
;-)
Encore merci

Reply

Marsh Posté le 03-04-2008 à 19:09:47    

J'ai une derniere requete pour ce post :
 
Tout marche nickel, grace a babass ... maintenant, une fois la plage recupérée je lui applique la formule suivante :
 
produit(1+ PLAGE(..))^(12/nb(PLAGE(..)))-1 pour chacun des investissements A B C et D
 
Prenons pour exemple l'investissement C ; Disons que la date en A1 = 31/01/2006  
 
Comment faire pour afficher un résultat du style "cellule vide", lorsqu'a la date en A1, l'investissement C n'existe pas encore (les performances n'existent pas encore pour cet investissement,il n'est lancé que le 31/01/2007 par exemple)?
 
Merci d'avance votre Aide.

Reply

Marsh Posté le 03-04-2008 à 19:20:34    

Le resultat "cellule vide" s'applique bien entendu a la cellule ou se trouve la formule enoncée ci dessus.
 
Merci POUR votre aide!
:-)

Reply

Marsh Posté le 03-04-2008 à 19:55:49    

Juste pour une cellule, je dirais que tu peux faire un :  
SI(INDIRECT("Feuil2!"&"B"&EQUIV(Feuil1!A2;Feuil2!A:A))=<0;"cellule vide";formule)
 
Si tu veux généraliser aux 4 colonnes  (A,B,C et D) :
SI(NB.VIDE(INDIRECT("Feuil2!"&"B"&EQUIV(Feuil1!A2;Feuil2!A:A)):INDIRECT("Feuil2!"&"B"&EQUIV(Feuil1!A2;Feuil2!A:A)))<>0;"cellule vide";formule)


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 03-04-2008 à 19:55:49   

Reply

Marsh Posté le 03-04-2008 à 20:24:49    

Merci Babass, nickel ca marche !
 
J'te remercie encore d'etre aussi reactif.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed