Formule : IFERROR(IF(ISNUMBER(OFFSET dans VBA

Bonjour à tous,

Svp est ce que vous pourriez m'aider sur le code que j'essaie d'écrire. Je suis une débutante en VBA et je suis bloquée

Je vous joins un fichier excel avec le début du code que j'ai écris pour le moment.

Je veux faire un code qui me permettra d'écrire cette formule : IFERROR(IF(ISNUMBER(OFFSET('FR1'!B1;0;-UFF!$F$5));OFFSET('FR1'!B1;0;-UFF!$F$5);0);0) dans une cellule.

Dans le code que j'ai commencé à écrire, j'ai mis des boucles car j'aurai plusieurs fichiers (FR1, FR2, .... FRN - nombre de feuille indeterminé et variable selon les cas - Boucle For N). Je devrai aussi écrire cette formule dans plusieurs céllules (deux boucles For i et For j).

Je vous remercie beaucoup pour votre aide,

BKam

Ps : est ce que quelqu’un pourrait m'orienter vers un site/fichier qui contient une traduction de la syntaxe excel dans vba svp? Merci!

ici > https://www.excel-pratique.com/fr/index_des_fonctions/traduction_formule.php

SIERREUR(SI(ESTNUM(DECALER('FR1'!B1;0;-UFF!$F$5));DECALER('FR1'!B1;0;-UFF!$F$5);0);0)

génial ce site !

Merci, mais ce n'est pas exactement cedont j'avais besoin mes feuilles sont variables, je veux un fichier et une formule dynamiques, je suis parvenue à le faire en utilisant une astuce (merci ma petite tête 8) ) cela dit j'ai un souci avec l’exécution de la formule (pas si forte que ça la petite tête malheureusement )

En fait, je crée une formule dans une cellule (c'est la concaténation d'autres cellules). Lorsque je copie et colle ma formule dans la cellule qu'il faut, ma macro me la colle sans l’exécuter (en résumé j'ai le texte de la formule mais pas le résultat), pour avoir le résultat je suis obligée d'aller double clicker dans ma cellule cible et d'appuyer sur entrer --> ma formule s’exécute et me donne mon résultat.

Etant donné que cette étape est au milieu de ma macro, je ne peux pas le faire manuellement et malheureusement je ne sais pas le faire sur vba j'ai essayé plusieurs solutions (dont Range("a1").calculate) mais ça ne marche pas, svp est ce que quelqu'un saurait m'aider?

Si vous voulez je peux joindre un autre fichier excel,

Merci!!

BKam, je reviens après 3 semaines d'absence ... je veux bien un fichier pour t'aider, ne serait-ce aussi que pour me rappeler le sujet !

Salut,

Dsl j'avais beaucoup de travail voici le fichier en PJ, si tu click sur le bouton(Copy_Paste), ma macro (macro 2) va faire tout ce que je sais faire pour le moment et elle collera ma formule dans la feuille FR_All - cellule A1 sous format texte, il faut alors que j'aille double clicker sur la cellule A1 pour que j'ai le résultat de ma formule.

Tu verras dans la feuille inputs comment je construis ma formule, en fait je suis contrainte de la construire comme ça car les feuilles FR1, FR2, SP1 ... n'existe pas tout le temps, ce sont des variables et ne portent pas toujours le même nom, je suis arrivée à creer un fichier dynamique qui me créer le nombre de feuille de calcul dont j'ai besoin et à me coller mes données dans les feuilles...etc (le reste de mon code qui n'est pas dans le fichier que je te joins). Donc la partie que tu trouveras dans ce fichier s'inclut dans un code plus long...beaucoup plus long!!

Je te remercie beaucoup, et j'espère vraiment que tu pourras m'aider parceque sinon je serai obligée de créer des feuilles statiques et c'est tellement beau un fichier et des formules dynamiques! ça me fera gagner du temps et de l'espace

Si tu as besoin de plus d'explications, n'hésite pas!

BKam

je suis en EXCEL 2010 FR, donc difficile pour moi de tester

je vais donc me créer une formule française et tester différentes solutions !

mais il y a aussi une autre piste possible, c'est d'utiliser INDIRECT qui permet d'appeler des plages variables (donc des feuilles paramétrables) ou encore SUBSTITUE pour remplacer des termes d'une formule ...

Essaie ceci :

Sub Macro2()
'
' Macro2 Macro
'
Dim ws As Worksheet
Set ws = Application.ActiveSheet

'
    Range("L5").Select
    Selection.Copy
    Range("M5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Sheets("FR_all").Select
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "=" & ws.Range("M5").Value

End Sub

Merci pour tes réponses Steelson, la dernière ligne du code ne fonctionne pas, je pense que c'est dû au fait que la formule n'est pas sous le format R1C1, j'ai essayé en utilisant .formula uniquement mais ça ne marche pas non plus

Parcontre je te remercie pour l'idée de l'indirect, je vais essayer d'utiliser ça, je pense que ça va m'aider! je te tiens au courant sur la méthode que j'utiliserai pour régler tout ça

Bonnes recherches ...

ActiveCell.FormulaR1C1 = "=" & ws.Range("M5").Value

fonctionne, mais en effet il faut adapter la formule.

Rechercher des sujets similaires à "formule iferror isnumber offset vba"