Comment compléter un texte sous Word grâce à un formulaire ? [Résolu]

gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 19 mai 2014 à 00:45 - Dernière réponse : gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention
- 5 juin 2014 à 12:01
Bonjour à tous,

Malgré mes nombreuses tentatives et mes nombreuses demandes, je reste toujours incapable de faire un truc assez simple: compléter (ou remplir ou alimenter je ne sais pas comment on dit en informatique) un texte écrit dans un document Word, à partir d'un formulaire.
Je commence à vraiment désespérer car je pense n'être pas très loin, mais je pense que j'ai un problème de fichier. J'ai tenté d'expliquer mon problème dans le fichier Pdf joint à l'adresse ci-dessous:

http://cjoint.com/?DEswod1K8o0

Un petit peu d'aide serait vraiment bienvenue.

Merci, greg
Afficher la suite 

36 réponses

Répondre au sujet
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 19 mai 2014 à 07:34
0
Utile
Bonjour,

Essaye d'être concis autour de ton problème, là on a quasiment ton projet entier.
J'ai lu ton pdf, sans vraiment comprendre ou est ton soucis.
Ton code n'est pas coloré ça n'aide pas sa lecture.

Poste le bout de code concerné ici, en te servant des balises de coloration syntaxique, voir ici.
Explique ce que tu espérais faire et le résultat réel.
Commenter la réponse de Whismeril
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - Modifié par jordane45 le 19/05/2014 à 11:04
0
Utile
1
Bonjour et merci de répondre à mon problème,

En fait, ce que je ne comprends pas bien, ce sont 2 choses:
1) Comment faire pour que le texte entré par l'utilisateur dans la zone de texte du UserForm s'affiche effectivement dans le document Word, voire à une place désignée ?

Pour ce faire, je me permets de ne conserver que la partie qui m'intéresse ici. Ne connaissant vraiment pas grand chose à VBA et aux formulaires, je décris tout dans le détail:
a) j'enregistre un Document prenant en charge les macros, je l'appelle essaiOuvertureUserForm.docm. J'y écris juste une phrase : J'aimerais que le mot entré par l'utilisateur soit ici :

b) Dans le Project 'essaiOuvertureUserForm.docm', j'ai créé un formulaire appelé UserForm1 qui contient:
*un label
* une zone de texte
* deux boutons de Commande

c) Là, ça commence à partir en quenouille:
Je dois écrire le code qui va :
* ouvrir UserForm1
* initialiser UserForm1
* Affecter la fermeture de UserForm en cas d'appui sur CommandButton1
* Récupérer les données remplies par l'utilisateur
* placer les données dans le document
* Fermer la UserForm,

ce qui me donne (j'ai piqué ce code sur Internet !)

Sub OuvertureUserForm()
Load UserForm1
UserForm1.Show
End Sub

Public Sub formulaire()
UserForm1.Show
End Sub

Option Explicit

Private Sub userform_initialize()
Me.TextBox1.SetFocus
End Sub

Private Sub commandbutton1_click()
Me.hide
End Sub

Private Sub commandbutton2_click()
Dim q As String
q = Me.TextBox1.Text
ActiveDocument.Bookmarks("Titre").Range.Text = q
ActiveDocument.Fields.Update
Me.hide
End Sub

Résultat :
la UserForm s'affiche, on peut écrire du texte dans la zone de texte, mais elle ne se ferme pas lorsqu'on clique sur les 2 commandes et elle ne remplace pas dans le document essaiOuvertureForm.docm "Titre" par ce qu'on a écrit dans la zone de texte de UserForm1.

=> j'ai écrit ce code dans le ThisDocument de essaiOuvertureForm.docm. Aurais-je dû l'écrire dans le code de UserForm1 ?
=> Ou alors ce sont les commandes du code qui ne veulent rien dire ?

Bref, j'ai besoin d'aide.

2) Mon deuxième problème est de savoir comment faire ouvrir le UserForm1 par exemple, dès l'ouverture d'un document associé à un modèle. Mais je préfère pour l'instant résoudre mon problème 1)

