Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/10/2007, 11h59   #1
Futur Membre du Club
 
Inscription : mai 2005
Messages : 49
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2005
Messages : 49
Points : 15
Points : 15
Par défaut Publipostage et images

Fusion et publipostage - Insertion d'images d'une base de données Excel + Macro

J'ai bien suivi toutes les étapes à la lettre, formaté le chemin de mes images comme il se doit et complété ma macro de publipostage pour la mise à jour des champs et je rencontre un problème lorsque j'exécute l'instruction suivante :
Code :
winword S:\Informatique\Projet\Gesper\Sources\modeles_word\anae.doc /mfusionner
La fusion se fait mais mon image n'apparait pas et j'ai "Erreur°! Nom du fichier non spécifié." à la place.

Je teste cette instruction car la fusion sera lancer depuis une application PowerBuilder

Alors que lorsque je suis sur mon modèle et que je lance la fusion, dans le résultat je vois mon image. Par contre, si j'ai 2 images différentes, j'ai 2 fois la première, mais bon je peux faire avec

Je suis en Xp pro SP2 et Office 2003, au cas où
sailor lvcv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 10h15   #2
Futur Membre du Club
 
Inscription : mai 2005
Messages : 49
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2005
Messages : 49
Points : 15
Points : 15
Personne pour me donner une piste ?

En fait ce matin je viens de retester mon (mes) modèles en ayant pris soin de changer le lien de l'image dans ma base de données Excel et j'ai toujours l'ancienne.
Je comprends pas pourquoi ça ne fonctionne pas ...

sailor lvcv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 11h30   #3
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
C'est le chemin du fichier qui pose problème.

http://www.developpez.net/forums/sho...45&postcount=1
__________________
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 !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 12h01   #4
Futur Membre du Club
 
Inscription : mai 2005
Messages : 49
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2005
Messages : 49
Points : 15
Points : 15
Si tu parle du fichier image, beh non
Citation:
"S:\\Informatique\\Projet\\Gesper\\Sources\\modeles_word\\Visa_IM.jpg"
j'ai bien suivi ce que Ousk a écrit, du début jusqu'à la fin et à l'instruction près.
C'est pour ça que je ne comprend pas pourquoi ça ne fonctionne pas.
Car dans les messages trouvé par la recherche du forum sur "publipostage image" certains ont des résultats satisfaisants.

Et pis, le comble du comble, ça fonctionne à la première fusion mais plus à la deuxième.

