Remplir un formulaire word avec données excel

Résolu/Fermé
anthonnyy - 5 mars 2013 à 19:54
 anthonnyy - 6 mars 2013 à 21:37
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

A voir également:

1 réponse

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
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
Modifié par Mytå le 6/03/2013 à 21:27
Salut le Forum

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

Mytå
0
ça ne donne rien, toujours cette erreur
d'après toi mon code est bien construit ?
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
6 mars 2013 à 21:35
Re le Forum

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

Mytå
0
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