Insérer une formule via VBA

GillesC

XLDnaute Occasionnel
Bonjour à tous

Je souhaite que mon programme VBA inscrive une formule dans une cellule.

Pour cela, j'utilise :

.Offset(0, 8).Value = "" = "" & "SI(O14<>"""";SI(O14<>0;"" ""&O14&"" jour(s)"";"" Aujourd'hui"");"""")"

Le souci : La cellule affiche "FAUX" et non la formule

La syntaxe de la formule semble pourtant bonne, car si je mets :

.Offset(0, 8).Value = "X=" & "SI(O14<>"""";SI(O14<>0;"" ""&O14&"" jour(s)"";"" Aujourd'hui"");"""")"

et que derrière je fais un "Remplacer" X par rien, la formule s'inscrit correctement et me donne mon résultat.

Que faire pour que VBA m'inscrive ma formule directement sans passer par l'astuce de lui mettre une lettre quelconque devant pour ensuite la supprimer?


Merci d'avance et bonne journée


Edit : j'ai essayé avec .FormulaR1C1 au lieu de .value, cela ne change rien
 
Dernière édition:

philest

XLDnaute Nouveau
Re : Insérer une formule via VBA

voici un exemple que d'une formule par vba :
ActiveCell.Offset(1, 0).FormulaR1C1 = _
"=CONCATENATE(""FM"",YEAR(NOW())-2000,""-"")"

faut faire attention à la position des virgules et guillemets pour que cela fonctionne.
bonne chance
 

GillesC

XLDnaute Occasionnel
Re : Insérer une formule via VBA

voici un exemple que d'une formule par vba :
ActiveCell.Offset(1, 0).FormulaR1C1 = _
"=CONCATENATE(""FM"",YEAR(NOW())-2000,""-"")"

faut faire attention à la position des virgules et guillemets pour que cela fonctionne.
bonne chance

Merci de ta réponse

Si j'utilise texto ta formule CONCATENATE etc., la formule se met bien dans la cellule.
Mais un simple .Offset(0, 8).FormulaR1C1 = "=SI(014=1;2;3)" entraîne un débogage !?

et pour ce qui concerne le "Aujourd'hui", ce n'est pas une formule mais un texte qui doit apparaître :)
 

GillesC

XLDnaute Occasionnel
Re : Insérer une formule via VBA

Effectivement, il faut remplacer les ; par des , pour que la formule s'incrémente, merci philest!

J'ai donc mis :
.Offset(0, 8).Formula = "=SI(O14<>"""",SI(O14<>0,"" ""&O14&"" jour(s)"","" Aujourd'hui""),"""")"

et la formule se met bien dans la cellule.

Seulement, elle affiche #NOM? (!?), et je dois cliquer dans la cellule et valider par Entrée pour que la valeur s'affiche, ce qui est étonnant car :
.Offset(0, 8).Formula = "=CONCATENATE(""FM"",YEAR(NOW())-2000,""-"")" m'affiche bien le résultat directement.

J'ai pourtant l'option Calcul automatique activée.
A n'y rien comprendre!
J'ai essayé avec IF, qui se transforme bien en SI, mais rien à faire, il ne calcule pas la cellule.
Auriez vous encore une suggestion pour que ma torture prenne fin? ;)

Quoi qu'il en soit, merci beaucoup à tous
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Insérer une formule via VBA

Re...
Au choix :
Code:
Sub Macro4()
    Range("C5").Select
    ActiveCell.Formula = "=IF(A1<>"""",IF(A1<>0,"" ""&A1&"" jour(s)"","" Aujourd'hui""),"""")"
End Sub
Code:
Sub Macro4()
    Range("C5").Select
    ActiveCell.FormulaLocal = "=SI(A1<>"""";SI(A1<>0;"" ""&A1&"" jour(s)"";"" Aujourd'hui"");"""")"
End Sub
ROGER2327
#4790


Dimanche 22 Sable 138 (César-Antechrist, SPs)
2 Nivôse An CCXIX
2010-W51-3T15:06:14Z
 

Discussions similaires

Réponses
1
Affichages
127

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87