Formule qui s'incrémente dans une macro

Bonjour,

Je cherche à faire en sorte que la formule s'incrémente.

Dans la macro actuelle pour chaque cellule non vide dans la plage A2:A16, on applique la formule.

Comment puis je faire pour que cette formule s'incrémente comme il faut ?

Comment puis je remplacer la formule par la valeur après calcul ?

Dans mon exemple j'ai mis une formule simple pour comprendre comment incrémenter B2:C2

je suppose qu'il faut que je crée une variable mais je sais pas trop comment m'y prendre.

Public Sub Traitement()
Dim Cel As Range
  For Each Cel In Range("A2:A16")
    If Not IsEmpty(Cel) Then Cel.Offset(0, 3) = "=SUM($B2:$C2)"
  Next
End Sub

bonsoir,

pour copier la formule avec adaptation du numéro de ligne

Public Sub Traitement()
Dim Cel As Range
  For Each Cel In Range("A2:A16")
    If Not IsEmpty(Cel) Then Cel.Offset(0, 3).FormulaR1C1 = "=SUM(RC[-2]:RC[-1])"
  Next
End Sub

pour mettre le résultat du calcul

Public Sub Traitementval()
Dim Cel As Range
  For Each Cel In Range("A2:A16")
    If Not IsEmpty(Cel) Then Cel.Offset(0, 3) = Cel.Offset(0, 1) + Cel.Offset(0, 2)
  Next
End Sub

Bonjour

Bonjour h2so4

Une autre solution

 Public Sub Traitement()
  With Range("D2:D" & Range("A" & Rows.Count).End(xlUp).Row)
    .Formula = "=IF(A2="""","""",SUM(B2:C2))"
    .Value = .Value
  End With
End Sub

Merci à vous 2, c'est exactement ce que je souhaitai.

H2so4, dans ta solution y a t'il moyen qu'à chaque fois que la formule soit appliquée à une cellule elle soit transformer en valeur ?

Dans un autre tableau du même type avec un peu plus de colonne j'ai une formule matricielle qui fonctionne très bien mais sa rame avec beaucoup de ligne, du coup si je pouvais appliquer la formule puis aussitôt mettre sa valeur et passer à la suivante sa m'arrangerait complètement.

Public Sub Traitement()
Dim Cel As Range
  For Each Cel In Range("A2:A16")
    If Not IsEmpty(Cel) Then Cel.Offset(0, 3).FormulaR1C1 = "=SUM(RC[-2]:RC[-1])"
   Cel.Offset(0, 3).copy
   Cel.Offset(0, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  Next
End Sub

Ca semble fonctionner comme ceci, mais sa reste encore long...

Bonjour,

voici une macro qui remplace la formule par son résultat, pour toutes les cellules selectionnées

Sub repforparval()
    With Selection.SpecialCells(xlCellTypeFormulas, 23)
    .Copy
    .PasteSpecial Paste:=xlPasteValues
    End With
End Sub

Merci pour ta réponse.

J'ai encore beaucoup de travail, il y a tellement à apprendre...

Rechercher des sujets similaires à "formule qui incremente macro"