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 :

Remplissage feuille WORd


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Points : 71
    Points
    71
    Billets dans le blog
    1
    Par défaut Remplissage feuille WORd
    Bonjour à tous
    voilà mon souci, j'ai un fichier excle avec divers onglet.
    Dans chaque onglet j'ai un tableau avec des noms et des données pour ces noms.
    je voudrais à l'aide d'un Userform sélectionner un onglet puis une personne puis une ou plusieurs données de ce nom et tout ramener dans un courrier Word a des emplacements spécifiques.
    Le USerform ainsi que la récupération des données sont fait, le souci est que je n'arrive pas à ouvrir le fichier word en question et y inscrire les données aux endroits précis.
    Quelqu'un pourrait il m'aider??

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu aurais grand intérêt à réaliser la même chose depuis Word en réalisant une fusion de document utilisant ton fichier Excel en tant que base de données.
    Regarde à publipostage, dans Word.
    Tu as une barre d'outils qui te permet de sélectionner les champs.

    Si ton pb est la sélection de l'élément à copier dans la feuille de calculs qui ne peut se faire par le nom de champ, alors un exemple de code pour ouvrir ton Doc :
    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
    Sub OuvrirWord()
    Dim WdApp As Object
    Dim WdDoc
        Set WdApp = CreateObject("Word.Application")
        Set WdDoc = WdApp.Documents.Open(Filename:="D:\CheminDuDoc\TonDoc.doc")
        DoEvents
        WdApp.Visible = True 'ou False
        'ton code d'insertion du texte
        '...
        DoEvents
        WdDoc.Close True 'Enregistre le document et le ferme
        DoEvents
        WdApp.Quit 'Ferme Word
        Set WdApp = Nothing
        Set WdDoc = Nothing
    End Sub

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Points : 71
    Points
    71
    Billets dans le blog
    1
    Par défaut
    Merci pour cette première avancée mais le souci est que lorsque j'ai récupéré le nom ainsi que les 3-4 données je voudrais qu'il s'insère automatiquement dans le courrier de word et non pas sélectionner des champs un après l'autre...
    Merci de ton aide

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour ce que tu demandes, utilise le publipostage dans Word où l'insertion est automatique dès lors que tu as placé les bons champs aux bons endroits dans ton document. Le publipostage est fait pour ça, c'est simple à utiliser, suffit d'essayer. Faut oser !

  5. #5
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    si tu travailles avec des champs nominatifs dans Word, champs qui doivent avoir été préalablement créé dans ton document ou modèle word, tu peux faire comme ceci (adaptation du code de ouskelnor (salut ousk !)), pour insérer par exemple les cellules D1 et E1 dans les 2 champs nominatifs du document 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
     
    Sub OuvrirWord()
    Dim WdApp As Object
    Dim WdDoc
        Set WdApp = CreateObject("Word.Application")
        Set WdDoc = WdApp.Documents.Open(Filename:="D:\CheminDuDoc\TonDoc.doc")
        DoEvents
        WdApp.Visible = True 'ou False
        'ton code d'insertion du texte
    '>>>> modif
          With Workbooks(TonWorkbook).Sheets(TonSheet)
                 WdDoc.Fields(1).Result.Text = .Range("D1")
                WdDoc.Fields(2).Result.Text = .Range("E1")
          end with
    '<<<<< modif
     '...
        DoEvents
        WdDoc.Close True 'Enregistre le document et le ferme
        DoEvents
        WdApp.Quit 'Ferme Word
        Set WdApp = Nothing
        Set WdDoc = Nothing
    End Sub
    l'avantage du champ nominatif dans word est que sa valeur est écrasée à la prochaine initialisation.
    Si tu travailles avec des signets, il faudra faire un delete de ce que tu auras inséré à l'endroit du signet.

    Exemple pour insérer le résultat de .copy au Bookmark "Target"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
          With Workbooks(TonWorkbook).Sheets(TonSheet)
                Wdoc.Bookmarks("Target").Range.PasteSpecial _
                 Link:=True, DataType:=wdPasteOLEObject, Placement:=wdInLine
                'Montant (5)
          end with
    et pour effacer avant réutilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        Dim Myrange           As Variant
        Dim Bookstart         As Long
        Dim Bookend           As Long
     
                'Remove Inserted Contents at "Target" bookmark
                 With Wdoc.Bookmarks("Target")
                   Bookstart = .Start
                   Bookend = .End
                 End With
     
                Set Myrange = Wdoc.Range(Start:=Bookstart, End:=Bookend)
                  Myrange.Delete
                End If

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

Discussions similaires

  1. Integrer une image a une feuille word
    Par keno83 dans le forum Word
    Réponses: 3
    Dernier message: 17/09/2007, 16h07
  2. remplissage feuille de données avec recordset
    Par didierjean dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/07/2007, 22h08
  3. VBA Enregistrement feuille excel dans une feuille word
    Par pedrold75 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/05/2007, 15h36
  4. ouvrir une nouvelle feuille word en VBA
    Par fa310428 dans le forum VBA Word
    Réponses: 4
    Dernier message: 13/04/2007, 11h27
  5. Remplissage feuille excel à partir d'un dbGrid
    Par izidor dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 22/02/2006, 18h09

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