Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2007, 05h40   #1
Invité de passage
 
Inscription : octobre 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 3
Points : 0
Points : 0
Par défaut COmment calculer le cosinus d'un champs dans word ?

Bonjour,

Je programme des calculs automatiques dans des champs words, à partir de variables stoquées dans des signets.

Mais seules les opérations de base sont disponibles (+ - / *).

Si je veux faire un calcul plus complexe, type cosinus etc ... je dois sûrement passer par une macro, mais je n'y arrive pas.

Comment puis-je obtenir un champ calculé automatiquement pour un cosinus (par exemple ?), sachant que je récupère l'angle à partir d'un signet ?

Merci.
ced57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 08h26   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Les signets ne suffiront pas pour le faire de façon automatique.
Les évènement sur signet n'existent pas.
Il faudra impérativement une action sur un bouton ou un évènement pris en compte par Word.

Pour Obtenir le cosinus d'un angle c'est
Angle doit être en Radiant.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 09h16   #3
Invité de passage
 
Inscription : octobre 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 3
Points : 0
Points : 0
Par défaut suite

Merci pour votre réponse.

J'ai essayé de faire une macro, mais je suis encore trop faible ...

Je ne sais pas s'il me faut une fonction ou une procédure.
Je pensais à quelque chose comme ça, qui se déclenche par un bouton par exemple.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub calcul()
 
dim angle, cosinus
 
'récupération du signet dans word
angle = ActiveDocument.Bookmarks("Nom de mon signet'")
 
'calcul de ma formule
cosinus = cos(angle)
 
'retour du résultat dans word
ActiveDocument.Bookmarks("Nom de mon champ résultat'") = cosinus 
 
End Sub
Mais bien sûr il y a des erreurs ...
ced57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 10h27   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
C'est un bon début,

La différence entre une procédure et une fonction est assez simple, une fonction renvoie une valeur.

Code :
1
2
3
 
Public Function Cosinus() as Double
End Function
Une procédure ne renvoie rien.

Pour récupérer la valeur d'un signet, il faut utiliser un objet range.

Code :
angle = ActiveDocument.Bookmarks("Nom de mon signet'").range.text
Même chose pour affecter une valeur à un signet.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 16h43   #5
Invité de passage
 
Inscription : octobre 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 3
Points : 0
Points : 0
Par défaut ça progresse, on va y arriver !

Alors voilà, merci ça avance,

j'ai donc cette procédure qui me prend la variable dans un signet, calcule mon cosinus et la réinjecte à la suite d'un autre signet.

Je souhaiterais réinjecter mon résultat dans un CHAMP appelé "resultat", et pas après un signet, pour pouvoir mettre à jour le champ à chaque exécution de la macro.

Il me faut pour celà remplacer
Code :
ActiveDocument.Bookmarks("resultat").Range.Text = cosinus
par quelque chose du type
Code :
ActiveDocument.fields("resultat") = cosinus
mais bien sûr, ça ne fonctionne pas
Pouvez-vous me corriger cette ligne ?

PS je ne connais pas l'index de mon champ, que son nom ...

voici la procédure qui fonctionne déjà

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub calcul()
Dim angle, cosinus
 
'récupération du signet dans word
angle = ActiveDocument.Bookmarks("angle").Range.Text
 
'calcul de ma formule
cosinus = cos(angle)
 
'retour du résultat dans word - ici dans un signet
ActiveDocument.Bookmarks("resultat").Range.Text = cosinus
 
End Sub
Voilà, on touche au but !
Merci d'avance.
ced57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 20h16   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Presque, Fields n'est pas un objet Word, mais un objet Access.

En Word, c'est

Code :
ActiveDocument.FormFields(1).Range.Text = "Moi"
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h35.


 
 
 
 
Partenaires

Hébergement Web