Le titre n'est pas forcément trés parlant, mais je recherche en fait la possibilité d'écrire une formule dans des cellules via une macro. Alors jusque là, rien de bien compliqué, sauf que cette formule doit changer à chaque ligne.
Dans le cas présent, il s'agit d'une fonction SOMME.SI, mais cela pourrait être autre chose.
Le code ci-dessous (qui ne fonctionne pas bien sur) devrait vous éclairer sur ce que je souhaite réaliser.
Dim o As String
o=1
Range("A" & i).FormulaLocal = "=SOMME.SI(FEUIL2!$A$1:$A$100;("D" & i);FEUIL2!$B$1:$B$100)"
o=o+1
next
Je joins également un fichier exemple dans lequel les formules sont écrites en "dur".
Re : Ecriture formule via macro avec cellule de référence variable
Salut titymax, le Forum
Un essai avec ce bout de Code
Code:
Dim i As Byte, DerLig As Long
DerLig = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To DerLig
Feuil1.Range("A" & i).FormulaLocal = "=SOMMEPROD((Feuil2!$A$2:$A$9=Feuil1!D" & i & ")*(Feuil2!$B$2:$B$9))"
Next i
j'ai changé ton SOMME.SI par SOMMEPROD mais ça fonctionne aussi
Re : Ecriture formule via macro avec cellule de référence variable
Bonjour Pierrot et merci,
Je me doutais bien qu'il y avait une subtilité, mais vu mon niveau en VB c'était peine perdue...
Par contre, dans mon exemple, il n' y a qu'à la 1ère ligne que s'affiche la formule, et non toutes c à d là où il y a des valeurs. En effet, la formule devrait apparaitre de la ligne A2 à A12...
Le code utilisé est le suivant :
Dim cel As Range, i As String
For Each cel In Range("d2", [d100].End(xlUp))
i = 2
Range("a" & i).FormulaLocal = "=SOMME.SI(FEUIL2!$A$1:$A$100;D" & i & ";FEUIL2!$B$1:$B$100)"
i = i + 1
Next
Re : Ecriture formule via macro avec cellule de référence variable
Re le Fil
As tu essayé mon Code il aurait fait le Travail
Ton Code modifié
Code:
Sub SOMMESI()
Dim i As Long, DerLig As Long
DerLig = Range("D" & Rows.Count).End(xlUp).Row
For i = 2 To DerLig
Range("A" & i).FormulaLocal = "=SOMME.SI(FEUIL2!$A$1:$A$100;D" & i & ";FEUIL2!$B$1:$B$100)"
Next i
End Sub
De plus la variable i est doit être Integer ou Long
Re : Ecriture formule via macro avec cellule de référence variable
salut
une autre solution en passant par la fonction VBA, n'est-ce pas Dull ?
Code:
Sub SOMMESI()
Dim R As Range, Dl As Long
With Feuil2
Dl = .Cells(Rows.Count, 1).End(xlUp).Row
For Each R In Range("D2", [D100].End(xlUp))
Cells(R.Row, 1) = Application.SumIf(.Range("A1:A" & Dl), R, .Range("B1:B" & Dl))
Next
End With
End Sub
Re : Ecriture formule via macro avec cellule de référence variable
Bonjour et merci Dull et Si... sans oublier Pierrot,
Effectivement la réponse à ma remarque (de 10h20) a été apportée le temps que je la pose par Dull (à 9h44) je comprends pas mais bon...., sachant que le code de Si... y répond également, mais est peut être un peu plus compliqué mais c'est pas la mort non plus.
En tous les cas un grand merci encore une fois à vous tous et vive le forum E-D qui est un vrai puits de science