J'espère avoir été plus clair et ne pas trop te décourager par mon ignorance,
Merci beaucoup, Grég
jordane45 20601 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 19 mai 2014 à 11:04
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du
code sur le forum.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

J'édite ton message pour les mettre.
Merci de le faire la prochaine fois.
Commenter la réponse de gregml
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 19 mai 2014 à 10:53
0
Utile
4
J'oubliais :
*aurais-je dû mettre des signets dans le texte après:
J'aimerais que le mot entré par l'utilisateur soit ici : ?
jordane45 20601 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 19 mai 2014 à 11:05
Oui.
Il faut bien indiquer quelque part à ton code où tu souhaites écrire...
L'utilisation des signets est une bonne méthode.
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 19 mai 2014 à 11:28
OK merci et j'utiliserais bien la coloration syntaxique la prochaine fois, il faut reconnaître que c'est bien plus lisible...
Pour ce qui est du signet, j'ai sélectionné "Titre" avec la souris, suis allé dans Insertion/Signet puis est nommé le signet 'Signet1'. J'ai exécuté mais cela ne donne rien de plus. Brr!
jordane45 20601 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 19 mai 2014 à 11:40
Bonjour,
j'ai sélectionné "Titre" avec la souris, suis allé dans Insertion/Signet puis est nommé le signet 'Signet1'.
... Normal... vu que tu as donné comme nom de signet :" Signet 1" ... alors que ton code veux un signet dont le nom est : "Titre"
.Bookmarks("Titre")
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 19 mai 2014 à 11:50
Ha j'aurais du réactualiser la page avant de répondre....
Commenter la réponse de gregml
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 19 mai 2014 à 11:46
0
Utile
7
Dans l'éditeur, quand tu doubles clique sur tes boutons arrive tu ici
Private Sub commandbutton1_click()
Me.hide
End Sub

et là
Private Sub commandbutton2_click()
Dim q As String
q = Me.TextBox1.Text
ActiveDocument.Bookmarks("Titre").Range.Text = q
ActiveDocument.Fields.Update
Me.hide
End Sub


Sinon (ce que je soupçonne), copie le code à exécuter dans les deux procédures liées à tes boutons.
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 19 mai 2014 à 12:39
Alors, j'affiche (à partir de l'Editeur) mon formulaire. Je double-clique sur Commande1, je tombe sur:

Private Sub CommandButton1_Click()

End Sub

Je double-clique sur CommandButton2 puis:

Private Sub CommandButton2_Click()

End Sub

Ai-je au moins (je commence à avoir vraiment honte de mon ignorance) bien compris ta question ?

Merci, Greg
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 19 mai 2014 à 12:45
Pas de honte à avoir. Il faut un début à tout.

Donc on constate que chaque bouton appelle une sub (méthode ou procédure selon à qui tu parles, et le langage utilisé). Chacune est vide, c'est donc normal, que tes boutons ne font rien.

Dans la méthode qui correspond au bouton fermer, tu mets
Me.Hide


Et dans l'autre méthode, l'autre code
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 19 mai 2014 à 12:49
YEEEESSSS, ça marche!!!

Un big merci....
Cela signifie que lorsque je veux taper le code d'un bouton, je dois toujours faire comme ça? Double-cliquer sur le bouton en question et y insérer les commandes en question ?
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 19 mai 2014 à 12:58
Mince,

J'ai voulu recommencer et ça ne marche plus : joie de courte durée. D'autant qu'il faut que j'aille bosser... Brr. Je reviens cette nuit, je vais retenter l'affaire à ce moment là.

Merci beaucoup à vous deux.
Grég
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 19 mai 2014 à 12:58
Pour le code correspondant au click sur le bouton oui. Pour le code correspondant, à un autre événement (survol de la souris, double click, etc... ) du bouton non. Je n'ai pas VBA sous la main, des que j'y jette un oeil je te montre.

