Formule dans une macro

S

SWEAT

Guest
Bonjour le forum,

Je cherche à fair une macro qui met à jour une formule dans une cellule.
Je m'explique, j'ai en cellule A2 la formule suivante : "=B205/CF41-1"
C'est à dire, cellule B205 divisé par cellule CF41.

Je cherche à ce que, quand je lance ma macro, il écrive, toujours en cellule A2, la formule suivante :"=B206/CF41-1", puis si je relance une nouvelle fois la macro il écrive en cellule A2, "=B207/CF41-1", ce qui veut dire qu'à chaque fois que je lance ma macro il mette à jour la formule en cellule A2 pour que la formule change avec B206, B207, B208 etc...

Merci à tous de votre aide !
 
J

Jef

Guest
salut sweat,

essaye ça dans ta macro

i = i + 1
Sheets("feuil1").Cells(2, 1).FormulaLocal = "=B" & Trim(204 + i) & "/CF41-1"

attention, il faut garder en memoire ton indice i entre 2 lancement macro sinon tu recomence toujours sur la meme cellule...

@+
jef
 
R

Robert

Guest
Salut Sweat, Jef, le forum,

Je te propose aussi ça :

Sub Macro1()
x = Mid(Range("A2").Formula, 3, 3) 'récupère la valeur de B dans la formule actuelle
Range("A2").Formula = "=B" & x + 1 & "/CF41-1" 'l'incrémente dans la nouvelle formule
End Sub

Attention la macro va planter dès que tu atteindras la cellule B1000...

À plus,

Robert
 
R

Robert

Guest
Re salut Sweat, Jef, le forum,

Je ne comprends pas car au boulot ou chez moi avec Windows XP et Excel 2000 ça fonctionne...
Essaie cette nouvelle version FormulaR1C1 qui couvre toutes des cellules de B100 jusqu'à B65536 :

Sub Macro1()
Dim x As Long
Select Case Len(Range("A2").Formula) 'nombre de caractères de la formule
Case 12 'jusqu'à B999
x = Mid(Range("A2").Formula, 3, 3) 'récupère la valeur de B dans la formule actuelle
Range("A2").FormulaR1C1 = "=R[" & x - 1 & "]C[1]/R[39]C[83]-1" 'l'incrémente dans la nouvelle formule
Case 13 'jusquà B9999
x = Mid(Range("A2").Formula, 3, 4) 'récupère la valeur de B dans la formule actuelle
Range("A2").FormulaR1C1 = "=R[" & x - 1 & "]C[1]/R[39]C[83]-1" 'l'incrémente dans la nouvelle formule
Case 14 'jusqu'à B65536
x = Mid(Range("A2").Formula, 3, 5) 'récupère la valeur de B dans la formule actuelle
Range("A2").FormulaR1C1 = "=R[" & x - 1 & "]C[1]/R[39]C[83]-1" 'l'incrémente dans la nouvelle formule
End Select
End Sub

À plus,

Robert
 

Discussions similaires

Statistiques des forums

Discussions
313 131
Messages
2 095 546
Membres
106 293
dernier inscrit
jjj