OVH Cloud OVH Cloud

Introuduire une formule

19 réponses
Avatar
apitos
Salut tous le monde,

Comment puis-je dans un document Word introduir une formule =E0 l'aide
d'une macro, pour calculer, par exemple un taux (%) dans une cellule de
tableau ?

Cette formule peux se presenter comme suit : Cellule 3 =3D (Cellule 2 /
Cellule 1) * 100.

Merci.

10 réponses

1 2
Avatar
AB
Bonjour,
Pas sûr d'avoir bien compris. L'instruction ci-après place le curseur dans
la celllule A3 du tableau et réalise l'opération voulue :

Sub Macro1()
ActiveDocument.Tables(1).Cell(3, 1).Select
Selection.InsertFormula Formula:="=(A1/A2*100)"
End Sub
AB

a écrit dans le message de news:

Salut tous le monde,

Comment puis-je dans un document Word introduir une formule à l'aide
d'une macro, pour calculer, par exemple un taux (%) dans une cellule de
tableau ?

Cette formule peux se presenter comme suit : Cellule 3 = (Cellule 2 /
Cellule 1) * 100.

Merci.
Avatar
roy.patrice
Pourquoi ne pas utiliser un tableau Excel et y ajouter les formules.
¢/A1*100

Ce genre de tableau s'occupe mieux des formules et est plus facile à
utiliser.


wrote:
Salut tous le monde,

Comment puis-je dans un document Word introduir une formule à l'aide
d'une macro, pour calculer, par exemple un taux (%) dans une cellule de
tableau ?

Cette formule peux se presenter comme suit : Cellule 3 = (Cellule 2 /
Cellule 1) * 100.

Merci.


Avatar
apitos
Merci AB.

Je crois que la mise a jour de la cellule 3 ne se fait pas
automatiquement !

Est-il possible de la commander toujours avec une macro ?

Merci.
Avatar
AB
Oui, avec l'instruction suivante :
ActiveDocument.Fields.Update
AB

a écrit dans le message de news:

Merci AB.

Je crois que la mise a jour de la cellule 3 ne se fait pas
automatiquement !

Est-il possible de la commander toujours avec une macro ?

Merci.



Avatar
apitos

Oui, avec l'instruction suivante :
ActiveDocument.Fields.Update
AB

J'ai essaye cette macro (inserée dans ThisDocument) pour l'exemple :


A1 = 7000; A2 = 2663 :

Sub Macro1()
ActiveDocument.Tables(1).Cell(1, 3).Select
Selection.InsertFormula Formula:="=((A2/A1)*100)"
ActiveDocument.Fields.Update
End Sub

mais A3 me donne toujours 0.0

meme si je change les valeurs de A1 et A2, A3 reste toujours figée sur
0.0 !!!

Ou est l'erreur ?

Merci.

a écrit dans le message de news:

Merci AB.

Je crois que la mise a jour de la cellule 3 ne se fait pas
automatiquement !

Est-il possible de la commander toujours avec une macro ?

Merci.





Avatar
apitos


Oui, avec l'instruction suivante :
ActiveDocument.Fields.Update
AB

Rectificatif :


J'ai essaye cette macro (inserée dans ThisDocument) pour l'exemple :

A1 = 7000; B1 = 2663 :

Sub Macro1()
ActiveDocument.Tables(1).Cell(1, 3).Select
Selection.InsertFormula Formula:="=(B1/A1)*100)"
ActiveDocument.Fields.Update
End Sub

mais C1 me donne toujours 38.04

meme si je change les valeurs de A1 et B1, C1 reste toujours figée
sur
38.04 !!!

Et si ja fait executer la macro du menu outils une autre valeur de
38.04 vient s'ajouter au contenu de C1 qui est 38.04 (ca devient
38.0438.04)

Et ActiveDocument.Fields.Update ne fait rien ?

Ou est l'erreur ?

Merci.

Avatar
AB
Bonjour,

L'erreur vient de ton référencement de cellules.
A1 désigne la cellule située à l'intersection de la colonne A et de la ligne
1 (comme dans Excel)
Cell(1,3) désigne la cellule située à l'intersection de la ligne 1 et de la
colonne 3. En effet le premier argument désigne la ligne (row), et le second
la colonne (column). Cell(1,3) correspond donc à C1.
Donc la cellule A3 est référencée par l'expression Cell(3,1).
L'instruction <ActiveDocument.Fields.Update> ne sert à rien dans ta macro.
Quelles que soient les valeurs situées dans A1 et A2, la macro (corrigée)
renverra le bon résultat en A3 à chaque exécution.
Si tu changes les valeurs en A1 et A2 sans exécuter la macro, le résultat ne
sera pas mis à jour automatiquement (on n'est pas dans Excel).
L'instruction <ActiveDocument.Fields.Update> actualise tous les champs du
document. On obtient le même résultat avec F9.
Cela dit, Word n'est pas le meilleur outil pour faire des calculs. Si tu
expliquais exactement ce que tu veux faire, on pourrait peut-être trouver
une autre solution, par exemple incorporer une feuille Excel dans ton doc
Word.
AB

a écrit dans le message de news:



Oui, avec l'instruction suivante :
ActiveDocument.Fields.Update
AB

J'ai essaye cette macro (inserée dans ThisDocument) pour l'exemple :


A1 = 7000; A2 = 2663 :

Sub Macro1()
ActiveDocument.Tables(1).Cell(1, 3).Select
Selection.InsertFormula Formula:="=((A2/A1)*100)"
ActiveDocument.Fields.Update
End Sub

mais A3 me donne toujours 0.0

meme si je change les valeurs de A1 et A2, A3 reste toujours figée sur
0.0 !!!

Ou est l'erreur ?

Merci.

a écrit dans le message de news:

Merci AB.

Je crois que la mise a jour de la cellule 3 ne se fait pas
automatiquement !

Est-il possible de la commander toujours avec une macro ?

Merci.





Avatar
Geo


J'ai essaye cette macro (inserée dans ThisDocument) pour l'exemple :

A1 = 7000; B1 = 2663 :

Sub Macro1()
ActiveDocument.Tables(1).Cell(1, 3).Select
Selection.InsertFormula Formula:="=(B1/A1)*100)"
ActiveDocument.Fields.Update
End Sub

mais C1 me donne toujours 38.04


Jusque là c'est normal à la parenthèse manquante près.

meme si je change les valeurs de A1 et B1, C1 reste toujours figée
sur
38.04 !!!


Normal aussi, car les champs ne se recalculent pas automatiquement.
Il faut le demander à Word.
la commande ActiveDocument.Fields.Update doit suffire.
N'êtes-vous pas en mode d'affichage des codes champs ?
A défaut sélectionnez tous le document avant puis faites une mise à
jour, équivalents de :
CTL+A
F9


Et si ja fait executer la macro du menu outils une autre valeur de
38.04 vient s'ajouter au contenu de C1 qui est 38.04 (ca devient
38.0438.04)


