Insérer un formule Excel dans VBA

Bonjour à tous,

Je souhaite intégrer dans ma macro la formule que j'utilisais sur mon classeur classique:

=CONCATENER(Z2;" - ";SI(C2=618514;"Animation";"Logistique");" - ";S2;" - ";(TEXTE(R2;"jj/mm/aaa"))).

J'ai essayé de suivre les conseils du forum, mais je n'y arrive pas. J'ai tenté ceci:

Public i As Long

NBligne = Cells(1, 1).CurrentRegion.Rows.Count

For i = 2 To NBligne

.Range(i,H).Formula ="=CONCATENER(Z2;"-";SI(C2=618514;"Animation";"Logistique");"-";S2;"-";(TEXTE(R2;"jj/mm/aaa")))"

Ma particularité est que la longueur de ma colonne H variera d'une semaine à l'autre.

Dans cette option j'ai un message d'erreur sur "animation"=> fin d'instruction attendu.

Merci d'avance pour votre aide :)

Salut Zaza,

ainsi, peut-être?
J'imagine que le POINT devant Range correspond bien à un With Worksheets("xxx") ?

For i = 2 To NBligne
    .Range("H" & i).FormulaLocal = "=CONCATENER(Z" & i & ";""-"";SI(C" & i & "=618514;""Animation"";""Logistique"");""-"";S" & i & ";""-"";(TEXTE(R" & i & ";""jj/mm/aaa"")))"
Next

A+

Ca marche, c'est génial, merci beaucoup

Effectivement, j'avais aussi oublié le WITH

Juste pour que je comprenne bien, peux-tu m'expliquer comme VBA arrive à savoir avec cette formule qu'il faut commencer en H2 pour ne pas prendre le titre?

Quelle est la différence entre .formula et .formulaLocal?

Sub ColonneH()

NBligne = Cells(1, 1).CurrentRegion.Rows.Count

With Worksheets("BDD")

For i = 2 To NBligne

.Range("H" & i).FormulaLocal = "=CONCATENER(Z" & i & ";"" - "";SI(C" & i & "=618514;""Animation"";""Logistique"");"" - "";S" & i & ";"" - "";(TEXTE(R" & i & ";""jj/mm/aaa"")))"

Next

End With

End Sub

Salut Zaza,

VBA ne sachant pas ce qu'est un titre, c'est à toi à spécifier le début de la boucle, soit directement comme tu l'as fait d'ailleurs (For x = 2 to...), soit en lui donnant préalablement à ta boucle une donnée à rechercher comme étant un titre qu'il doit zapper (avec FIND, par exemple).
Si tu utilises des tableaux structurés, tu n'auras même pas à le calculer : ce sera automatique.

Avec 'Formula', ta formule doit être écrite avec des mots-clés anglais (CONCAT, IF...) tandis que FormulaLocal t'autorise à utiliser la langue régionale de ton Excel.

A+

Hello Curulis,

C'est parfaitement clair, merci beaucoup pour ton temps.

A+ :)

Rechercher des sujets similaires à "inserer formule vba"