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

VBA Word Discussion :

publipostage particulier excel vers word


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut publipostage particulier excel vers word
    bonjour a tous,
    ce qu'il me faudrait c'est une macro qui me permette d'effectuer directement un publipostage d'excel vers word.
    C'est a dire, que pour le moment j'ai un fichier excel et lorsque j'ai besoin de faire un publipostage, je dois :
    -remplir les cases de mon classeur
    -puis aller dans word (la, j'ai creer un lien hypertexte)
    -faire outils=>pulbipostage=>fusion et publipostage
    -a l'etape n°3, rechercher mon fichier excel (celui que je viens de remplir)
    -puis aller jusqu'a l'etape n°6 pour que la fusion se fasse


    et j'aimerais savoir sil il est possible de juste faire:

    -remplir les cases de mon classeur excel
    -appuyer sur un bouton associé a une macro qui va ouvrir word et effectuer les etapes du publipostage directement en utilisant les données du fichier excel que je viens de remplir.

    est ce possible ?

    merci bien !

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Oui !
    C'est possible.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    merci! c'est tres gentil de m'avoir repondu, et comment pourrais je proceder ? un code a me donner ? que ça soit sur word ou excel ?!

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Un code, certainement, mais sans autre explications, il y a de fortes chance que le code ne fonctionnera pas correctement.

    une solution serait pour chaque cellule son contenu soit envoyé sur un signet du document Word.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    merci de ta réponse, tu pourrais développer ton idée de code stp ?
    et par signet qu'entends tu ? je ne sais pas ce que tu veux dire par là, ni comment ça marche.

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Un signet est un repère dans un document.
    Suivant les version, c'est dans le menu Insertion ou dans l'onglet du même nom.
    On insère le signet à l'emplacement de la souris.

    On atteint un signet en VBA avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Bookmarks("Monsignet").Range.texte
    On insère le contenu d'une cellule par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Bookmarks("Monsignet").Range.texte = Range(R1C1;R1C1)
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    ok je vais essayer ca,
    et donc je pourrais faire un signet par rapport a mon fichier excel en cours et ca pourrait se faire tt seul ou il faudra rajouter une macro pour dire au fichier word qu'il peut prendre les infos du fichier excel ouvert ?

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    en fait, je me suis penché sur la questioon et j'ai bien regarder a quoi servait un signet et je ne vois pas en quoi ça va m'aider puisque ça ne va pas faire le publipostage directement!

    merci de m'expliquer

    ciaoooo

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Si je comprend bien, tu souhaites juste faire un publipostage simple !

    Pourquoi as-tu mis particulier dans le titre ?

    Il suffit d'enregistrer ton document en tant que document principal de fusion.
    Et quand on l'ouvre, on fait le publipostage.

    http://heureuxoli.developpez.com/off.../publipostage/
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    j'ai mis "particulier" dans le titre du topic

    car en fait j'ai un fichier word qui me sers a faire des lettres aux medecins et j'ai plusieurs fichiers excel avec le dossier patient.

    Et je voudrais que lorsque j'ai finis de remplir mon fichier excel, je puisse avoir un bouton qui me permette directement de fusionner les données du fichier word pour ecrire au medecin avec les données du fichier excel que je viens d'ecrire.

    Oui je peux utiliser le publipostage simple en faisant "outils, publipostage, fusion et publipostage" et ensuite aller chercher mon fichier excel,
    mais je voudrais juste un bouton qui permette de faire la manoeuvre tout seul.

    est ce possible ?

    ps: ça serait un boutn qui premierement ouvre le fichier word et qui deuxiemement se fusionne automatiquement ac le fichier excel en cours

  11. #11
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Le but du publipostage est de pourvoir enregister toutes ces manipulations dans le fichier Word.

    Normalement, le fichier ne doit être ajouté que la première fois, sauf si tu crées un nouveau fichier Excel à chaque fois.

    Peux-tu nous expliquer en détail les étapes que tu réalises ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    oui, voiila c'est ca mon probleme : c'est que j'ai un fichier excel toujours different donc je dois refaire le manip

    pour le moment j'ai un fichier excel sur lequel j'ai mis un lien hypertexte vers mon fichier word, et je dois faire outils, publipostage, fusion et publipostage, je dois aller chercher le fichier excel que je viens de nouvellement creer et je clique sur "fusion"

    c'est pas compliqué mais fastidieux, je voudrais juste pouvoir faire une macro excel qui lance une macro word qui fais la manip tout seul (publipostage et recherche du fichier excel en cours)

  13. #13
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    On en revient donc à ma proposition de Signets dans un document Word.

    On crée un modèle où on place des signets au lieu de champs de publipostage.
    Chaque signet recevra une données de la feuille Excel.
    Et ce bout de code peut se trouver dans les macro personnelles d'Excel.

    Le principe est simple, on crée un nouveau fichier basé sur ce modéle en cliquant sur un bouton.
    Le fichier se crée et les données du fichier sont envoyées dans le document.
    Le seul hic, c'est que la structure des données dans le fichier Excel doivent troujours se trouver au même endroit.
    Ex : on choisit une colonne qui contiendra le nom, ce sera toujours la même qui contiendra le nom.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Ok,on s'est trés bien compris alors! Super!
    Comment dois je proceder alors? Parce que je ne m'y connais pas du tout dans les signets!que dois je faire ?

    Ça me derange pas du tout d'avoir toutes les données toujours au même endroit sur ma feuille puisque c'est déjà le cas (feuil 3 tout est listé sur une ligne !)

    Merci bcp en tt cas de prendre du temps pr me repondre!

  15. #15
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    La première étape est la déclaration de la bibliothèque Word dans le projet Excel.

    Outils
    Références
    Choisir Microsoft Word XX.X dans la liste.

    Ensuite dans le code, on va utilser cette bibliothèque.

    Avant d'écrire le code, il faut préparer le modèle de document, chaque endroit qui va recevoir des données recevra un signet.
    Le nom des signet doit être évocateur de la données qu'il va recevoir.
    Par exemple le nom ira sur le signet nom.

    Dans le classeur des macros personnelles d'Excel, on écrit ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'Déclaration des variables
    Dim wApp As Word.Application
    Dim oDoc As Word.Document
    'Affectation des données aux variables
    Set wApp = New Word.Application
    Set oDoc = wApp.Documents.Add("Le chemin du modèle")
    'Affectation des données Excel aux signets
    oDoc.Bookmarks("nom").Range.Text = ActiveWorkbook.ActiveSheet.Range("A1")
    ...
    Et ce pour tous les signets
    ...
    'Rendre Word Visible
    wApp.Visible = True
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  16. #16
    Membre régulier Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 100
    Points
    100
    Par défaut
    Bonjour,

    je me permets de "m'incruster" dans la conversation car elle correspond tout à fait à ce que je veux!!! \o/

    Heureux-oli, j'ai la même problématique que mizouille et tout fonctionne bien quand je n'ai qu'une ligne dans mon tableau excel.
    - j'ai bien défini une document word avec mes signets
    - j'ai créer une macro associé à un bouton dans excel qui me permet de remplir mes signets word avec les données d'excel.

    Ma question :
    Si j'ai plus d'une ligne dans mon tableau excel, par exemple 5 lignes, j'aimerai retrouver dans mon fichier word, après avoir cliquer sur le bouton de génération du doc word, 5 pages. Est ce possible? Si oui, comment?? MERCI
    Carpe Diem : Profitez du moment présent
    La connaissance non partagée n'a pas vraiment son utilité

  17. #17
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Il faut adresser les cinq lignes.
    Juste que si tu fais une boucle, tu vas devoir incrémenter ta boucle de 5 lignes en 5 lignes.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  18. #18
    Membre régulier Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 100
    Points
    100
    Par défaut
    Bonjour bonjour !

    Merci Heureux-oli pour ta réponse, j'ai pu faire quelque chose qui fonctionne \o/

    Voici mon code :
    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
    Sub GenereMonDocWord_Cliquer()
    '***
    'Déclaration des variables
    Dim wApp As Word.Application
    Dim oDoc As Word.Document
    Dim NbLigne As Integer
     
    'Récupération du nombre de lignes et de colonnes
    Dim xlWb As Excel.Workbook
    Dim xlSh As Excel.Worksheet
    Dim iR As Integer
     
    'Affectation des données aux variables
    Set wApp = New Word.Application
    Set xlSh = ActiveWorkbook.ActiveSheet
     
    NbLigne = Application.WorksheetFunction.CountA(Columns(1)) - 2
    Debug.Print NbLigne
     
    For iR = 7 To NbLigne
        Set oDoc = wApp.Documents.Add(ThisWorkbook.Path & "\" & "MonModeleWord.doc")
        'Affectation des données Excel aux signets
        oDoc.Bookmarks("Signet_1").Range.Text = ActiveWorkbook.ActiveSheet.Range("H2")
        oDoc.Bookmarks("Signet_2").Range.Text = ActiveWorkbook.ActiveSheet.Range("G2")
        oDoc.Bookmarks("Signet_3").Range.Text = "ENREGISTREMENT " & iR
        oDoc.Bookmarks("Signet_4").Range.Text = "Page " & iR
        oDoc.SaveAs (ThisWorkbook.Path & "\" & "MonCourrier_N_" & iR & ".doc")
        oDoc.Close
        Set oDoc = Nothing
    Next iR
     
    End Sub
    Cependant, au lieu de créér autant de documentWord que de ligne, je souhaiterai avoir qu'1 seul doc word avec plusieurs pages correspondant au nombre de lignes de mon fichier excel.

    Comment puis je proceder? un exemple, un morceau de code pour me mettre sur la voie?
    Merci par avance
    Carpe Diem : Profitez du moment présent
    La connaissance non partagée n'a pas vraiment son utilité

  19. #19
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bonjour,

    déjà si tu ne veux pas une sauvegarde par ligne sort ton instruction "..saveas" de ta boucle FOR...

  20. #20
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, il y a dans tous les cas un tuto à consulter

Discussions similaires

  1. Publipostage Excel vers Word
    Par muchmorehuman dans le forum Word
    Réponses: 2
    Dernier message: 08/12/2014, 15h40
  2. Réponses: 1
    Dernier message: 02/03/2014, 18h20
  3. Réponses: 1
    Dernier message: 20/09/2008, 08h18
  4. [VBA-E]Copie graphique de excel vers word
    Par conconbrr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/02/2006, 10h49

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