Besoin d'aide pour un code .COM a mettre en .NET...

samuss Messages postés 18 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 8 janvier 2009 - 29 mai 2008 à 10:44
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 6 juin 2008 à 19:14
Bonjour,
J'ai trouvé ce code sur internet permettant de transférer des données depuis vb à word, le problème c'est que c'est pour vb6 et moi je travaille sous vb2008 à savoir en .net, il me faudrait donc l'équivalent en .net, vu que quand j'ajoute n'importes quelle référence word disponible, cela ne marche toujours pas. C'est plus ou moins vital pour moi ^^" je dois faire ça en guise de stage, et je vous avouerai que votre aide me serai précieuse^^.

Dim MyWord As Word.Application

If Text1.Text "" And Text2.Text "" Then
MsgBox "Remplissez au moins une donnée."
Text1.SetFocus
Exit Sub
End If

Set MyWord = New Word.Application

With MyWord
.Documents.Open (PathDocu & "LettreW.doc")
.Visible = True

.ActiveDocument.Bookmarks("date").Range.Text = Format(Date, "dd mmmm yyyy")
.ActiveDocument.Bookmarks("nom").Range.Text = UCase(Text1.Text)
.ActiveDocument.Bookmarks("prénom").Range.Text = Text2.Text
' si vous désirez utiliser plusieurs fois les mêmes données, vous devez
' créer des signets différents
.ActiveDocument.Bookmarks("prénom2").Range.Text = Text2.Text
End With

DoEvents
Set MyWord = Nothing

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 mai 2008 à 21:34
Pour ce qui est d'utiliser la référence Word en .Net tu ne vas finalement pas avoir beaucoup de différence :

    Dim MyWord As Microsoft.Office.Interop.Word.Application
    If Text1.Text "" And Text2.Text "" Then
      MessageBox.Show("Remplissez au moins une donnée.")
      Text1.Focus()
      Exit Sub
    End If

    <strike>Set</strike> MyWord = New Microsoft.Office.Interop.Word.Application

    With MyWord
      .Documents.Open(PathDocu & "LettreW.doc")
      .Visible = True

      .ActiveDocument.Bookmarks("date").Range.Text = Date.Now.ToString("dd MMM yyyy")
      .ActiveDocument.Bookmarks("nom").Range.Text = <strike>UCase(</strike>Text1.Text.ToUpper
      .ActiveDocument.Bookmarks("prénom").Range.Text = Text2.Text
      ' si vous désirez utiliser plusieurs fois les mêmes données, vous devez
      ' créer des signets différents
      .ActiveDocument.Bookmarks("prénom2").Range.Text = Text2.Text
    End With

    Application.DoEvents()
    MyWord = Nothing

Le code qui est barré est évidement à supprimer, je l'ai laisser pour que tu vois la différence.

Il te faut évidement rajouter la référence Microsoft Word dans les propriétés du projet.

NOTA :  MsgBox et UCase (entre-autres) existent bien en .Net, ils sont fournis par l'assembly Microsoft.VisualBasic, mais c'est du code VB6. Cet assembly existe pour une certaine compatibilité avec VB6.

Personnellement, je décoche systématiquement cet assembly, des références du projet. Cela m'oblige à faire que du code .Net et ne pas garder les vieilles habitudes de VB6. Cela oblige surtout à trouver les équivalents aux anciennes fonctions de VB6. Je t'ai donner 2 exemples avec MessageBox.Show et Text1.Text.ToUpper

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
samuss Messages postés 18 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 8 janvier 2009
5 juin 2008 à 17:17
Re, il ne me reconnait toujours pas le Microsoft.Office.Interop...
Il me le souligne pourtant voici la liste de mes reference:
0
samuss Messages postés 18 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 8 janvier 2009
6 juin 2008 à 12:14
Je n'y comprends plus grands chose, j'ai supprimer la référence Interop dans mes références ajoutées au projet, et là il me la reconnait O_o (windobe powaa...^^) bon toujours est il que cela fonctionne. Merci beaucoup casy.

Une dernière petite question pour la route, quel est la commande pour lancer word, parce que je suis obligé de le lancer avant pour pouvoir avoir ma page personnalisée qui se remplisse...
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
6 juin 2008 à 19:14
Dsl, j'avais zappé ton précédent message. Heureusement que tu as résolu tout seul.

Pour lancer word, normalement c'est ton code qui le fait déjà :

....
    With MyWord
      .Documents.Open(PathDocu & "LettreW.doc")
      .Visible = True
....

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
Rejoignez-nous