XL 2010 [VBA] Concaténation pour FormulaR1C1

F22Raptor

XLDnaute Impliqué
Hello
J'utilise un logiciel professionnel qui a ses propres fonctions Excel, que je cherche à reconstituer par macro.
Exemple :
=BDP(A1&" Equity";"crncy adj px last";"eqy fund crncy=eur")
Je fais donc ici référence à A1

J'essaie de reconstituer ça, après avoir utilisé une InputBox (type 8) pour cliquer sur la cellule référence.
MonAdresse me renvoie donc A1 (en Dim String)

J'essaie plein de combinaisons différentes, mais je m'y perds dans les guillemets !
Par exemple, ceci ne marche pas (erreur 1004) :
ActiveCell.FormulaR1C1 = "=BDP(" & MonAdresse & """ Equity""" & ",""crncy adj px last"",""eqy fund crncy=eur"")"

Et ceci se rapproche, mais ... :
ActiveCell.FormulaR1C1 = "=BDP(" & AddresseTicker & " Equity" & ",""crncy adj px last"",""eqy fund crncy=eur"")"

(changement sur le Equity)
Renvoie dans la cellule (apostrophe autour de A1) :
=BDP('A1' Equity;"crncy adj px last";"eqy fund crncy=eur")

Une idée ?

merci !
 

F22Raptor

XLDnaute Impliqué
Bonjour F22Raptor

A 1ere vue ton logiciel intègre une fonction nommée BDP qu'Excel ne possède pas (à ma connaissance)
Il faudrait en savoir plus sur cette fonction et les paramètres associés
Bonjour Pierre,
En effet, c'est une fonction intégrée à Excel pour ce logiciel.

Voici comment elle fonctionne :
Exemple Ticker = "VIV FP Equity" (qui désigne une action cotée en bourse)
Exemple Param1 : "Crncy Adj Px Last"
Exemple Param2: "Eqy Fund Crncy=eur"
d'où la fonction : =BDP ( ticker ; param1 ; param2 ) (j'ajoute des espaces pour la clarté)

Typiquement, on met dans nos cellules les tickers courts : VIV FP ou ENI IM par exemple

et on peut donc construire une formule avec la concaténation du ticker court, et du radical "ESPACE EQUITY" :
=BDP ( A1 & " Equity" ; param1 ; param2 )

En partant d'une référence Rge.Address dans VBA (qui me donne donc A1), je n'arrive pas à construire la formule dans VBA, probablement à cause de tous les guillemets et double guillemets
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Affectez à FormulaR1C1 des formules en notation R1C1, et non A1.
Remarque: contrairement à ce que vous dites, si Rge représente la cellule A1, Rge.Address doit donner "$A$1" et non pas "A1". Et Rge.Address(ReferenceStyle:=xlR1C1) donne "R1C1"
 
Dernière édition:

F22Raptor

XLDnaute Impliqué
En effet Dran ! Merci !
J'ai changé pour FormulaLocal ... mais je dois tjs avoir un souci avec mes guillemets ...
Je teste d'autres combinaisons

EDIT : pour le A1 // $A$1 , il me faut du "sans $" pour pouvoir dérouler la formule sur les cellules du dessous, si besoin. J'utilise donc :
Rge.Address(RowAbsolute:=False, ColumnAbsolute:=False)
 

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat