écrire une équation dans un document Word avec Visual Basic 2010 [Résolu]

kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 2 août 2016 à 16:41 - Dernière réponse : kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention
- 3 août 2016 à 20:26
Bonjour,
je sollicite votre aide encore une fois :
j'ai essayé de créer des équation dans un document word via Visual basic 2010 Express
la seul chose que j'ai pu trouvé est pour VBA. Word dans ce lien :
http://software-solutions-online.com/word-vba-creating-equations/
voici le code :
Sub Example3()
Dim objRange As Range
Dim objOMath As OMath
Set objRange = Selection.Range
objRange.Text = _
"f(x)=a_0+" + ChrW(8721) + "_(n=1)^8" + ChrW(9618) + _
"(a_n cos" + ChrW(12310) + "npx/L" + ChrW(12311) + _
"+b_n sin" + ChrW(12310) + "npx/L" + ChrW(12311) + " )"
Set objOMath = OMaths.Add(objRange).OMaths.Item(1)
objOMath.BuildUp
End Sub

j'ai essayé de l'adapter pour Visual basic 2010 express, voici le code :
Imports System.IO
Imports Word = Microsoft.Office.Interop.Word
Public Class Form1
Dim oWord As New Word.Application
Dim oDoc As Word.Document
Dim oPara1 As Word.Paragraph
Dim objOMath As Word.OMath
Dim cheminPlusFichier As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Démarrez Word et ouvrez le modèle de document.
SaveFileDialog1.Filter = "Document Word (*.docx)|*.docx"
SaveFileDialog1.Title = "Enregistrer sous"
SaveFileDialog1.FileName = "Notes de calcul"
If SaveFileDialog1.ShowDialog() = DialogResult.OK Then 'si l'utilisateur a bien cliqué sur ok
cheminPlusFichier = SaveFileDialog1.FileName
System.IO.File.WriteAllBytes(cheminPlusFichier, My.Resources.Note_de_calcul)
End If
cheminPlusFichier = SaveFileDialog1.FileName
oDoc = oWord.Documents.Open(SaveFileDialog1.FileName)
oDoc.Application.DisplayAlerts = False 'supprime les messages d'alerte
'rendre le classeur visible
oWord.Visible = False
'Insert a paragraph at the beginning of the document.
oPara1 = oDoc.Content.Paragraphs.Add
'inserer le text qui se trouve dans la textBox 7
oPara1.Range.Text = _
"f(x)=a_0+" + ChrW(8721) + "_(n=1)^8" + ChrW(9618) + _
"(a_n cos" + ChrW(12310) + "npx/L" + ChrW(12311) + _
"+b_n sin" + ChrW(12310) + "npx/L" + ChrW(12311) + " )"
objOMath = oWord.OMaths.Add(oPara1).oWord.OMaths.Item(1)
objOMath.BuildUp()
End Sub
End Class

première mot l'équation ne se crée pas bien dans Word
et deuxième mot une erreur s'affiche :
L'exception MissingMemberException n'a pas été gérée
Le membre public 'OMaths' du type 'ApplicationClass' est introuvable.
dans ce code :
objOMath = oWord.OMaths.Add(oPara1).oWord.OMaths.Item(1)
quelqu'un pourrait me suggérer une solution
merci d'avance pour votre aide
--
Comment ça marche c'est cool! 
      1000 Merci les Amis
Afficher la suite 

18 réponses

Répondre au sujet
Whismeril 10530 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 3 août 2016 à 00:10
+1
Utile
1
L'éditeur d'équation est il installé?

tu veux parler de Références -> Ajouter -> COM -> Microsoft Word 12.0 Objet Librarya
si c'est ca je l'ai déja installé


non dans word, as tu l'éditeur d'équation?


je n'ai pas corrigé la seconde déclaration
           dim rng as Range = oDoc.Range()
            rng.Text = "BD/DC = AB/AC "

            rng.OMaths.Add(rng)
            dim objEq as OMath  = rng.OMaths(1)
            objEq.BuildUp()
Cette réponse vous a-t-elle aidé ?  
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 3 août 2016 à 00:21
ça marche
merci infiniment tu m'a beaucoup aidé
je te suis reconnaissant
Commenter la réponse de Whismeril
Whismeril 10530 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 3 août 2016 à 01:05
+1
Utile
4
Alors, marque le sujet résolu, et la prochaine fois essaye de te débrouiller un peu avec ce qu'on te donne.
Certes j'ai posté une traduction depuis le c# incorrecte, mais tu avais tous les éléments en main pour trouver par toi même.
Cette réponse vous a-t-elle aidé ?  
Whismeril 10530 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 3 août 2016 à 01:36
Ça m'a rappelé que je t'avais déjà reproché ton manque d'efforts fin avril, 3 mois plus tard ça n'a guère évolué
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 3 août 2016 à 10:06
crois moi depuis ce jour je fais beaucoup d'effort pour créer un code et le corriger, je fais beaucoup de recherche et je poste le sujet qu'en tout dernier recours
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 3 août 2016 à 10:10
désolé de te déranger encore
juste une dernière chose quand j'ouvre le document une boîte dialogue s'affiche me disant que le document est verrouillé, il me propose trois choix l'un d'eux est d'ouvrir une copie
aprés avoir choisi ce choix le document s'ouvre et à la fermeture du document une autre boîte s'affiche me demandant d'enregistrer les modification même si j'ai rien modifier
peux-tu s'il te plait juste me guider et j'essaierai de me débrouiller seul pour me débarrasser de ces deux boîte de dialogue
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 3 août 2016 à 11:06
je crois avoir fini par trouver une solution, il suffit d'ajouter :
oWord.ActiveDocument.Close()
oWord.Visible = False
oWord.Quit()
Merci pour ton aide précieuse
Commenter la réponse de Whismeril
Whismeril 10530 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - Modifié par Whismeril le 2/08/2016 à 18:07
0
Utile
1
Bonjour

