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 :

[VBA-W]document word dynamique


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Points : 14
    Points
    14
    Par défaut [VBA-W]document word dynamique
    Bonjour à tous,

    Je souhaite créé dynamiquement un document WORD en utilisant des informations contenues dans une base de données créé en Access.

    Je n'ai pas de problème pour toutes les infos de type texte. (j'utilise le mailmerge de word - publipostage). TVB

    Par contre je souhaite insérer dans mon doc word, pour chaque "ligne" de ma base access, une photo dont l'adresse de stockage dans ma base (comme pour faire un trobinoscope).

    J'ai essayé par moi même et beaucoup cherché sur le net mais je ne trouve pas de solutions à mon problème;

    Est-ce que qq'un a une idée ou une piste à me soumettre ?

    Merci

    Tinous

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    Voilà ce que j'avais mis pour insérer une photo dans une cellule d'un tableau WOrd. Je n'ai jamais essayé la liaison avec Access.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Word.Selection.InlineShapes.AddPicture FileName:="C:\Photo.jpg", _
              LinkToFile:=False, SaveWithDocument:=True

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Points : 14
    Points
    14
    Par défaut comment récuperer la valeur du champ ?
    Merci à Linda mais mon problème réside dans la récupération du nom du fichier image (variable) et non dans l'insertion elle-même.

    Je n'ai pas grande experience (ce n'est de le dire) en programmation objet. Si j'arrivais à attribuer à ma variable "aaa" le contenu de mon champ "image" tout irai bien. Mais comment faire ?

    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
    33
    34
    35
     
    Sub Macro3()
    '
    ' Macro3 Macro
    '
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.OpenDataSource Name:= _
            "D:\My Documents\essai.xls", ConfirmConversions:=False, ReadOnly _
            :=False, LinkToSource:=True, AddToRecentFiles:=False, PasswordDocument:= _
            "", PasswordTemplate:="", WritePasswordDocument:="", _
            WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
            Connection:="Entire Spreadsheet", SQLStatement:="", SQLStatement1:=""
     
        ActiveDocument.MailMerge.EditMainDocument
     
        ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="numero"
        Selection.TypeText Text:=" "
        ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="image"
     
     
        Selection.TypeText Text:=" ..................."
        aaa = "D:\My Documents\image001.gif"   ' ceci est un test
     
        ' aaa = ????  ........................
     
        ' je souhaite attribuer à 'aaa' la valeur du champ 'image' de l'occurence 
        ' active du fichier essai.xls dans laquelle est stockée le chemin + nom
        ' du fichier de l'image à inserer
     
     
        Selection.TypeText Text:=" "
         Selection.InlineShapes.AddPicture FileName:=aaa, LinkToFile:=False, _
          SaveWithDocument:=True
     
    End Sub
    Y a t'il une solution ?

    merci
    Tinous

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour

    tu peux essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aaa = ActiveDocument.MailMerge.DataSource.DataFields("image").Value


    bonne soiree
    michel

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Points : 14
    Points
    14
    Par défaut on est proche mais ...
    Merci SilkyRoad on y est presque !
    Avec cette instruction l'image insérer est toujours la même, c'est à dire l'image correspondant au premier enr de ma base.- pas d'évolution :-(
    Quand je lance le publipostage, tous mes champs évolus normalement, je change bien de nom, de prénon etc ... mais j'ai toujours la mm photo grgrgrg

    la solution n'est pas loin. mais où?

    Tinous

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    rebonsoir


    pour boucler sur tous les enregistrements du champ "image" , dans la base de données


    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
     
    'boucle sur tous les enregistrements de la base de données
    Dim i As Integer
     
    For i = 1 To ActiveDocument.MailMerge.DataSource.RecordCount
    aaa = ActiveDocument.MailMerge.DataSource.DataFields("image").Value
    '
    '
    'la suite de la procedure
    '
    '
    '
    'pour passer à l'enregistrement suivant
    ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
    Next i



    bonne soiree
    michel

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Points : 14
    Points
    14
    Par défaut pb dû à mailmerge ?
    Re bonsoir et re merci SilkyRoad

    J'ai essayé ta solution mais je me fais jeter sur
    ActiveDocument.MailMerge.DataSource.RecordCount
    "methode non reconnue". Il semble que le mailmerge ne soit pas très flexible ;-).

    grgrgr

    je continue ma quête.

    Tinous

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    rebonsoir

    j'utilise cette propriété sans probleme avec Office XP

    RecordCount, propriété
    Renvoie une valeur de type Long qui représente le nombre d'enregistrements figurant dans la source de données.

    je ne pourrai malheureusement pas t'aider pour les autres versions


    bonne soiree
    michel

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Points : 14
    Points
    14
    Par défaut presque ...
    Merci tout plein, je commence à voir la lumière tout là-bas au bout du tunnel... j'ai changé d'ordi pour travailler sous XP et donc ça marche beaucoup mieux.

    je m'explique.

    ta solution marche super bien, je me retrouve avec un document avec toutes mes images à la queue leu-leu MAIS ... je n'arrive pas à combiner les exigences de mon publipostage ( mise en forme des données, saut de page entre les fiches, texte fixe etc) et les images.

    bonne soirée
    Tinous

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour

    difficile de répondre sans voir ta procédure :

    la marche à suivre si ton publipostage est totalement dynamique :

    1. tu crées ton document principal ( insertion du texte avec la mise en forme , insertions des champs ...etc...)

    2. ensuite tu boucles sur les enregistrements de ta base de données :
    et pour chaque enregistrement tu effectues l'action finale souhaitée ( impression , envoi mail , sauvegarde séparée ...etc...) en intégrant une image dans chaque lettre


    bonne journée
    michel

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Points : 14
    Points
    14
    Par défaut explication
    Bonjour le matinal ;-) , ton aide est précieuse

    je t'explique ce que je fais:

    Comme je n'ai pas trouvé dans les fonctions standard de publipostage de word la possibilité d'insérer une image variable, je me suis dit qu'il fallait passer par une macro et y ajouter l'insertion d'image.
    J'ai donc utilisé la fonction enregistrement pour créer cette macro, ensuite j'y ai ajouté l'instruction insertion d'image. Mon problème étant d'arriver à faire le lien entre une information de ma base et cette instruction.

    Dans mon post plus haut tu as l'intégralité de ma macro. Le but de cette macro est de créer le document "principal" permettant de faire le publipostage MAIS pas de faire le publipostage lui-même. Cela permet de gérer le façon indépendant et souple la parti cosmétique (couleurs, polices, niveaux -titre 1 - 2 etc - marges) qui sera le travail de l'utilisateur. Une fois le cosmétique fait, l'utilisateur lancera lui même le publipostage.

    Si j'integre tes instructions à ma macro, je me retrouve avec toutes les images dans mon document "principal" (si je lance le publi, toutes les photos seront répétées pour toutes les occurences de ma base). C'est déjà beaucoup mieu que ce à quoi j'arrivai avant !

    Je sens donc que la solution n'est pas loin , mais pas si proche non plus.

    Merci pour ton aide
    bonne journée

    Tinous

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour

    Comme je n'ai pas trouvé dans les fonctions standard de publipostage de word la possibilité d'insérer une image variable
    il suffit d'inserer un champ INCLUDEPICTURE dans le document principal

    http://office.microsoft.com/en-us/as...861641033.aspx

    http://support.microsoft.com/kb/q114306/#top


    bonne journée
    michel

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Points : 14
    Points
    14
    Par défaut bon sang ... que de temps perdu !
    Merci, merci, merci SilkyRoad pour ton aide.

    effectivement, pas besoin de macro, juste du mailmerge qui a beaucoup plus de possibilité que ce que je croyais. la procédure est un peu alambiquée et il faut bien avoir le chemin avec un format entre " et avec double \ pour que cela fonctionne.

    Mon utilisatrice préférée va être bien contente.

    bonne journée

    Tinous

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

Discussions similaires

  1. [WD-2003] Document Word dynamique
    Par Toto_le_héros38 dans le forum Word
    Réponses: 2
    Dernier message: 24/08/2011, 14h10
  2. Génération d'un document word dynamiquement
    Par omo_albaraa dans le forum Documents
    Réponses: 3
    Dernier message: 15/01/2009, 19h21
  3. Insertion documents word dans champ objet OLE sous VBA
    Par frankouche dans le forum Access
    Réponses: 4
    Dernier message: 20/12/2006, 21h35
  4. Document Word dynamique
    Par ennamsaoui dans le forum VBA Word
    Réponses: 2
    Dernier message: 31/03/2006, 12h16
  5. [Access][VBA] Ouvrir un document word existant
    Par NicoNGRI dans le forum Access
    Réponses: 1
    Dernier message: 16/12/2005, 12h39

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