Microsoft World Calcule

serdar75

XLDnaute Occasionnel
Salut a tous :eek:


Je voudrais savoir c'est quoi la formule qu'il faut rentrer sur Word pour avoir le calcule de prix quantité total

PS: Depuis 1 mois j'essaie de trouver la formule
AIDER MOI SVP
:(
 

Pièces jointes

  • m_rina (1) (1).docx
    23.3 KB · Affichages: 147
  • m_rina (1) (1).docx
    23.3 KB · Affichages: 152
  • m_rina (1) (1).docx
    23.3 KB · Affichages: 151

Staple1600

XLDnaute Barbatruc
Re : Microsoft World Calcule

Re, Bonsoir Misange, Dranreb

Merci de vous être arrêté ici.
Je m'en suis tenu à ce que montrait la video:
Faire un calcul dans un tableau Word.

J'ai aussi pensé à utiliser un TextBox issu de la BO Formulaire.
Mais dans les deux cas, l'actualisation n'est pas automatique dés qu'une valeur utilisée dans la formule est modifiée.
(je voulais éviter de devoir appuyer sur F9 ou de double-cliquez sur le TextBox pour le mettre à jour)

PS: Misange:
j'avais trouver aussi ce lien, c'est justement après sa lecture, que la voie de la macro semble la seule voie pour actualiser des champs sans faire F9 ou sans activer les TextBox.
En tous cas, c'est ce que j'ai déduis en lisant la réponse de m@rina
Les champs Word (pour la plupart) ne se mettent pas à jour tout seuls.

Si le résultat dépend de champs de formulaire, il suffit de cocher l'option "Calculer à la sortie" dans chacun des champs de formulaire.
Sinon, il faut une macro... Encore faut-il lancer la macro.

m@rina
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Microsoft World Calcule

Bon. Je suis quand même aller faire un tour dans word, pour constater qu'il n'a pratiquement rien comme objet disponible, et qu'il faut, en effet, apparemment tout se farcir.
Alors j'ai inséré un nouveau module de classe, laissé nommé Classe1:
VB:
Option Explicit
Dim WithEvents Word As Application

Private Sub Class_Initialize()
Set Word = Application
End Sub

Private Sub Word_WindowSelectionChange(ByVal Sel As Selection)
MsgBox TypeName(Sel) & ":""" & Selection & """."
End Sub
Et un module ordinaire:
VB:
Option Explicit
Dim LaClasse As Classe1

Sub InitWord()
Set LaClasse = New Classe1
End Sub
Puis exécuté InitWord
Ah voui ! Ça affiche bien le MsgBox quand on sélectionne quelque chose dans la page.
À vous maintenant de chercher si une autre procédure de mon objet baptisé "Word" conviendrait mieux pour ce que vous voulez faire.
Cordialement.
 

serdar75

XLDnaute Occasionnel
Re : Microsoft World Calcule

Bon. Je suis quand même aller faire un tour dans word, pour constater qu'il n'a pratiquement rien comme objet disponible, et qu'il faut, en effet, apparemment tout se farcir.
Alors j'ai inséré un nouveau module de classe, laissé nommé Classe1:
VB:
Option Explicit
Dim WithEvents Word As Application

Private Sub Class_Initialize()
Set Word = Application
End Sub

Private Sub Word_WindowSelectionChange(ByVal Sel As Selection)
MsgBox TypeName(Sel) & ":""" & Selection & """."
End Sub
Et un module ordinaire:
VB:
Option Explicit
Dim LaClasse As Classe1

Sub InitWord()
Set LaClasse = New Classe1
End Sub
Puis exécuté InitWord
Ah voui ! Ça affiche bien le MsgBox quand on sélectionne quelque chose dans la page.
À vous maintenant de chercher si une autre procédure de mon objet baptisé "Word" conviendrait mieux pour ce que vous voulez faire.
Cordialement.

Faut aller ou sur word pour rentre c'est code ?
 

Staple1600

XLDnaute Barbatruc
Re : Microsoft World Calcule

Re

Merci Dranreb ;)
j'y suis presque
Code:
Private Sub Word_WindowSelectionChange(ByVal Sel As Selection)
'If Sel.Columns = 2 Then 'syntaxe erronée
'Sel.MoveRight Unit:=wdCell
Sel.Fields.Update
'End If
End Sub

Pour le moment, cela fonctionne si par exemple dans un tableau de 3 colonnes
quand je saisis un nombre en colonne 2, puis j'appuie sur Tab, pour arriver dans la colonne 3 ou il y a un champ du type: {=A2*B2), la mise à jour est automatique.

Je coince pour dire:
Si la colonne de la Selection dans le tableau est égale à 2, alors 'pas ok
on se déplace en colonne 3 'pas ok
puis mise à jour des champs 'ok
 

Dranreb

XLDnaute Barbatruc
Re : Microsoft World Calcule

Oui, bien sûr, c'est bien dans Word ce désert à peupler.
Mais, pas d'illusion, je n'ai pas trouvé de procédure réagissant à la modification de quelque chose.
Vérifiez plutôt si le tableau dont vous parlez n'est pas un objet incorporé ayant ses propres évènements qu'on peut gérer.
Cordialement.
 

Staple1600

XLDnaute Barbatruc
Re : Microsoft World Calcule

Re, bonsoir serdar75

Non, on t'a pas oublié.

Simplement ta question publiée sur un forum public vit sa vie de question.
(Et ce même si le demandeur à trouver réponse à sa question ;) ou pas ...)

Dranreb
:

J'ai fait le test avec un simple tableau (Tableau/Insérer/Tableau/3 colonnes x 4 lignes)
QUANTITEPRIXTOTAL
1020{=A2*B2}
0
0

J'ai insérer un champ calculé avec CTRL+F9 -> {=A2*B2}
J'ai recopier et modifier (cf mon précédent message) ton module de classe.
Et cela fonctionne comme dit précédemment.

J'ai essayé différentes syntaxes suggérées par VBA
quand on saisit Sel. mais je n'ai pas su trouver laquelle employer ou comment.

PS: Serdar75: j'ai pour habitude de plus joindre de fichier *.xls ou *.doc pour inciter le demandeur a mettre le nez dans le cambouis...
Car tu ne nous a toujours pas fourni de fichier exemple comme suggéré plutôt dans le fil.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Microsoft World Calcule

Je n'en sais pas plus que toi, vraiment, au contraire parce que toi tu planche sur ce fameux tableau depuis un moment.
Peut être en recréant ce tableau en enregistrant une nouvelle macro, le code engendré donnerait des idées.
Mettre un espion sur Selection aussi. Il y a peut être une propriété qui donne le tableau auquel elle appartient quand c'est le cas…
À +
 

Staple1600

XLDnaute Barbatruc
Re : Microsoft World Calcule

Re


On progresse... (lol)
Code:
Private Sub Word_WindowSelectionChange(ByVal Sel As Selection)
If Sel.Information(wdStartOfRangeColumnNumber) = 3 Then
Sel.Fields.Update
End If
End Sub
Cela fonctionne, la seule contrainte reste qu'il faut tabuler deux fois pour avoir la mise à jour.

Merci Dranreb de m'avoir aiguiller sur la bonne voie.

EDITION: Pour les curieux, voici les différents codes
Voir les explications dans le ZIP.

PS: Dans le code fourni, il y a une procédure Document_Open pour initialiser le module de classe.
 

Pièces jointes

  • TestWORD.zip
    1.7 KB · Affichages: 95
Dernière édition:

serdar75

XLDnaute Occasionnel
Re : Microsoft World Calcule

Re


On progresse... (lol)
Code:
Private Sub Word_WindowSelectionChange(ByVal Sel As Selection)
If Sel.Information(wdStartOfRangeColumnNumber) = 3 Then
Sel.Fields.Update
End If
End Sub
Cela fonctionne, la seule contrainte reste qu'il faut tabuler deux fois pour avoir la mise à jour.

Merci Dranreb de m'avoir aiguiller sur la bonne voie.

EDITION: Pour les curieux, voici les différents codes
Voir les explications dans le ZIP.

PS: Dans le code fourni, il y a une procédure Document_Open pour initialiser le module de classe.

Merci beaucoup c'est pas tout a fais ça mais je préféré utiliser ça que toujours utiliser la calculatrice :eek: :)

Je fais comment pour insérer les code sur ces tableau ? Fichier joint :
 

Pièces jointes

  • m_rina (1) (1).docx
    23.3 KB · Affichages: 102
  • m_rina (1) (1).docx
    23.3 KB · Affichages: 104
  • m_rina (1) (1).docx
    23.3 KB · Affichages: 103

Staple1600

XLDnaute Barbatruc
Re : Microsoft World Calcule

Re

Pour insérer le code VBA, lire le fichier LisezMOI.txt comme précisé précédemment.
Le document Word doit être enregistré en *.doc ou *.docm pour contenir des macros.

PS1:
Si difficulté, le net regorge de tutoriels expliquant comment importer des modules...
Sans oublier la touche magique F1 dans VBE.

PS2: Qu'est-ce qui n'est pas tout a fait ça?
La question était bien de faire des calculs (avec mise à jour auto) dans un tableau dans un document Word.
C'est ce que fait le code présent dans le zip.
Ton dernier message laisse entendre que tu as testé ma proposition (enrichie de module de classe de Dranreb), donc tu sais comment importer du code VBA dans Word, non ???
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Microsoft World Calcule

Re


Sinon une simple phrase peut suffire:
"J'ai réussi à faire fonctionner le code proposé."

[ironie: mode gentillet]
c'est plus rapide que de faire une video... mais c'est sur que ça flatte moins l'ego ;)
[/ironie]

Néanmoins la video permets de voir que tu as copié le code du module de classe dans un module.
Ce qui n'est pas dans les indications présentes dans LisezMOI.txt
 
Dernière édition:

Statistiques des forums

Discussions
312 345
Messages
2 087 473
Membres
103 553
dernier inscrit
jhnm