ben t'as pas du chercher bien longtemps,
en moins d'une 1/2 h j'ai trouvé et testé

           Range rng = oDoc.Range()
            rng.Text = "BD/DC = AB/AC "

            rng = rng.OMaths.Add(rng)
            OMath objEq = rng.OMaths(1)
            objEq.BuildUp()


Quand j'étais petit, la mer Morte n'était que malade.
George Burns
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 2 août 2016 à 18:37
Merci de m'avoir répondu
crois moi j'ai vraiment beaucoup chercher (plus qu'une semaine)
mais ton code quand je le copie dans visual basic express 2010, beaucoup d'erreurs s'affiches
alors si ça ne te dérange pas peux-tu l'intégrer dans mon code s'il te plait
Commenter la réponse de Whismeril
Whismeril 10530 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 2 août 2016 à 18:46
0
Utile
1
Quelles erreurs?
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 2 août 2016 à 19:04
si j'ai bien compris
rng c'est oPara1 dans mon code et objEq c'est objOMath dans mon code
quand je copie ton code dans visual basic 2010 avec mon code
1. j'aperçois que l'espace dans " Range rng " n'est pas acceptable dans visual basic
Range.oPara1 = oDoc.Rage
quand je remplace ( rng Par oPara1 et objEq par objOMath) il y les erreur qui s'affiche dans le code :
oPara1.Range = oDoc.Range()
oPara1.Text = "BD/DC = AB/AC "
oPara1 = oPara1.Omaths.Add(oPara1)
objOMath.Omath =oPara1.Omaths(1)
objOMath.BuildUp()
oPara1.Range et oPara1.Text ne sont pas acceptable
tu c'est je ne comprend pas beaucoup ce code je suis sur d'avoir fait beaucoup d'erreurs
Commenter la réponse de Whismeril
Whismeril 10530 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 2 août 2016 à 21:23
0
Utile
4
Au temps pour moi, je l'ai mal traduit en vb

            dim rng as Range = oDoc.Range()
            rng.Text = "BD/DC = AB/AC "

            rng = rng.OMaths.Add(rng)
            OMath objEq = rng.OMaths(1)
            objEq.BuildUp()

kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 2 août 2016 à 21:56
maintenant il affiche l'erreur "La référence d'objet n'est pas définie à une instance d'un objet." ici : "rng = rng.OMaths.Add(rng)"
parfois quand on utilise un site pour convertir, ce n'ai pas juste à 100%
si ça ne te dérange pas peux-tu l'intégrer dans mon code s'il te plait
Voici un exemple du fichier :
http://www.cjoint.com/c/FHct3JPC3Wh
Whismeril 10530 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 2 août 2016 à 22:38
parfois quand on utilise un site pour convertir, ce n'ai pas juste à 100%


pour 4 lignes je l'ai fait de tête, d'ou la petite erreur.

Et non je ne téléchargerai pas ton code.

essaye ça
            dim rng as Range = oDoc.Range()
            rng.Text = "BD/DC = AB/AC "

            rng.OMaths.Add(rng)
            OMath objEq = rng.OMaths(1)
            objEq.BuildUp()


Quelle est ta version de word?
L'éditeur d'équation est il installé?
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 2 août 2016 à 22:56
désolé ça ne marche toujours pas, la même erreur s'affiche

Quelle est ta version de word?

la version est : Word 2007 (il marche sans aucun problème contrairement à Word 2013)

L'éditeur d'équation est il installé?

tu veux parler de Références -> Ajouter -> COM -> Microsoft Word 12.0 Objet Librarya
si c'est ca je l'ai déja installé
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 2 août 2016 à 23:05
il demande d'ajouter New à : dim rng as Range = oDoc.Range()
mais si je fais ça il ligne bleu apparait en dessous de oDoc.Range()
Commenter la réponse de Whismeril
Whismeril 10530 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 3 août 2016 à 19:54
0
Utile
1
Je te conseille de laisser Word visible, si ton application plante, Word reste actif et tu n'as plus accès au fichier.
Si Word est visible, il est aisé de le fermer.
Sinon, la seule solution est de tuer le processus.
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 3 août 2016 à 20:26
je n'avais pas pensé a ça, je vais le rendre visible
merci pour le conseil
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.