[VBA] Syntaxe objet dans formule R1C1

Bonjour à tous,

J'aimerais comparer deux feuilles d'un même fichier Excel, une que j'appelle new_sh et l'autre old_sh et faire apparaître, à l'aide de la fonction INDEX + EQUIV, certaines caractéristiques.

Le problème est que je ne sais pas comment inclure un objet dans une formule R1C1.

Mon code ci-dessous :

'dimmensionnement du nom de ma feuille comme une chaîne de caractères
Dim old_sh as String

'l'utilisateur doit renseigner quelle est la la feuille "old" à comparer avec des valeurs plus récentes déjà présentes dans la feuille de sytnhèse
old_sh = InputBox("Saisissez maintenant le nom de la feuille la plus ancienne à analyser")

'Formule pour trouver la valeur cherché dans la feuille old_sheet
    ActiveCell.FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(RC1,'old_sh'!C[2],1,FALSE)),""ajoutée"",""ok"")"

C'est le old_sheet que je ne sais pas écrire dans une formule de type R1C1 en fait. Comment gère-t-on les !, les ', que l'on trouve habituellement en faisant des formules "à la main" ?

Est-ce qu'il faut le dimensionner en tant que String ? Ou comme une Worskheets ? Auquel cas je ne peux pas demander à l'utilisateur de le renseigner en utilisant une InputBox..

Merci d'avance de votre précieuse aide

Bonjour,

A mon avis, tu as déjà compris le principe ...

Une fois que tu as défini toutes les variables comme String ... dans la rédaction de ta formule, il ne te reste qu'à utiliser la concaténation entre les différents éléments avec le sigle & ...

Merci de ton aide James.

J'ai peut-être compris le principe mais je n'arrive pas à l'appliquer malheureusement ...

J'ai tout essayé :

    Range("B6").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(RC1,old_sh & ""C[2],1"",FALSE)),""ajoutée"",""ok"")"

Ou

    Range("B6").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(RC1,'old_sh'! & ""C[2],1"",FALSE)),""ajoutée"",""ok"")"

Ou

    Range("B6").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(RC1,'old_sh'! & C[2],1,FALSE)),""ajoutée"",""ok"")"

Ou

    Range("B6").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(RC1,""old_sh"" & ""C[2],1"",FALSE)),""ajoutée"",""ok"")"

(il doit y avoir de très vilaines formulations là-dedans )

Mais rien ne fonctionne...

Et même comme ça :

    Range("B6").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(RC1, & old_sh & ""C[2],1"",FALSE)),""ajoutée"",""ok"")"

Mais toujours rien

Une idée svp ?

Bonjour

Bonjour James007

Testes

 Range("B6").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(RC1,'" & old_sh & "'!C[2],1,FALSE)),""ajoutée"",""ok"")"

Hello, j'avais trouvé tout seul promis !

Merci en tout cas pour votre aide, je note ce sujet comme résolu.

Bonne fin de journée.

Bonjour,

Félicitations pour ta maitrise de la concaténation !!!

Rechercher des sujets similaires à "vba syntaxe objet formule r1c1"