Inscription formule dans une cellule grace au VBA
Résolu/Fermé
A voir également:
- Inscription formule dans une cellule grace au VBA
- Formule excel pour additionner plusieurs cellules - Guide
- Formule si et - Guide
- Aller à la ligne dans une cellule excel - Guide
- Verrouiller une cellule excel dans une formule - Guide
- Formule excel moyenne - Guide
5 réponses
Arkana0
Messages postés
6365
Date d'inscription
mercredi 11 février 2009
Statut
Modérateur
Dernière intervention
10 février 2023
181
17 mars 2016 à 10:40
17 mars 2016 à 10:40
Bonjour,
Essaye avec .FormulaLocal au lieu de .Formula :)
Essaye avec .FormulaLocal au lieu de .Formula :)
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)"
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)"
Arkana0
Messages postés
6365
Date d'inscription
mercredi 11 février 2009
Statut
Modérateur
Dernière intervention
10 février 2023
181
17 mars 2016 à 11:10
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 " & [...] & ")
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 ?
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 ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
Modifié par michel_m le 17/03/2016 à 11:19
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:
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:
Michel
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
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.
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.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
17 mars 2016 à 12:25
17 mars 2016 à 12:25
Faudrait que tu fasses un minimum d'effort pour être clair et précis dans ta demande!
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.
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.
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 311
Modifié par michel_m le 17/03/2016 à 14:52
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)
Michel
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
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.
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.