Selectionner une plage de cellule en fonction d'une autre cellule - Divers - Programmation
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.
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 ?! |
et comment est déterminé la dernière cellule de la plage ?
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!
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
Marsh Posté le 03-04-2008 à 14:13:58
ENORME !
Merci beaucoup, j'essaie de l'appliquer a mon fichier, et je te reviens !
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
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.
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!
:-)
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)
Marsh Posté le 03-04-2008 à 20:24:49
Merci Babass, nickel ca marche !
J'te remercie encore d'etre aussi reactif.
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.