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.
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.
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.
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
<apitos@gmail.com> a écrit dans le message de news:
1156114578.634226.242340@i42g2000cwa.googlegroups.com...
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.
<apitos@gmail.com> a écrit dans le message de news:
1156091443.596583.177060@m79g2000cwm.googlegroups.com...
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 ?
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.
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+
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.
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+
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+
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.
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+
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.
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é ...
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é ...