Ecrire des dans une formule FormulaLocal

Bonjour,

Vous trouverez ci-joint un copie de mon fichier excel.

J'ai un problème pour écrire une valeur dynamique (nom de l'onglet de la matrice est variant) dans un formule de type FormulaLocal.

Voici ma formule actuelle simplifiée :

ThisWorkbook.ActiveSheet.Cells(5, Dercol + 4).FormulaLocal = "=RECHERCHEV($A5;INDIRECT(" & "'" & Adresse_cellule_D2P & "'!A4:E200" & ");4;FAUX)"

Avec le code précédent j'ai une erreur de type #REF, voici ce qui est affiché dans la formule sur la cellule :

=RECHERCHEV($A5;INDIRECT('G3'!A4:E200);4;FAUX)

Or je souhaiterai, pour que cette formule soit valide, que je puisse voir affiché dans cette cellule ce résultat :

=RECHERCHEV($A5;INDIRECT("'"&$G$3&"'!A4:E200");4;FAUX)

Pouvez-vous m'indiquer la façon d'écrire mon code VBA pour obtenir le résultat ci-dessus ?

Merci d'avance !

Batoine

Bonjour,

Dans ce genre de situation je te conseille de faire comme moi :

A partir de la cellule G5, Copier la formule.

Dans le Gestionnaire de nom Créer un nom (par exemple "PAPILLON"

Dans la zone Fait Référence à :

Coller la formule.

Ensuite modifier la macro :

Sub Macro1()
    ActiveCell = "=PAPILLON"
End Sub

Nota : Comme ta formule est incrémentable la papillon pourra voler de ligne en ligne et incrémentera le bon résultat...

C'est valable également pour H5 : Au lieu de PAPILLON tu peux mettre "BANANE" ou "GALOPIN" avec la formule KIVABIEN , ça marchera aussi bien !

Avantage : Même si la feuille est renommée ou qu'il y des colonnes ajoutées il n'y aura rien à changer !

A+

43formula-vg.xlsm (492.87 Ko)

Bonjour galopin,

Merci pour ta réponse, cependant ta m'embête un peu car l'utilisateur ne pourra plus voir la formule et ne verra que = PAPILLON.

Je continue mes recherches, mais merci quand même !

Batoine

Bonjour,

je ne suis pas sûr d'avoir tout compris mais je te propose cette solution :

ThisWorkbook.ActiveSheet.Cells(5, Dercol + 4).FormulaLocal = "=RECHERCHEV($A5;'" & Range(Adresse_cellule_D2P).Value & "'!A4:E200;4;FAUX)"

Dis moi si cela te conviens !

RemBabar

Bonjour Rembabar,

Ta solution me renvoie l'erreur #VALEUR!. Dommage merci quand même.

J'ai tout de même réussi à résoudre mon problème en le contournant. Si vous aller voir mon fichier original, vous verrez que je copiais la mise en forme du dernier tableau, que je l'ajoutais à partir de la première cellule vide.

Avec cette méthode je devais écrire toutes les formules une à une.

J'ai finalement préféré copier l'ensembles des données et pas que la mises en formes. Ainsi j'avais juste à ne faire varier que le code_projet et à actualiser.

Pour mieux comprendre voici la formule copié en C5 et coller en G5 :

RECHERCHEV($A5;INDIRECT("'"&BC3&"'!$A$4:$E$200");4;FAUX)

La contrainte de cette solution est d'avoir au moins un onglet sur lequel on puisse copier/coller les valeurs.

Merci quand même pour votre aide,

Batoine

Bonjour,

pour mettre une " dans une chaine il suffit de la doubler "" pour indiquer que c'est le caractère que tu veux et non l'indication de fin de chaine.

eric

Rechercher des sujets similaires à "ecrire formule formulalocal"