Inscription formule dans une cellule grace au VBA

Résolu/Fermé
HoPo - 17 mars 2016 à 10:32
 HoPo - 17 mars 2016 à 15:07
Bonjour,

J'essaye d'écrire une formule dans une cellule grâce à un code VBA. J'ai plusieurs tableau à remplir sachant que tous sont sur des feuilles différentes.
J'ai créé une sous-routine avec comme entré, La feuille ou se trouve mon tableau : Fconso, et la feuille d'où je souhaite prendre mes valeurs: Findex

J'ai essayé d'effectuer le code suivant qui ne fonctionne pas.

For i = 23 To 34
Worksheets(Fconso).Range("&Cells(i, 3)&").Formula = "= Worksheets(Findex).Range(" & Cells(i + 1, 3) & ")-Worksheets(Findex).Range(" & Cells(i, 3) & ")"

Next

J'ai regardé plusieurs forum. J'ai trouvé beaucoup de réponses et je suis vraiment perdue par rapport à l'utilisation de .Formula.

Est ce que quelqu'un pourrais me donner quelques pistes pour que je comprenne comment il faut faire?

De plus, Je souhaite que le résultat de mon tableau soit modifié automatiquement si je modifie mes valeurs de départ (i.e Valeurs utilisées dans la fonction) est ce que je suis dans la bonne direction ?

Merci d'avance pour votre aide.

A voir également:

5 réponses

Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181
17 mars 2016 à 10:40
Bonjour,

Essaye avec .FormulaLocal au lieu de .Formula :)
0
Bonjour,

J'ai en effet essayer avec FormulaLocal mais ca ne marche pas non plus,

J'ai essayer de faire un cas un peu plus simple pour comprendre mais j'ai toujours une erreur

Worksheets(Fconso).Cells(23, 3).FormulaLocal = "= Worksheets(Findex).Cells(24,3)-Worksheets(Findex).Cells(23,3)"
0
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181
17 mars 2016 à 11:10
Autre précision, il faut taper la formule, comme une formule Excel ensuite (aux variables près à rajouter avec des " & [...] & ")
0
Merci beaucoup pour l'aide,

J'ai reussi à avoir une formule qui fonctionne.

Mon problème maintenant est que je souhaite modifier les valeurs de mon tableau final après compilation. Quand j écris dans mon code :
Worksheets(Fconso).Cells(i, 3).Formula = "= " & Worksheets(Findex).Cells(i + 1, 3) & "-" & Worksheets(Findex).Cells(i, 3) & ""

Ce qui s'affiche dans ma cellule est: =56-54
Or je veux pouvoir modifier ces valeurs? comment est-ce que je peux faire ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 17/03/2016 à 11:19
Bonjour

Avec formulalocal comme le propose fort justement Arkana que je salue

Lorsque tu veux écrire une formule avec VBa, tu dois employer la syntaxe Excel et non VBA
c.a.d
par ex
en utilisant Excel sur C3 tu obtiens:
=Findex!E3-Findex!E4


d'autre part tu n'as pas besoin de faire une boucle, il suffit d'employer la recopie vers le bas façon vba

ce qui te donne en définitive:
Sub recopier_formule()
With Sheets("Fconso").Range("C3")
.FormulaLocal = "=Findex!E3-Findex!E4"
.AutoFill Destination:=Range("C3:C34"), Type:=xlFillDefault
End With
End Sub



 Michel
0
Bonjour,

En effet cela parait logique d'utiliser la syntaxe VBA,
Seulement je fais ce programme pour plusieurs feuilles qui ont toutes des noms différents.

Suivant mon programme, Parfois, Findex ="Index Elec" ou parfois Findex= "Index Eau". De même pour Fconso
Du coup quand j'essaye d'écrire

=Findex!E3-Findex!E4 cela me mets une erreur car Findex n'est pas a proprement parler un "feuille"... Enfin je crois...

Merci pour l'idée du défilement.

Peut être que mes réponses ne sont pas très claire: je commence en VBA et j'apprend un peu sur le tas alors je peux faire des erreurs. Si c'est la cas, n'hésiter pas àme corriger.

Merci pour les réponses.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 mars 2016 à 12:25
Faudrait que tu fasses un minimum d'effort pour être clair et précis dans ta demande!
0
ce n'est pas parce que ce n'est pas clair que je n'ai pourtant pas fais d'effort.

J'ai un programme avec plusieurs feuilles d'index et plusieurs feuilles de consommation. Une feuille d'index est associé à une feuille de consommation. Je souhaites créer un tableau dans mes feuilles Consommation à partir de données qui se trouvent dans mes feuilles index associées.

Pour cela, j'ai commencé à créer une sous-routine;

conso( Findex, Fconso)

Avec Findex = "Index 1" Ou "Index 2" suivant certains paramètre
Fconso= "Conso1" Ou "Conso 2" suivant certains paramètre


Mon problème est que je n'arrive pas à insérer une formule dans mon tableau ( Feuille Fconso) qui me permettre de prendre en compte directement les modifications de la feuille Findex.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 17/03/2016 à 14:52
bonjour

je n'ai pas compris l'énigme "suivant certains paramètre" autrement dit quels paramètres ?

en attentant avec 2 feuilles (noms réels et nbre de feuilles indifférents)

Option Explicit
'------------------------------
Sub xxxx()
Dim Cptr As Byte, Conso As String, Index As String
For Cptr = 1 To 2
Conso = Choose(Cptr, "conso1", "conso2")
Index = Choose(Cptr, "index1", "index2")
recopier_formule Conso, Index
Next
End Sub
'---------------------------------------
Sub recopier_formule(Fconso, Findex)
With Sheets(Fconso)
.Range("C3").FormulaLocal = "=" & Findex & "!C3-" & Findex & "!C4"
.Range("C3").Copy
.Range("C4:C34").PasteSpecial Paste:=xlPasteFormulas
End With
End Sub

 Michel
0
Merci pour votre aide;

Si je n'ai pas explicité les paramètres c'est parce que j'en ai beaucoup et pour être claire j'ai décider de simplifier, c'est compliqué d'expliquer un fichier de 15 feuilles en quelques lignes.


En tout cas je pense que votre solution va m'être très utile. Merci pour votre aide.
0