Appliquer une formule a une liste de données dynamique

Bonjour a tous,

Je suis débutant sur VBA et je m'en sert dans le cadre de mon travail avec Bloomberg. J'ai une formule BDS (lié a bloomberg) qui me récupere les composants d'un indice boursier. Ces composants sont disposé dans la colonne D4. Leur nombre peut varié entre 10 et 300. J'aimerai avoir une macro me permettant de leur appliquer une formule =BDH("cellule du premier composant"; "PX_HIGH";PX_LOW";"TURNOVER";date de début; date de fin).

Pourriez vous m'éclairer ? Ou me mettre sur la voie ?

Merci a vous.

bonjour

joins un fichier de 2 colonnes et 5 lignes, et le résultat attendu

note : quelle importance que les données soient saisies au clavier ou qu'elles viennent du net ?

à te relire

amitiés

Hello,

Il me semble que j'ai la même question.

Je voudrai que ma formule dans l'onglet "Index" cellule D9 s'adapte en fonction du nombre de lignes de mon TCD.

=GRANDE.VALEUR(SI(GLOBAL!B11:B151>1000;GLOBAL!D11:D151);1) fonctionne mais je dois changer manuellement le nombre de lignes et je voudrai que ce soit automatique.

Pour cela, il faudrait que ma formule sache qu'elles ne doit prendre en compte que ce qui se trouve entre "Étiquettes de lignes" et "Total général" qui sont le premier et dernier libellé du tableau croisé dynamique.

J'ai fait beaucoup de tests et je ne trouve pas.

bonjour

en nommant les plages dans gestionnaire de nom

la colonne etiquette ; nommée: noms

=DECALER(GLOBAL!$A$11;;;NB.SI(GLOBAL!$A:$A;"><")-2)

laplage des vues nommée: vues

=DECALER(noms;;1;)

la plagedes clics :tu donnes un nom

=DECALER(noms;;2;)

la plagedes CTR tu donnes un nom

=DECALER(noms;;3;)

tu utilises le nom dans la formule au lieu de B11.........et pour INDEX(noms;...........

cordialement

Bonjour,

Ma contribution du dimanche.

Cdlt.

Merci tulipe

J'ai trouvé le gestionnaire de noms et j'ai écris les formules =DECALER(noms;;1;) etc (au début je pensais qu'il fallait écrire le nom que j'avais donné à la place de "noms").

J'ai compris qu'il fallait appeler ces noms et pas des cellules.

Après je me suis perdue sur la formule index, parce que je n'ai pas compris du tout index qui appelle les noms que j'ai attribué.

=INDEX(vues;EQUIV("grande.valeur";B:B;0))

Sur les formules d'Eric, (merci aussi ! )je ne comprends pas du tout comment se fait l'appel des données. Je ne vois pas d'appel à la feuille des données, je ne sais pas comment fonctionne la formule. Mais je vois que ça fonctionne, juste je ne comprends pas.

Mais j'ai vu qu'il y avait une différence sur un chiffre de la deuxième plus grande valeur donc là j'ai failli me mettre à pleurer

Merci à tous les deux de m'avoir donné du temps et des conseils, je vais essayer de comprendre comment ça fonctionne.

Re,

Tu n'as pas lu les commentaires que j'avais mis en place.

Un complément d'informations dans le fichier joint.

A te relire.

Cdlt.

Ça fonctionne en reprenant l'agencement de mon onglet, ça maaarche J'ai dû retirer les tableaux croisés dynamiques qui étaient sous le tableau principal et qui avaient aussi un "total général".

Ça faisait un conflit.

Deux jours que je suis dessus vraiment merci beaucoup

Re-bonjour a vous, j'ai réussi a appliquer ma formule a ma plage de données transposée en ligne. Le problème c'est que ma formule a besoin d'un décalage de 6 colonnes entre chaque données. J'arrive a le faire mais dans ce cas ma formule ne prends que en compte le ticker du composant de l'index 1 fois sur 6. Merci de votre aide

Bonjour , j'ai trouvé la solution.

La voici,

Sub RecupData() ' ' Recup datas ' Var2 = Cells(2, Columns.Count).End(xlToLeft).Column y = 0 Z = 0 'y variable pour décallage de la formule de 5 'z variable pour que la prise en compte du ticker soit de 1 a 1 For x = 1 To Var2 Sheets("Datas").Range(Sheets("Datas").Cells(3, 1), Sheets("Datas").Cells(3, 1)).Offset(0, y).FormulaR1C1 = "=BDH(R[-1]C[" & Z & "],R1C1:R1C3,R1C7,R1C10)" y = y + 5 Z = Z - 4 Next x End Sub

Rechercher des sujets similaires à "appliquer formule liste donnees dynamique"