Inscription formule dans une cellule grace au VBA

Résolu
HoPo -  
 HoPo -
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 6365 Date d'inscription   Statut Modérateur Dernière intervention   182
 
Bonjour,

Essaye avec .FormulaLocal au lieu de .Formula :)
0
HoPo
 
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 6365 Date d'inscription   Statut Modérateur Dernière intervention   182
 
Autre précision, il faut taper la formule, comme une formule Excel ensuite (aux variables près à rajouter avec des " & [...] & ")
0
HoPo
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
HoPo
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Faudrait que tu fasses un minimum d'effort pour être clair et précis dans ta demande!
0
HoPo
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
HoPo
 
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