Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 
S

SWEAT

Guest
Salut Robert,

Merci beaucoup, ta solution est très bien aussi. Je suppose que quand j'attendrai la cellule B1000 je devrai écrire : x = Mid(Range("A2").Formula, 4, 4) ?

Merci à tous les 2.

A+
 
S

SWEAT

Guest
RE SALUT Robert,

Je viens d'essayer ta manière, et cela ne fonctionne pas !!!

La macro beugue sur la ligne :
Range("A2").Formula = "=B" & x + 1 & "/CF41-1"

????

Merci
 
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…