En attendant, tu peux marquer le sujet résolu.
Commenter la réponse de Whismeril
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 19 mai 2014 à 21:10
0
Utile
Bonsoir, comme promis, si tu veux choisir quel code répond à quel événement d'un contrôle voici comment faire.
1 tu double cliques sur le contrôle, en mode édition, tu arrives dans l'événement par défaut du contrôle.
2 tu déroules la liste (voir image) et tu choisi l'événement.

3 tu codes
Commenter la réponse de Whismeril
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 19 mai 2014 à 23:13
0
Utile
Ca ne marche plus... J'ai beau essayer, l'exécution du programme, auquel je n'ai pas touché, me renvoie 'Erreur d'excution "5941" : Le membre de la collection requis n'existe pas.'

Bigre... moi qui pensait avoir résolu un des nombreux problèmes à appréhender...

Je pourrais peut-être solliciter encore tes services. Il faudrait en fait que toutes les actions soient claires dans mon esprit. Or ça ne l'est pas, je fais les choses sans les comprendre, raison pour laquelle je plante ce petit programme.

Merci, Grég
Commenter la réponse de gregml
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 20 mai 2014 à 06:25
0
Utile
Bonjour, est ce que l'éditeur montre la ligne de code ou ce message apparaît?
Si oui, poste cette ligne.
Si non à brûle pour point, ça pourrait être un signet mal nommé, comme titre et signet1.
Commenter la réponse de Whismeril
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 mai 2014 à 08:13
0
Utile
Salut Whismeril,

T'es vraiment trop fort. C'est le signet qui n'était effectivement pas bien nommé.

MERCI!!!!!!!!!

Il me restera maintenant deux choses :
1) savoir pourquoi, à l'exécution de ce formulaire, apparaissent (parfois, mais pas tout le temps!!) les fenêtres de code 'ThisDocument, de la UserForm et de Project, et de ne pas les faire ouvrir
2) de faire exécuter ce formulaire à l'ouverture du document essaiOuvertureUserForm.docm
3) de faire exécuter ce formulaire à l'ouverture d'un Modèle plus général de document. En fait, ouvrir un Document général avec unee première fenêtre, qui me dirigerait selon le choix validé, à un certain document puis à l'ouverture de ce document, provoquerait l'ouverture d'un UserForm qui compléterait un document constellé de signets.

Merci encore et ne t'inquiète pas, j'ai bien compris que les différents posts doivent envisager des problèmes en tranches et non pas ce que je viens d'écrire, mais je donne juste le 'prjet général'.

Merci encore (et bravo), Grég
Commenter la réponse de gregml
jordane45 20601 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 20 mai 2014 à 12:33
0
Utile
Bonjour,


Bien que ta question soit résolue...
Pour éviter de nouveaux soucis avec des signets mal nommés... tu peux vérifier avant s'ils existent...

http://msdn.microsoft.com/en-us/library/office/ff821366%28v=office.15%29.aspx

Par exemple :

Function majSignet(signetName As String, SignetValue As String) As Boolean
If ActiveDocument.Bookmarks.Exists(signetName) = True Then
    ActiveDocument.Bookmarks(signetName).Range.Text = SignetValue
    ActiveDocument.Fields.Update
    majSignet = True
Else
    majSignet = False
End If
End Function



Sub Test()

 If majSignet("test3", "nouvelle valeur") Then
  MsgBox "Update réussi !"
 Else
   MsgBox "Update ko !"
 End If


End Sub

Commenter la réponse de jordane45
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 20 mai 2014 à 14:10
0
Utile
Houla pas trop fort non, juste ce qu'il faut pour t'aider un peu.
Une collection est une variable qui regroupe un ensemble de trucs (nombres, chaines de caractères, signets etc...), avec cette notion, le message d'erreur est assez parlant pour émettre une hypothèse dans ton contexte.

La précaution proposée par Jordanne est fort judicieuse.