Le champ inclure image change à l'enregistrement du modèle. Il passe de
Code :
{INCLUDEPICTURE { MERGEFIELD "path_visa" }  \* MERGEFORMAT }
à
Code :
{ INCLUDEPICTURE "Visa_IM.jpg" \* MERGEFORMAT}
Du coup, j'ai toujours cette image :'(

Dans mes références, j'ai :
  • Visual Basic for applications
  • Microsoft Word 11.0 object library
  • OLE automation
  • Normal
  • Microsoft Office 11.0 object library

Dois-je déclaré aussi Microsoft DAO 3.6 object library ? Ou c'est seulement si je travaille avec Acces ?


Note : dans ce message j'ai tapé les accolades car je n'arrivais pas à les copier depuis mon modèle sans remplacer les champs par leur valeur. CAD
Code :
{INCLUDEPICTURE { MERGEFIELD "path_visa" }  \* MERGEFORMAT }
en copier/coller devient
Code :
Erreur ! Nom du fichier non spécifié.
sailor lvcv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 12h04   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Les accolades, on ne les tapes pas, on fait Ctrl + F9 pour les avoir !
Ce ne sont pas des accolades.

http://heureuxoli.developpez.com/office/word/champs/
__________________
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 !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 13h57   #6
Futur Membre du Club
 
Inscription : mai 2005
Messages : 49
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2005
Messages : 49
Points : 15
Points : 15
Je doute que CTRL+F9 fonctionne dans l'editeur de message du forum ...

Lis un peu moins vite, stp Heureux-Oli, car jusqu'à présent tu me reprends sur des trucs où j'ai passé du temps à chercher sur le forum.

Le premier lien que tu m'a donné je l'avais mis dans mon premier message.

Les accolades, je le precisais parce que j'ai lu que toi et d'autres vous vous étiez embêtés à les taper sans résultats. Et que comme j'avais taper le code dans mon message je ne voulais pas que l'on me réponde "tes accolades sont pas les bonnes !!!" (ce que tu as finalement fait)

J'ai lu tous les post du forum qui parlent de publipostage et d'images (grâce au bouton recherche du fofo).
Et je n'ai pas demandé d'aide sans un minimum de recherche et de travail. Je ne fais pas parti de ces gens.
Voilà 5 jours que je suis sur ce problème et pourtant je n'ai posté que hier.
sailor lvcv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 15h15   #7
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Citation:
Envoyé par sailor lvcv
J'ai lu tous les post du forum qui parlent de publipostage et d'images (grâce au bouton recherche du fofo).
Et je n'ai pas demandé d'aide sans un minimum de recherche et de travail. Je ne fais pas parti de ces gens.
Bonjour sailor lvcv, je veux bien te croire et c'est très bien !
Je plaisante mais je me souviens avoir galéré pas mal avant de trouver une solution. Et nous étions plusieurs dessus.
Ton problème :
Quelle procédure utilises-tu ? La procédure manuelle ou exclusivement VBA ?
Parce que si tu le fais par code, j'ai une suggestion à te faire, ce serait d'insérer un signet à l'emplacement du champ de fusion puis, à l'ouverture du doc principal (événement Document_Open) te positionner dessus et insérer le champ de fusion en dynamique. Ainsi, à la fermeture du doc, tu ne l'enregistres pas et tu n'auras pas de rémanence quant au nom du fichier.
Juste une idée que je n'ai pas le tps de tester tout de suite.
Bon courage et tiens-nous au courant.
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 15h52   #8
Futur Membre du Club
 
Inscription : mai 2005
Messages : 49
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2005
Messages : 49
Points : 15
Points : 15
Citation:
Envoyé par ouskel'n'or Voir le message
Bonjour sailor lvcv, je veux bien te croire et c'est très bien !
Je plaisante mais je me souviens avoir galéré pas mal avant de trouver une solution. Et nous étions plusieurs dessus.
Je n'en doute pas car c'est ce que les différents message sur le forum expriment.

Citation:
Envoyé par ouskel'n'or Voir le message
Ton problème :
Quelle procédure utilises-tu ? La procédure manuelle ou exclusivement VBA ?
Parce que si tu le fais par code, j'ai une suggestion à te faire, ce serait d'insérer un signet à l'emplacement du champ de fusion puis, à l'ouverture du doc principal (événement Document_Open) te positionner dessus et insérer le champ de fusion en dynamique. Ainsi, à la fermeture du doc, tu ne l'enregistres pas et tu n'auras pas de rémanence quant au nom du fichier.
Juste une idée que je n'ai pas le tps de tester tout de suite.
J'ai essayé la manuelle mais sans résultat

Puis, j'ai testé en insérant ton bout de code dans ma macro de fusion et là j'avais les images. Sauf que ça fonctionne que pour la première fusion.
Avant d'en arriver à ce que tu proposes, je voulais savoir si je n'avais pas oublié quelque chose en dehors de ce que tu as écrit dans ta procédure.

Dans un post, j'ai vu que Heureux-Oli parlait de la référence Microsoft DAO 3.6 object library à activer. Mais je ne sais pas à quoi elle sert et les références sont très osbcures pour moi. J'ai bien compris ce qu'elles sont mais pas ce qu'elles contiennent et quand j'en aurais besoin.

Je vais essayer ta méthode, je ne voyais pas d'autre alternative non plus. J'ai déjà vu quelques sujets qui tournent autour des signets et d'ajout d'images.

Citation:
Envoyé par ouskel'n'or Voir le message
Bon courage et tiens-nous au courant.
Merci, je n'y manquerai pas cette fois non plus.
sailor lvcv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 15h59   #9
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Re,
Citation:
Envoyé par sailor lvcv
Dans un post, j'ai vu que Heureux-Oli parlait de la référence Microsoft DAO 3.6 object library à activer
Je ne suis pas certain qu'elle soit nécessaire (?) De mon côté, je ne connaissais même pas cette référence. Sans doute Heureux-Oli pensait à une autre solution (?)
Toujours est-il que pour ajouter une référence à ton projet, dans l'éditeur VB, tu vas dans Outils -> Référence, et là tu valides celle qu'il te faut. Il ne suffit pas de la sélectionner, il faut valider la CheckBox Je me laisse prendre à tous les coups.
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 16h06   #10
Futur Membre du Club
 
Inscription : mai 2005
Messages : 49
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2005
Messages : 49
Points : 15
Points : 15
Citation:
Envoyé par ouskel'n'or Voir le message
Re,Je ne suis pas certain qu'elle soit nécessaire (?) De mon côté, je ne connaissais même pas cette référence. Sans doute Heureux-Oli pensait à une autre solution (?)
C'était dans un post à propos de publipostage et d'image (of course ^_^ ) mais avec acces, d'où ma question dans un précedent message
Citation:
Envoyé par sailor lvcv Voir le message
Dans mes références, j'ai :
  • Visual Basic for applications
  • Microsoft Word 11.0 object library
  • OLE automation
  • Normal
  • Microsoft Office 11.0 object library
Dois-je déclaré aussi Microsoft DAO 3.6 object library ? Ou c'est seulement si je travaille avec Acces ?
Citation:
Envoyé par ouskel'n'or Voir le message
Toujours est-il que pour ajouter une référence à ton projet, dans l'éditeur VB, tu vas dans Outils -> Référence, et là tu valides celle qu'il te faut. Il ne suffit pas de la sélectionner, il faut valider la CheckBox Je me laisse prendre à tous les coups.
A+
Oui, merci. J'ai eut à le faire une fois pour un autre problème dans ma macro de fusion.
sailor lvcv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 17h03   #11
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Pour ton info, DAO ne sert qu'a l'accès aux données.
Si tu as un table Access, DAO te sera d'un grand secour.

Désolé pour ne pas avoir tout lu, mais entre deux coupures de réseau, je dois courrir.
__________________
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 !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2007, 09h36   #12
Futur Membre du Club
 
Inscription : mai 2005
Messages : 49
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2005
Messages : 49
Points : 15
Points : 15
Citation:
Envoyé par Heureux-oli Voir le message
Pour ton info, DAO ne sert qu'a l'accès aux données.
Si tu as un table Access, DAO te sera d'un grand secour.

Désolé pour ne pas avoir tout lu, mais entre deux coupures de réseau, je dois courrir.
Ah ok, merci bien Heureux-Oli ^_^
sailor lvcv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2007, 12h59   #13
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Alors, je t'ai mis un exemple.


Tu mets tout dans le repertoire c:\temp


Tu ouvres le doc, tu fusionnes dansun nouveau document, tu fais ctrl + A,
F9 et chez moi, j'ai bien la fusion qui s'opère.
Fichiers attachés
Type de fichier : rar images.rar (5,1 Ko, 12 affichages)
__________________
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 !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2007, 16h38   #14
Futur Membre du Club
 
Inscription : mai 2005
Messages : 49
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2005
Messages : 49
Points : 15
Points : 15
Merci !!
Grâce à ton exemple que j'ai vu fonctionné chez moi, j'ai compris d'où venait la légère différence, après moultes et moultes essai et une nouvelle méga prise de tête.

Attention, on s'accroche ?
Le chemin de l'image est enregistrée dans ma base ASE préformaté comme il se doit avec des doubles cotes et double \
Ma base de données Excel est générée par mon application Powerbuilder.

Dans un précédent message, en réponse à Heureux-Oli, je disais ceci :
Citation:
Envoyé par sailor lvcv Voir le message
Le champ inclure image change à l'enregistrement du modèle. Il passe de
Code :
{INCLUDEPICTURE { MERGEFIELD "path_visa" }  \* MERGEFORMAT }
à
Code :
{ INCLUDEPICTURE "Visa_IM.jpg" \* MERGEFORMAT}
Du coup, j'ai toujours cette image :'(
Pour ne plus obtenir la réaction bizarre décrite ci-dessus, j'ai du remplacer temporairement dans ma base ASE mes doubles cotes par 2 fois simple cote Après avoir modifié mon modèle, j'ai remis mes doubles cotes dans ma base ASE, pour la fusion .

En gros, dans ma colonne de ma BD Excel, j'avais la valeur pour réaliser la fusion mais pas pour modifier mom modèle.
C'était bien un problème de chemin de fichier comme le sugérait Heureux-Oli, mais pas si simplement que ça

Je mets à jour le champ par macro. Et j'ai trouvé le moyen de désélectionné tout le texte, quelqu'un cherchait comment faire ( et moi aussi d'ailleurs).
Il suffit de rajouter après
Code :
1
2
Selection.WholeStory
Selection.Fields.Update
Code :
Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=1, Name:=""
Qui permet d'atteindre la ligne 1 du document et du coup désélectionné le texte.

Enfin, avant ça j'avais essayé la méthode de Ousk avec les signets mais ... (bah oui sinon c'est pas drôle) j'ai des modèles d'une page (1 signet) et d'autres de 3 pages (3 signets) et j'étais de nouveau "presque" bloquée. Et la première méthode de Ousk est vraiment la plus adaptée.

Merci Ousk et Heureux-Oli
sailor lvcv est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h01.


 
 
 
 
Partenaires

Hébergement Web