Pb ecriture formule dans cellule

Bonjour,

je souhaiterais :

  • mettre en AF13 la formule suivante : =SI(P13=1;I13;SI(P13=2;I14;SI(P13=3;I15;SI(P13=4;I16))))
  • mettre en AF14 la formule suivante :=SI(Q13=1;I13;SI(Q13=2;I14;SI(Q13=3;I15;SI(Q13=4;I16))))
  • mettre en AF15 la formule suivante : =SI(R13=1;I13;SI(R13=2;I14;SI(R13=3;I15;SI(R13=4;I16))))
  • mettre en AF16 la formule suivante : =SI(S13=1;I13;SI(S13=2;I14;SI(S13=3;I15;SI(S13=4;I16))))

J'ai donc tenté de définir un array avec = (P, Q, R, S) et d'écrire la formule en vba :

Sub formule()

Dim ligne As Integer

Dim colonne As string

Dim i As Byte

colonne = ActiveCell.Column

produit = Array("P", "Q", "R", "S")

For ligne = 13 To 16

For i = 0 To UBound(produit, 1)

Range(colonne, ligne).FormulaLocal = "=SI("&produit(i)&ligne&"=1;I"&ligne&";SI("&produit(i)&ligne&"=2;I"&ligne+1&";SI("&produit(i)&ligne&"=3;I"&ligne+2&";SI("&produit(i)&ligne&"=4;I"&ligne+3))))

Next i

Next ligne

End Sub

cela ne marche pas, pouvez vous m'indiquer l'erreur ?

merci beaucoup,

jasserin

Bonjour

Je n'ai pas voulu chercher l'erreur

Une macro pour inscrire tes formules

Sub formule()
Dim Colonnes
Dim I As Integer

  Colonnes = Array("P", "Q", "R", "S")
  For I = 0 To UBound(Colonnes)
    Cells(13 + I, "AF").Formula = "=IF(" & Cells(13, Colonnes(I)).Address(rowabsolute:=False, columnabsolute:=False) & _
                            "=1,I13,IF(" & Cells(13, Colonnes(I)).Address(rowabsolute:=False, columnabsolute:=False) & _
                            "=2,I14,IF(" & Cells(13, Colonnes(I)).Address(rowabsolute:=False, columnabsolute:=False) & _
                            "=3,I15,IF(" & Cells(13, Colonnes(I)).Address(rowabsolute:=False, columnabsolute:=False) & "=4,I16))))"
  Next I
End Sub

Une version simplifiée

Sub formuleBis()
Dim Colonnes
Dim I As Integer

  Colonnes = Array("P13", "Q13", "R13", "S13")
  For I = 0 To UBound(Colonnes)
    Cells(13 + I, "AF").Formula = "=IF(" & Colonnes(I) & _
                            "=1,I13,IF(" & Colonnes(I) & _
                            "=2,I14,IF(" & Colonnes(I) & _
                            "=3,I15,IF(" & Colonnes(I) & "=4,I16))))"
  Next I
End Sub
Rechercher des sujets similaires à "ecriture formule"