A la vue de ton projet global, je n'aurais pas fait une macro, mais un logicile externe qui ouvrirait le bon modèle word et ecrirait les infos au bon signet. Ce parce que je maitrise mieux un autre langage que VBA. Mais je pense que ça doit être possible.

Pour avoir un socle pour travailler, word te permet d'enregistrer une macro (dans Word 2010, c'est l'onglet Affichage puis Macro et enregistrer macro). Cette fonctionnalité enregistre en VBA tout ce que tu fais à la main. Tu pourras ainsi voir comment se traduit le fait d'ouvrir un autre document, etc....

Quand tu te retrouves face à une difficulté, et après quelques recherches ici ou aileurs, ouvre une nouvelle question, poste le code, et on t'aidera.
Commenter la réponse de Whismeril
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 mai 2014 à 23:54
0
Utile
Merci à vous deux, une fois de plus.
Bon, j'ai décidé de prendre mon courage à 2 mains, et de me lancer dans la littérature (j'ai un peu de mal avec les bouquins d'informatiqe mais bon...). J'ai trouvé 'Formation à VBA Office 2013' par Dominique Maniez.
Il faut vraiment que je comprenne 2 ou 3 choses, notamment comment sont structurées les différentes fenêtres (projet, code..) car je me rends compte que je ne sais toujours pas où rajouter les codes, je m'en rends compte avec celui que tu m'as proposé Jordane45.

A bientôt... je reviens avec d'autres questions.
Grég
Commenter la réponse de gregml
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 24 mai 2014 à 22:09
0
Utile
8
Bonsoir,

si tu passes à VB.Net
voici la source dont je parlais plus haut, passée dans un traducteur.

je ne l'ai pas entièrement essayée, mais ouvrir un fichier et écrire du texte à un signet fonctionnent.
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Windows.Forms
Imports Microsoft.Office.Interop.Word


Public Class GestionWord
#Region "Déclarations "

    Private _ApplicationWord As Microsoft.Office.Interop.Word.Application
    Private _MonDocument As Microsoft.Office.Interop.Word._Document
    'Microsoft.Office.Interop.Word.Selection _MaSelection; 
    Private _MonRange As Microsoft.Office.Interop.Word.Range
    Private _MonSignet As Bookmark
    Private _MesSignets As Bookmarks
    Private _MonImage As InlineShape

    Private M As Object = System.Reflection.Missing.Value

#End Region

