FormulaR1C1 accès à une autre feuille

Bonjour,

J'obtiens une erreur à la ligne en gras pourtant il me semble déjà avoir utilisé ce code dans une autre feuille excel. Le but du code étant de soustraire à la colonne E d'une feuille sur deux le contenu de la colonne de la feuille précédente.

Je vous remrcie d'ores et déjà de votre aide et me réjouis de progresser en VBA!

Olhey

Sub Macro6()

'

' Macro6 Macro

'

For I = 1 To 4

ActiveSheet.Range("E5").Select

ActiveCell.FormulaR1C1 = "=RC[-2]-ThisWorkbook.Sheets(ActiveSheet.Index - 1).RC[-2]"

Range("E5").Select

Selection.AutoFill Destination:=Range("E5:E10639")

ThisWorkbook.Sheets(ActiveSheet.Index + 2).Select

Next

End Sub

Bonjour,

Copier du code sur l'enregistreur, ou écrire des formules en VBA, ne te fera pas beaucoup progresser en VBA !

Pour l'instant note que pour inscrire une formule dans une cellule, il convient que la chaîne inscrite soit écrite comme une formule !

Je conseille donc de l'écrire manuellement dans ta cellule pour voir la différence avec ce que tu écris comme formule en VBA.

Cordialement.

Merci de votre réponse. C'est vrai que c'est un peu boulet d'utiliser l'enregistreur, mais j'utilise VBA dans le cadre de mon travail et je dois faire un compromis temps investi/ temps gagné. Et généralement une combinaison enrgistrement/ajout de variable donne de bon résultats!

Mis à part le fait que l'investissement pour parvenir à coder sans enregistreur est cumulatif et permet un code toujours meilleur que tout code sorti de l'enregistreur. Investissement largement compensé à long terme...

Ceci étant, il n'en reste pas moins que écrire une formule en VBA implique de savoir l'écrire manuellement. Le test comparatif devrait donc être tout à fait productif.

La formule dans la cellule est toute simple:

C6-Feuilprécédente!C6, (ainsi de suite, ligne par ligne)

mon problème est bien de dynamiser l'accès à la feuille précédente ce que je fais avec la notion d'index de feuille. Mon problème est certainement la syntaxe de la variable dans la référence à la cellule.

edit :

J'ai changer comme ça, mais j'ai une erreur de synthaxe

ActiveCell.FormulaR1C1 = "=" & RC[-2] &"-"& ThisWorkbook.Sheets(ActiveSheet.Index - 1).RC[-2] & ""

Si ta syntaxe initiale ne déclenchait pas d'erreur, elle devait insérer une formule en E5 que tu peux comparer avec ta formule manuelle ! Non ?

Et (autre question), tu pars de quelle feuille ? et pourquoi ce pas de 2 à la fin ?

justement pas:

run-time error 1004

application-defined or object -defined error

Je pars de la feuille(appelons là) 2 et il soustrait une valeur de la feuille 1, ensuite il va à la 4 et soustrait une valeur de la 3.

C'est vrai que la formule est analysée avant inscription et là elle ne peut pas...

Sub Test()
    Dim i%
    For i = 2 To 8 Step 2
        With Worksheets(i).Range("E5")
            .FormulaR1C1 = "=RC[-2]-" & .Worksheet.Previous.Name & "!RC[-2]"
            .AutoFill Range("E5:E10639")
        End With
    Next i
End Sub

C'est le nom de la feuille qu'il faut introduire dans la formule... ! J'utilise Previous car plus court que d'aller chercher l'index...

Ton code remis sur pied avec suppression de tout select et autre élément inutile, variables déclarées, boucle réajustée au besoin, mise sous bloc With permettant de qualifier toutes les expressions incluses dans le bloc et évitant des répétitions...

A noter que si tu ne travailles pas habituellement en style L1C1, il n'est pas utile d'imiter l'enregistreur (qui ne connaît que FormulaR1C1) :

            .Formula = "=C5-" & .Worksheet.Previous.Name & "!C5"

sera plus simple à écrire, et plus immédiatement parlant...

Cordialement.

Bonjour,

C'est vrai que c'est bien plus propre!

Je vous remercie de vos explications détaillées ça fonctionne. J'aimerais avoir été formé lors de mon parcours académique sur VBA...

A la prochaine.

La formation n'a pas besoin d'être obligatoirement académique pour être efficace. Ceux qui ont démarré avec VBA dans les années 90 s'en sont passé et ont utilisé les moyens dont on pouvait disposer alors... C'est toujours un plus d'avoir eu une formation initiale avant de plonger... mais on dispose de nombreux moyens d'y pallier aujourd'hui...

Cordialement.

Rechercher des sujets similaires à "formular1c1 acces feuille"