Vba-excel : créer un offset sur formule vba

mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 - 14 janv. 2024 à 10:45
yg_be Messages postés 22732 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 avril 2024 - 14 janv. 2024 à 12:37

Bonjour et bonne année,

Je galère depuis hier matin donc, j'appelle au secours car je ne m'en sort pas.

Travail: Je fais des copies de feuil_n  en feuil_n+1 avec toutes les formules se trouvant dans la feuille et notamment de la formule en "C135" qui est du type :"=feuil_x!E2". Lorsque j'arrive en feuil_n+1 certaines formules de destination doivent être augmentées de 40 lignes pour donner: "=feuil_x!E42" et ainsi de suite au fur et à mesure des copies.

pb: je n'y arrive pas :-(

ma formule était:

formule = ActiveWorkbook.Sheets(feuil_n+1).Range("C135").FormulaLocal     'récupe "=feuil_x!E2" en C135 feuil_n
formule = (Left(formule, 13)) & (Split(formule, "E")(1) + 40)

mais cela ne fonctionne plus car la formule copiée n'est plus celle en C135.
Je pense que c'est parce qu'on est passé en numéro de ligne à 3 digits (centaine), je ne sais pas???

comme je ne comprends pas pourquoi, dans l'instruction "split(formule, "E") (1)" le (1) est à l'extérieur ? j'avais récupéré ça sur le net.

s'il y a une bonne âme pour m'éclairer svp...


A voir également:

2 réponses

yg_be Messages postés 22732 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 avril 2024 1 477
14 janv. 2024 à 12:25

bonjour,

split retourne un tableau, et (1) va chercher le second élément du tableau.

Dim f, s
f = "ABCE123"
s = Split(f, "E")
Debug.Print s(0), s(1)
0
yg_be Messages postés 22732 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 avril 2024 1 477
14 janv. 2024 à 12:37

D'où vient le 13?

Peut-être:

s=Split(formule, "E")
formule = s(0) & "E" & (s(1) + 40)
0