#Region "Initialisation Sauvegarde "

    ''' <summary> 
    ''' Cette classe sert d'interface entre word et une apllication C#. 
    ''' Le constructeur démarre word. 
    ''' </summary> 
    Public Sub New()
        _ApplicationWord = New Microsoft.Office.Interop.Word.Application
        _ApplicationWord.Visible = True
    End Sub

    ''' <summary> 
    ''' Ouvre un fichier existant. 
    ''' </summary> 
    ''' <param name="FileName">Chemin du document</param> 
    Public Sub OuvrirFichier(ByVal FileName As String)
        Dim oFileName As Object = CObj(FileName)
        Dim Faux As Object = CObj(False)
        Dim Vrai As Object = CObj(True)

        _MonDocument = _ApplicationWord.Documents.Add(oFileName, Faux, M, Vrai)
    End Sub

    ''' <summary> 
    ''' Enregistrer le document sous. 
    ''' </summary> 
    ''' <param name="FileName">Chemin du docmuent</param> 
    Public Sub Sauver(ByVal FileName As String)
        Dim oFileName As Object = CObj(FileName)
        Dim Faux As Object = CObj(False)
        Dim Vrai As Object = CObj(True)

        Try
            _MonDocument.SaveAs(oFileName, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M)
        Catch
            MessageBox.Show("Le fichier Word n'a pas pu être enregistré.", "Erreur d'enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
    End Sub

    ''' <summary> 
    ''' Fermer le document et l'application word. 
    ''' </summary> 
    Public Sub Fermer()
        _MonDocument.Close(M, M, M)
        _ApplicationWord.Application.Quit(M, M, M)
    End Sub

#End Region

#Region "Manipulation document "

    ''' <summary> 
    ''' Fusionne plusieurs documents en un seul. 
    ''' </summary> 
    ''' <param name="FichierPrincipal">Document à la suite duquel les autres seront insérer.</param> 
    ''' <param name="FichiersAInserer">Tableau contenant les chemins des documents à insérer</param> 
    Public Sub FusionnerPlusieurFichiers(ByVal FichierPrincipal As String, ByVal FichiersAInserer() As String)
        Me.OuvrirFichier(FichierPrincipal)

        'on insere une page vierge sinon ça merde, nécessit une signet à la fin de la page 
        Me.AtteindreSignet("FinPage")
        Dim Type As Object = CObj(WdBreakType.wdPageBreak)
        _MonRange.InsertBreak(Type)

        'on insere les fichiers words exétieurs 
        'decompte à l'envers car, il insere le fichier apres le saut de page, 
        'puis le fichier suivant au même endroit etc.. 
        For i As Integer = FichiersAInserer.Length - 1 To 0 Step -1
            Dim FileName As String = FichiersAInserer(i)
            _MonRange.InsertFile(FileName, M, M, M, M)
        Next i

        'on supprime la page vierge 
        Me.SupprimePage(FichiersAInserer.Length + 2)
    End Sub

    ''' <summary> 
    ''' Supprime une page. 
    ''' </summary> 
    ''' <param name="NumeroPage">Numéro de la page à supprimer</param> 
    Public Sub SupprimePage(ByVal NumeroPage As Integer)
        AtteindrePage(NumeroPage)

        'Supprime la selection 
        Dim MaSelection As Selection = _ApplicationWord.Selection
        MaSelection.TypeBackspace()
    End Sub

    ''' <summary> 
    ''' Insere un saut de page aprés le range  
    ''' </summary> 
    Public Sub InsererPage()
        Dim Typ As Object = CObj(WdBreakType.wdPageBreak)
        _MonRange.InsertBreak(Typ)
    End Sub

#End Region

#Region "Traitement de Texte "

    ''' <summary> 
    ''' Atteindre un signet dans le document. 
    ''' </summary> 
    ''' <param name="NomSignet"></param> 
    ''' <returns></returns> 
    Public Function AtteindreSignet(ByVal NomSignet As String) As Boolean
        Dim Nom As Object = CObj(NomSignet)

        'récupére la liste de signets 
        _MesSignets = _MonDocument.Bookmarks

        'si le signet cherché existe 
        If _MesSignets.Exists(NomSignet) Then
            'on positionne le range sur le signet et la fonction retourne true 
            _MonSignet = _MesSignets.Item(Nom)
            _MonSignet.Select()
            _MonRange = _MonSignet.Range
            Return True
        Else
            'Un message d'erreur est affiché, et la fonction retourne false 
            MessageBox.Show(String.Format("Le signet {0} n'existe pas dans le fichier.", NomSignet), "Insertion impossible", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Return False
        End If
    End Function

    ''' <summary> 
    ''' Atteindre un signet dans le document et insérer du texte aprés. 
    ''' </summary> 
    ''' <param name="NomSignet"></param> 
    ''' <param name="Texte">Texte à insérer</param> 
    ''' <returns></returns> 
    Public Function AtteindreSignet(ByVal NomSignet As String, ByVal Texte As String) As Boolean
        'si on a atteint le signet 
        If AtteindreSignet(NomSignet) Then
            'on insère le texte aprés le signet, la fonction retourne true 
            _MonRange.InsertAfter(Texte)
            Return True
        End If
        Return False
    End Function

    ''' <summary> 
    ''' Ecrire du texte à la suite de l'emplacement séléctionné. 
    ''' </summary> 
    ''' <param name="Texte"></param> 
    ''' <returns></returns> 
    Public Function EcrireTexteApresLaSelection(ByVal Texte As String) As Boolean
        Try
            'on insère le texte aprés le signet, la fonction retourne true 
            _MonRange.InsertAfter(Texte)
            Return True
        Catch
            Return False
        End Try
    End Function

    ''' <summary> 
    ''' Applique la valeur WdParagraphAlignment à un range 
    ''' </summary> 
    ''' <param name="Alignement"></param> 
    Public Sub AlignementRange(ByVal Alignement As WdParagraphAlignment)
        _MonRange.ParagraphFormat.Alignment = Alignement

    End Sub

    ''' <summary> 
    ''' Atteint et selectionne une page 
    ''' </summary> 
    ''' <param name="NumeroPage"></param> 
    Public Sub AtteindrePage(ByVal NumeroPage As Integer)
        Dim what As Object = CObj(WdGoToItem.wdGoToPage)
        Dim whitch As Object = CObj(WdGoToDirection.wdGoToFirst)
        Dim Numero As Object = CObj(NumeroPage)

        'Atteindre la page voulue 
        _MonRange = _MonDocument.GoTo(what, whitch, Numero, M)

        'La selectionner 
        _MonRange.Select()

    End Sub

#End Region

#Region "Image "

    ''' <summary> 
    ''' Insere une photo à l'endroit sélectionné. 
    ''' </summary> 
    ''' <param name="FichierImage"></param> 
    Public Sub InsereImage(ByVal FichierImage As String)
        'Selection.InlineShapes.AddPicture FileName:= _ 
        Dim monFalse As Object = CObj(False)
        Dim monTrue As Object = CObj(True)
        _MonImage = _MonRange.InlineShapes.AddPicture(FichierImage, monFalse, monTrue, M)
    End Sub

    ''' <summary> 
    ''' Modifie la taille de l'image. 
    ''' </summary> 
    ''' <param name="Pourcent"></param> 
    Public Sub TailleImage(ByVal Pourcent As Integer)
        Dim Height As Single = _MonImage.Height ' = 360.3
        Dim Width As Single = _MonImage.Width ' = 256.8

        _MonImage.Height = Height * Pourcent \ 100
        _MonImage.Width = Width * Pourcent \ 100

    End Sub

#End Region
End Class


gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 3 juin 2014 à 23:04
Salut Jordane45,

J'ai suivi ton conseil. J'ai ouvert un Nouveau projet en spécifiant 'Bibliothèque de classes'. J'ai collé tout le code en supprimant
Public Class Class1
End Class
... et en ajoutant le référence COM> Microsoft Word.

Mais j'ai toujours 1 avertissement : L'espace de noms ou le type spécifié dans les Imports 'System.Windows.Forms' ne contient aucun membre public. Vérifiez que l'espace de noms ou le type est défini et qu'il contient au moins un membre public.V2rifiez que le nom de l'élément importé n'utilise ps d'autres alias.

et 6 fois:
'MessageBox' n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection.'

Si tu as une idée pour tout cela, cela m'avancerait et serait très généreux de ta part.

Merci, Greg
jordane45 20601 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 3 juin 2014 à 23:14
Tu créés ub projet windows Form
Dans ce projet, tu ajoutes un nouvel élément CLASS
Tu y colles le code.
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 3 juin 2014 à 23:22
Un très grand merci. Il n'y a plus d'erreurs. Il faudra que je me penche sur la raison pour laquelle il n'y en a d'ailleurs plus.
Par contre, le code m'ouvre un Form1... et c'est tout.
Bonne nuit et merci, Greg
jordane45 20601 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 4 juin 2014 à 00:21
Le code que tu as est une class.
En gros... c'est un peu compliquer à expliquer complétement;.. c'est la base de la programmation objet.

Le plus simple c'est de prendre un exemple :
Prenons ( exemple très utilisé dans les formations de la POO ) un jeu de monopoly
le jeu est composé d'un Plateau, lui même découpé en cases. il y a aussi des dés... etc.
prenons pour l'exemple un Dé. ... on va créer une class DE
Cette class va avoir des propriétés : sa valeur (celle que tu obtiens quand tu le lance)
( on pourrais aussi lui donner une propriété nom (si on veut jouer avec plusieurs dés, il est plus simple de pouvoir les identifier....)
Et ensuite ce dé...il va avoir des méthodes : Par exemple une méthode LANCER
Bref;.. tout ça pour dire qu'on assimile une class à un "objet".

pour en revenir à ton code... on peut dire qu'il s'agit d'un objet "WORD".
Les méthodes sont en quelque sorte les bibliotèques de fonctions que tu peux utiliser.... Ouvrir... Fermer...

Il faut donc que tu t'en serves pour coder.... il ne sert à "rien" tout seul....

Je ne suis peut être pas très clair... mais vu l'heure.... ;-)

je t'invite plutot à bucher des tutos sur le net.

Bonne continuation.
jordane45 20601 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 4 juin 2014 à 01:02
Commenter la réponse de Whismeril
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 4 juin 2014 à 01:04
0
Utile
Bonsoir, vu l'heure jordane a très bien résumé le principe.
Il ne te reste qu à "dimer" une variable de la class gestionword.
Un truc du genre
 Dim word as new GestionWord
mais la mon ordi est éteint je ne suis pas sur à 100%
Commenter la réponse de Whismeril
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 4 juin 2014 à 05:57
0
Utile
Merci beaucoup à vous deux.
Tout ceci est un peu vague jusqu'ici. Je prends mon temps de comprendre le tuto, je l'applique à notre code et je vous en reparle.

Merci infiniment,
Greg
Commenter la réponse de gregml
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 4 juin 2014 à 07:42
0
Utile
Bonjour,

voila un bout de code pour démarrer
        Dim monWord As New GestionWord()
        monWord.OuvrirFichier("G:\Test.docx")
        monWord.AtteindreSignet("signet1", "Nouveau Texte")
        monWord.Sauver("G:\Test2.docx")


Attention la classe GestionWord postée plus haut est une traduction automatique réalisée par un logiciel.
Ça n'est peut être pas le mieux codé pour VB.

Concernant les messages d'erreur
: L'espace de noms ou le type spécifié dans les Imports 'System.Windows.Forms' ne contient aucun membre public. Vérifiez que l'espace de noms ou le type est défini et qu'il contient au moins un membre public.V2rifiez que le nom de l'élément importé n'utilise ps d'autres alias.
et
'MessageBox' n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection.'

Si c'est comme en C#, ça vient du fait que par défaut une bibliothèque de classes n'a pas d'interface graphique.
La référence à Windows.Form n'est donc pas active et le "impost" ne marche pas, et donc les messageBox non plus
Commenter la réponse de Whismeril
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 5 juin 2014 à 12:01
0
Utile
Bonjour à tous,

Je tente petit à petit de me mettre à la POO....pas simple tout de même.
Pour ce faire, j'ai tenté de faire fonctionner un petit programme que j'ai recopié à l'adresse suivante (histoire de la faire tourner et de comprendre comment il fonctionne) :http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-vb-net/notre-premiere-classe-2



pour la classe Mario1, dans la fenêtre Mario1.vb

et

pour la classe PlateauDeJeu dans Form1.vb


Mais j'ai 2 problèmes:
1) déjà, je ne comprends pas pourquoi mon 'panel' ne s'affiche pas dans ma Form1. C'est une question accessoire mais assez énervante.
2) Le programmateur a introduit deux variables : PAN_MARIO.Location et PAN_MARIO.Size, qu'il n'a pas défini au préalable. VB me renvoie dès lors un message d'erreur :PAN_MARIO n'est pas un membre de 'mario.PlateauDeJeu'

Pourriez-vous m'aider svp ?

Merci, Greg
Commenter la réponse de gregml

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.