Remplir un formulaire word avec données excel
Résolu
anthonnyy
-
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
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:
- Remplir automatiquement formulaire word à partir de données excel
- Whatsapp formulaire opposition - Guide
- Word et excel gratuit - Guide
- Organigramme a remplir word - Guide
- Word 2013 - Télécharger - Traitement de texte
- Tableau word - Guide
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
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
Essaye en libèrant les variables à la fin du code
Mytå
d'après toi mon code est bien construit ?
Et comme ceci :
Mytå
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