Remplir un formulaire word avec données excel

Résolu
anthonnyy -  
 anthonnyy -
Bonjour,

j'ai une base de données excel dans laquelle j'ai créé un bouton permettant d'ouvrir un formulaire word.
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open("\\bfrclocfp01\Ordo$\CONTROLE\Bilan Fournisseur\FORME NC US - CF FAB F 070 VB.doc", ReadOnly:=True)
End Sub

pour éviter la double saisie, je souhaiterais que les 2 premiers emplacements du formulaire intègrent les valeurs du fichier excel
j'ai imaginé une inputbox à l'ouverture du doc word dans laquelle on saisirait la référence et par une recherche dans excel en colonne L, on retrouverait cette référence et avec un range(....).offset on pourrait trouver la valeur correspondant à cette ligne en colonne F.

on obtiendrait dans le formulaire word :
ActiveDocument.FormFields(1) prendrait la valeur de l'inputbox qui s'activerait au démarrage du document word
ActiveDocument.FormFields(2) prendrait la valeur de la base Excel en colonne F (sachant que la valeur tapée dans l'inputbox est présente en colonne L)

je ne sais pas si le code doit être intégré dans la macro du bouton excel ou si il doit être intégré au document word comme j'ai commencé avec
Private Sub Document_Open()
Ref = InputBox("Saisir la référence de la NC présente dans Bilan " & Year(Date) & ".xls")
End Sub

auriez vous des suggestions de code à me faire car j'ai un peu de mal à l'heure actuelle.

Merci à vous

1 réponse

  1. anthonnyy
     
    Bonsoir,
    j'ai avancé mais je suis confronté à un soucis.
    je lance ma macro en cliquant, je tape ma référence et tout se passe comme voulu.
    je veux réaliser un nouvel essai et là j'ai ce message qui apparaît "Erreur d'exécution '462' : le serveur distant n'existe pas ou n'est pas disponible"
    si je referme mon fichier excel et retape la même référence tout fonctionne. en fait ça plante quand je lance 2 fois la macro sans avoir fermé le fichier excel.

    voici mon code, qu'en pensez vous ?
    Sub Acceptation_FR()
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim i As Byte

    Set WordApp = CreateObject("Word.Application") 'ouvre une session
    WordApp.Visible = True 'word est affiché
    Set WordDoc = WordApp.Documents.Open("\\C:\Users\Thony\Desktop\à bosser\FORME NC FR - CF FAB F 070 VB.doc", ReadOnly:=True) 'ouvrie le document en lecture seule

    Dim chEntree As String
    chEntree = InputBox(Prompt:="Saisir la référence de la NC")
    If chEntree = Empty Then
    MsgBox Prompt:="Aucune référence tapée"
    End If

    Dim celluletrouvee As Range
    Set celluletrouvee = Range("L2:L65000").Find(chEntree, lookat:=xlWhole)

    If celluletrouvee Is Nothing Then
    MsgBox (chEntree & " n'a pas été trouvée")
    Else
    ligne = celluletrouvee.Row
    col = celluletrouvee.Column
    celluletrouvee.Select
    End If

    ActiveDocument.FormFields(1).Result = celluletrouvee
    ActiveDocument.FormFields(2).Result = celluletrouvee.Offset(0, -6)
    ActiveDocument.FormFields(4).Result = celluletrouvee.Offset(0, -4)
    ActiveDocument.FormFields(5).Result = celluletrouvee.Offset(0, -5)
    ActiveDocument.FormFields(8).Result = celluletrouvee.Offset(0, -2)
    ActiveDocument.FormFields(10).Result = celluletrouvee.Offset(0, -3)

    End Sub
    0
    1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      Salut le Forum

      Essaye en libèrant les variables à la fin du code
      WordApp.Quit
      Set WordDoc = Nothing  
      Set WordApp = Nothing

      Mytå
      0
    2. anthonnyy
       
      ça ne donne rien, toujours cette erreur
      d'après toi mon code est bien construit ?
      0
    3. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      Re le Forum

      Et comme ceci :
      'Ferme le document Word
        WordDoc.Close False
      'Ferme la session Word
        WordApp.Quit

      Mytå
      0
    4. anthonnyy
       
      j'ai essayé en rajoutant WordApp devant chaque ligne comme ceci
      WordApp.ActiveDocument.FormFields(1).Result = celluletrouvee
      WordApp.ActiveDocument.FormFields(2).Result = celluletrouvee.Offset(0, -6)
      WordApp.ActiveDocument.FormFields(4).Result = celluletrouvee.Offset(0, -4)
      WordApp.ActiveDocument.FormFields(5).Result = celluletrouvee.Offset(0, -5)
      WordApp.ActiveDocument.FormFields(8).Result = celluletrouvee.Offset(0, -2)
      WordApp.ActiveDocument.FormFields(10).Result = celluletrouvee.Offset(0, -3)
      Set WordDoc = Nothing
      Set WordApp = Nothing
      End sub

      et là plus aucun soucis
      merci pour les conseils, ça m'a permis d'avancer et maintenant je sais qu'il faut libérer le processus appelé
      Bonne soirée et merci
      0