écrire une équation dans un document Word avec Visual Basic 2010

Résolu
kikou93 Messages postés 417 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 24 septembre 2018 - 2 août 2016 à 16:41
kikou93 Messages postés 417 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 24 septembre 2018 - 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

6 réponses

Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
3 août 2016 à 00:10
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()
1
kikou93 Messages postés 417 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 24 septembre 2018 1
3 août 2016 à 00:21
ça marche
merci infiniment tu m'a beaucoup aidé
je te suis reconnaissant
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
3 août 2016 à 01:05
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.
1
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
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é
0
kikou93 Messages postés 417 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 24 septembre 2018 1
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
0
kikou93 Messages postés 417 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 24 septembre 2018 1
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
0
kikou93 Messages postés 417 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 24 septembre 2018 1
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
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
Modifié par Whismeril le 2/08/2016 à 18:07
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
0
kikou93 Messages postés 417 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 24 septembre 2018 1
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
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
2 août 2016 à 18:46
Quelles erreurs?
0
kikou93 Messages postés 417 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 24 septembre 2018 1
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
2 août 2016 à 21:23
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()

0
kikou93 Messages postés 417 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 24 septembre 2018 1
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
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
Modifié par Whismeril le 2/08/2016 à 22:39
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é?
0
kikou93 Messages postés 417 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 24 septembre 2018 1
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é
0
kikou93 Messages postés 417 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 24 septembre 2018 1
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()
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
3 août 2016 à 19:54
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.
0
kikou93 Messages postés 417 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 24 septembre 2018 1
3 août 2016 à 20:26
je n'avais pas pensé a ça, je vais le rendre visible
merci pour le conseil
0
Rejoignez-nous