VBA - copier une formule en decalant sa colonne

Résolu/Fermé
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 - Modifié le 2 févr. 2020 à 08:11
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 - 2 févr. 2020 à 12:56
Bonjour,

Dans un classeur j'ai copié une feuil1 avec un tableau, vers une feuil2.

Je souhaite que les formules du tableau de feuil2, qui sont que des copies de cellule d'une autre feuille, soient décalées d'une colonne.

Je lutte en vain pour trouver comment faire.

La formule du tableau est de type "feuil0!A10" et je souhaite la transformer en "feuil0!B10" sur feuil2.

J'obtiens ma formule à partir de ceci:
 Sheets(feuil1).Range("C15").FormulaLocal


Les colonnes ne sont pas toujours les mêmes.

J'ai essayé :

Sheets(feuil2).Range("C15").FormulaLocal=Sheets(feuil1).Range("C15").FormulaLocal.offset(0,1)


mais erreur: "objet attendu"

Pouvez-vous m'aider svp?

Configuration: Windows / Firefox 72.0


A voir également:

2 réponses

mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
Modifié le 2 févr. 2020 à 12:21
J'ai trouvé ceci et ça marche

formule = Sheets(feuil1).Range("C15").FormulaLocal
part1 = Split(formule, "!")(1) 'A10
part2 = Chr$(Asc(Mid(part1, Len(part1) - 2, 1)) + 1) & Right(part1, 2) 'I Incremente colonne
ActiveWorkbook.Sheets(feuil2).Range("C15").FormulaLocal = "feuil1!" & part2

quelle galère...
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
Modifié le 2 févr. 2020 à 13:05
bonjour, je suggère ceci:
Dim tableau As Range, rg As Range
Set tableau = ThisWorkbook.Sheets("Sheet1").[A1:B5]
For Each rg In tableau
    rg.FormulaLocal = "=" + Split(Range(rg.FormulaLocal).Offset(0, 1).AddressLocal(, , , True), "]")(1)
Next rg

ou, dans ton cas:
ActiveWorkbook.Sheets(feuil2).Range("C15").FormulaLocal = "=" _
    + Split(Range(ActiveWorkbook.Sheets(feuil2).Range("C15").FormulaLocal).Offset(0, 1).AddressLocal(, , , True), "]")(1)
0