Variable VBA indiquant une cellule et non pas son contenu

Bonjour,

Dans le code VBA ci-dessous, je définis la formule suivante :

Range("AX20").Formula = "= (R[-15]C[-33]+R[-15]C[-28]+R[-15]C[-26]+INDEX('Exemple'!R4C1:R16C104,MATCH(R[-15]C[-49],'Exemple'!R4C1:R16C1,0),MATCH(""test"",'Exemple'!R4C1:R4C104,0))"

Si quelqu'un regarde le résultat sur la feuille excel il verra un truc comme = (Q5+X5+V5+INDEX('Exemple'!$A$4:$CZ$16;EQUIV(A5;'Exemple'!$A$4:$A$16;0);EQUIV("test";'Exemple'!$A$4:$CZ$4;0))

Retrouver la cellule Q5 ou X5 est facile, retrouver la cellule définie par l'INDEX l'est moins pour les gens peu familiers d'excel.

Imaginons que cette cellule définie par l'INDEX (on va dire Z5) contienne le chiffre 100, Si je remplace l'INDEX par une variable dans le code VBA, je vais retomber sur = (Q5+X5+V5+100).

Or j'aimerais autre chose, définir l'INDEX par une variable pour un souci de clareté dans le code VBA et que ma formule sous excel indique au final = (Q5+X5+V5+Z5).

Merci au premier qui trouvera !!

bonsoir

si tu es capable d'avoir le "Z5" dans une variable par exemple toto

cela donnerais

Range("AX20").Formula = "= (R[-15]C[-33]+R[-15]C[-28]+R[-15]C[-26]+" & toto & ")"

Fred

Hello

Pour faire plus simple concernant ma demande, imaginons la cellule Z10 contenant le chiffre 100. Dans la cellule A1 contenant une formule, je fais appel à un Index se référant à Z10. Dans le code VBA de la formule d'A1 je souhaiterais trouver un moyen d'avoir =Z10 et non pas =100 ou =Index(...) quand je suis sur la feuille excel et que je clique sur A1. C'est la référence de la cellule visée par L'index qui m'intéresse et non pas son contenu.

Merci !!

ps : je suis obligé d'utiliser un Index car la cellule recherchée (exemple présent Z10) n'est pas toujours située au même endroit dans mon fichier excel

bonjour je ne sais pas si j'ai bien compris

En Z10 tu mets ta formule INDIRECT (.......) c'est cela ??

et tu voudrais dans la cellule A1 ecire une formule = X+Y+ Z10 . c'est cela ???

dans ce cas tu peux mettre la formule déjà donnée :

Range("A1").Formula = "=Z10"

J'espère avoir bien compris a toi de rajouter les autres éléments de ton addition

Fred

Dans la cellule A1, via une formule je fais l'addition de montants indiqués dans plusieurs cellules. L'une d'entre elles n'est pas toujours placée au même endroit selon les fichiers (pour prendre un exemple on va dire qu'elle est en Z10 mais elle pourrait être en AA10, W10, etc), je fais donc appel à un Index pour la retrouver dans la formule d'A1.

Ma formule actuelle de A1 est = P10 + R10 + Index(...) <---- L'index se référant à Z10 dans notre exemple.

Cette formule est caclculée via une macro VBA

Je souhaiterais trouver un moyen dans le code VBA pour utiliser un Index mais lorsque je regarderais ma formule sous excel j'aurais = P10 + R10 + Z10

bonjour,

à tester

Range("AX20").Formula = "= (R[-15]C[-33]+R[-15]C[-28]+R[-15]C[-26]+cell("address",INDEX('Exemple'!R4C1:R16C104,MATCH(R[-15]C[-49],'Exemple'!R4C1:R16C1,0),MATCH(""test"",'Exemple'!R4C1:R4C104,0)))"

le résultat est #VALEUR! et si je regarde ma cellule j'ai =P10+R10+CELLULE("adresse";Z10)

Je vois ce que pourrait être ta solution mais ça me gênerait de me retrouver avec des $ si jamais le résultat était =P10+R10+$Z$10

Les $ ont tendance à être vite chiant quand on déroule les formules sur plusieurs lignes...

Bonjour,

un autre essai à tester

Range("AX20").Formula = "=MATCH(R[-15]C[-49],'Exemple'!R4C1:R16C1,0)"
a=Range("AX20").value
Range("AX20").Formula = "=MATCH(""test"",'Exemple'!R4C1:R4C104,0)"
b=Range("AX20").value
Range("AX20").Formula = "= (R[-15]C[-33]+R[-15]C[-28]+R[-15]C[-26]+" & Replace(Range("A4").Offset(a, b).Address, "$", "")
 

Bonjour,

mais ça me gênerait de me retrouver avec des $ si jamais le résultat était =P10+R10+$Z$10

Les $ ont tendance à être vite chiant quand on déroule les formules sur plusieurs lignes...

Je ne comprend pas trop la logique.

Référence absolue ou relative, comment peux-tu espérer avoir une recopie incrémentée correcte puisque toi même tu dis que cette dernière référence varie tout le temps et dépend d'un equiv() ?

Ce qui en plus fait que tu devras relancer la macro au moindre changement pour être sûr du résultat. A ce compte là pourquoi ne pas mettre uniquement le résultat final, sans formule ?

Par ailleurs il n'y a pas de type de référence chiante, il y a juste le type correct qui va bien en fonction du besoin...

eric

Rechercher des sujets similaires à "variable vba indiquant pas contenu"