Partiellement normal puisque vous insérer une deuxième fois votre code.
C'est une subtilité de vocabulaire, il est bien précisé "insère".
Il faut vider la cellule avant, par exemple :
Sub Macro1()
With ActiveDocument.Tables(1).Cell(1, 3)
.Range.Text = ""
.Formula ("=((B1/A1)*100)")
End With
End Sub


Et ActiveDocument.Fields.Update ne fait rien ?


Fonctionne chez moi, votre Word est à niveau ?

Pensez à cocher la case "mettre à jour les champs" dans Outils options
impression, au moins les champs seront mis à jour lors de l'impression.

--
A+

Avatar
apitos
Pour Geo :



J'ai essaye cette macro (inserée dans ThisDocument) pour l'exemple :

A1 = 7000; B1 = 2663 :

Sub Macro1()
ActiveDocument.Tables(1).Cell(1, 3).Select
Selection.InsertFormula Formula:="=(B1/A1)*100)"
ActiveDocument.Fields.Update
End Sub

mais C1 me donne toujours 38.04


Jusque là c'est normal à la parenthèse manquante près.

meme si je change les valeurs de A1 et B1, C1 reste toujours figée
sur
38.04 !!!


Normal aussi, car les champs ne se recalculent pas automatiquement.
Il faut le demander à Word.
la commande ActiveDocument.Fields.Update doit suffire.
N'êtes-vous pas en mode d'affichage des codes champs ?
A défaut sélectionnez tous le document avant puis faites une mise à
jour, équivalents de :
CTL+A
F9


C'est la meuilleure façon de proceder ..



Et si ja fait executer la macro du menu outils une autre valeur de
38.04 vient s'ajouter au contenu de C1 qui est 38.04 (ca devient
38.0438.04)


Partiellement normal puisque vous insérer une deuxième fois votre cod e.
C'est une subtilité de vocabulaire, il est bien précisé "insère".
Il faut vider la cellule avant, par exemple :
Sub Macro1()
With ActiveDocument.Tables(1).Cell(1, 3)
.Range.Text = ""
.Formula ("=((B1/A1)*100)")
End With
End Sub


Et ActiveDocument.Fields.Update ne fait rien ?


Fonctionne chez moi, votre Word est à niveau ?


Word 2000


Pensez à cocher la case "mettre à jour les champs" dans Outils options
impression, au moins les champs seront mis à jour lors de l'impression.

--
A+



Avatar
apitos

Bonjour,

L'erreur vient de ton référencement de cellules.
A1 désigne la cellule située à l'intersection de la colonne A et de la ligne
1 (comme dans Excel)
Cell(1,3) désigne la cellule située à l'intersection de la ligne 1 et de la
colonne 3. En effet le premier argument désigne la ligne (row), et le s econd
la colonne (column). Cell(1,3) correspond donc à C1.
Donc la cellule A3 est référencée par l'expression Cell(3,1).
L'instruction <ActiveDocument.Fields.Update> ne sert à rien dans ta mac ro.
Quelles que soient les valeurs situées dans A1 et A2, la macro (corrig ée)
renverra le bon résultat en A3 à chaque exécution.
Si tu changes les valeurs en A1 et A2 sans exécuter la macro, le résu ltat ne
sera pas mis à jour automatiquement (on n'est pas dans Excel).
L'instruction <ActiveDocument.Fields.Update> actualise tous les champs du
document. On obtient le même résultat avec F9.
Cela dit, Word n'est pas le meilleur outil pour faire des calculs. Si tu
expliquais exactement ce que tu veux faire, on pourrait peut-être trouv er
une autre solution, par exemple incorporer une feuille Excel dans ton doc
Word.
AB


Ce que j'aimerais avoir, c'est presque le meme evenement que Excel.

Lorsqu'on change les valeurs dans A1 et B1 la cellule resultante C1 se
mettra a jour automatiquement.

Bon, pour cette question on est d'accord qu'il faudra mettre a jour la
cellule C1 avec F9.

une autre solution, par exemple incorporer une feuille Excel dans ton doc
Word.


Pourquoi pas ? j'ai hate de savoir comment ca se passera André ...

Merci.

1 2