Ecriture formule via macro avec cellule de référence variable

titymax

XLDnaute Occasionnel
Bonjour les Excel-downloaders,

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".

Un grand merci d'avance.

A bientôt
 

Pièces jointes

  • MAP formule.xls
    22 KB · Affichages: 29
  • MAP formule.xls
    22 KB · Affichages: 33
  • MAP formule.xls
    22 KB · Affichages: 32

Pierrot93

XLDnaute Barbatruc
Re : Ecriture formule via macro avec cellule de référence variable

Bonjour,

pas ouvert ton fichier, mais regarde peut être ceci :
Code:
Range("A" & i).FormulaLocal = "=SOMME.SI(FEUIL2!$A$1:$A$100;D" & i & ";FEUIL2!$B$1:$B$100)"
bonne journée
@+

Edition : bonjour Dull:)
 
Dernière édition:

Dull

XLDnaute Barbatruc
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

EDITION: Salut Pierrot :) pas rafraichit

Bonne Journée
 

titymax

XLDnaute Occasionnel
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

Why ?

A bientôt
 

Pièces jointes

  • MAP formule.xls
    35.5 KB · Affichages: 24
  • MAP formule.xls
    35.5 KB · Affichages: 25
  • MAP formule.xls
    35.5 KB · Affichages: 21

Dull

XLDnaute Barbatruc
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

Bonne Journée
 

Pièces jointes

  • MAP formule-1.xls
    40 KB · Affichages: 32
Dernière édition:

Si...

XLDnaute Barbatruc
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 :D ?
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
 

titymax

XLDnaute Occasionnel
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....:confused:, 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
 

Discussions similaires