Je fais une boucle où je souhaiterais mettre une formule
VB:
For i = 1 to 10
'Je souhaiterais qu'il mette dans la cellule K&i la formule : J&i divisé par la cellule K$2)
Next i
Le but étant de pouvoir déplacer mes lignes (en ajouter ou/et en supprimer, sans que ça n'influence le résultat) et/ou changer la valeur de la cellule K$2 et garder un résultat à jour.
J'ai essayé d'adapter :
Code:
Range("C2").Formula = "=A2*B2"
' avec des variantes de
Range("K" & i).Formula = "=Cells(i,10)/(K$2/2)"'
Merci beaucoup d'avoir pris le temps de regarder mon problème.
Tel que je l'ai formulé, votre formule fonctionne parfaitement. Mais j'avais un peu simplifier ma problématique.
1. En fait ma boucle de va pas de 1 à 10, mais de
VB:
For i = 6 To DerniereLignePlan
'Où '
DerniereLignePlan = = Cells(Rows.Count, 5).End(xlUp).Row
=> est-ce possbible d'appliquer votre formule sur une plage féfinie avec une variable ?
2. De plus j'ai plusieurs autres formules à insérer ailleurs dans mon onglet. P.ex.:
Code:
For i = 7 To DerniereLignePlan
If Range("F" & i) = Range("F" & i - 1) Then
Range("L" & i) = Range("L" & i - 1) + Range("F" & i)
'*********************A remplacer par la mise en place de la fromule dans la cellule
End If
Next i
For i = 1 To 10
Range("K" & i).Formula = "=J" & i & "/K$2"
Next i
ou ceci :
VB:
With Range("K1")
.Formula = "=J1/K$2"
.Copy .Resize(10)
End With
Bon, évidemment là ça ne rime pas à grand chose puisque ça fait écrire en K2 une formule qui fait référence à elle-même... Mais je suppose que c'est le principe que tu veux et non quelque chose d'exact.
For i = 1 To 10
Range("K" & i).Formula = "=J" & i & "/K$2"
Next i
ou ceci :
VB:
With Range("K1")
.Formula = "=J1/K$2"
.Copy .Resize(10)
End With
Bon, évidemment là ça ne rime pas à grand chose puisque ça fait écrire en K2 une formule qui fait référence à elle-même... Mais je suppose que c'est le principe que tu veux et non quelque chose d'exact.
Merci beaucoup, c'est plus facile à comprendre our moi.
J'ai résolu ainsi presque tous mes points.
Il me reste juste:
VB:
For i = 1 to cible)
Range("M" & i) = Range("L" & i) + (Range("K" & i)*7)
next i
'J'ai essayé sans succès
Range("M" & i).Formula = "=L" & i & ("+K" & i) * 7
Oui, je me doute un peu car pour moi aussi c'est plus simple à comprendre.
Mais si Bernard a donné une autre possibilité, c'est certainement parce que c'est mieux et plus efficace.
Bernard a des connaissances qui sont à années-lumière de mes balbutiements !
Le problème du "Copy", c'est qu'il copie tout. Et si tu as des MFC (Mises en Forme Conditionnelles), ou des mises en forme de cellules, ça va aussi se recopier, et c'est pas bon ça...
For i = 1 to cible)
Range("M" & i) = Range("L" & i) + (Range("K" & i)*7)
next i
'J'ai essayé sans succès
Range("M" & i).Formula = "=L" & i & ("+K" & i) * 7
Sub AutofillTest()
Dim DerLgn as long
Dim SourceR as Range
Dim CibleR as Range
With Worksheets("Consolidation")
Derlgn = .Cells(.Rows.Count, 10).End(xlUp).Row
.Range("K6").FormulaR1C1 = "=RC[-1]/R2C"
Set SourceR = .Range("K6")
Set CibleR = .Range("K6:K" & Derlgn)
SourceR.AutoFill Destination:=CibleR
CibleR.Value = CibleR.Value
End With
End Sub