IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Compléter un formulaire Word via Excel (Erreur 642) [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Par défaut Compléter un formulaire Word via Excel (Erreur 642)
    Bonjour

    je suis à mettre au point le remplissage automatique d'un formulaire Word à l'aide d'un table de données Excel.
    J'utilise des signets dans Word pour repérer les champs et y inscrire les valeurs d'une table Excel.

    La difficulté est que je veux utiliser un fichier Word qui est un objet OLE dans ma feuille Excel.
    J'ouvre l'objet Word et met à jour les champs. OK.
    Je ferme Word et à la deuxième exécution j'ai l'erreur 642 (Le serveur distant n'existe pas ou n'est pas disponible).

    J'ai vu le même problème et la solution dans le forum (http://support.microsoft.com/kb/189618), mais vu l'utilisation d'un objet OLE, je manque de technique et je n'arrive pas à résoudre, i.e. associer l'objet OLE à l'application Word pour à la fin détruire l'instance de Word.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Sub CommandButton1_Click()
     
    Dim WApp As Word.Application
    Dim Docc As OLEObject
    Données = Feuil1.Range("DataWord")
     
        Set Docc = Feuil1.OLEObjects("WordDoc1")
        Docc.Verb xlVerbOpen
     
        With ActiveDocument
            For L = 1 To UBound(Données)
                Signet = Données(L, 1)
                Valeur = Données(L, 2)
                Select Case .FormFields(Signet).Type
                    Case 70, 83 'Texte et listbox
                        .FormFields(Signet).Result = Valeur
                    Case 71 'Checkbox
                        .FormFields(Signet).CheckBox.Default = IIf(Valeur = "Vrai", True, False)
                End Select
            Next L
        End With
     
    Set Docc = Nothing
     
    End Sub

  2. #2
    Membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Par défaut
    Aucune réponse du forum mais j'ai trouvé la solution.
    Pour ceux que ça pourrait aider, la voici, il fallait faire un GetObject :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Private Sub Word_Click()
     
    Dim WApp As Word.Application
    Dim Docc As Word.Document
    Dim OleDoc As OLEObject
    Dim Valeur As Variant
     
    Set OleDoc = [WordDoc1]
    OleDoc.Verb xlVerbOpen
    Set WApp = GetObject(, "Word.Application")
    Set Docc = WApp.ActiveDocument
     
     
    PlageDon = [DataWord]
        With Docc
            For L = 1 To UBound(PlageDon)
                Champs = PlageDon(L, 1)
                Valeur = PlageDon(L, 2)
     
                If Champs <> "" Then
                Select Case .FormFields(Champs).Type
                    Case 70, 83 ' Texte et ListBox
                        If Len(Valeur) > 255 Then Valeur = Left(Valeur, 255)
                        .FormFields(Champs).Result = Valeur
                    Case 71 'Checkbox
                        .FormFields(Champs).CheckBox.Default = IIf(Valeur <> "", True, False)
                End Select
                End If
     
            Next L
        End With
     
    Set WApp = Nothing
    Set Docc = Nothing
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Extraction données formulaire Word via VBA Excel
    Par jojoSuperFripouille dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/04/2013, 17h18
  2. [XL-2002] Erreur 642 - Compléter un formulaire Word via Excel
    Par BF999 dans le forum Excel
    Réponses: 0
    Dernier message: 08/08/2011, 00h30
  3. Modifier le texte d'un signet word via Excel
    Par yamat dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 31/07/2008, 18h19
  4. Remplir un doc word via excel
    Par enretard dans le forum Word
    Réponses: 12
    Dernier message: 17/06/2008, 12h46
  5. couper/coller entre deux signets word via excel
    Par ptitemar dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/08/2007, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo