|
Publicité ' | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2003 Messages : 15 ![]() |
Bonjour à tous,
Je dispose d'un document Word dans lequel se trouvent des champs de fusion et je souhaiterais transformer le contenu d'un de ces champs en code128 afin de pouvoir le mettre sous forme de code-barres. J'ai pour se faire une fonction vb intitulée "Public Function Code128$ (chaine$)" qui renvoie le code128 du texte fourni en paramètre. Cependant je ne sais pas comment faire pour utiliser cette fonction depuis Word en automatique, c'est à dire que Word affiche automatiquement le code128 du champs de fusion en question. Pouvez-vous m'aider ? Merci d'avance |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 321 ![]() |
Salut,
Si j'ai bien compris, tu souhaites qu'une partie du texte qui est issue d'un champ de publipostage devienne un code barre ?
__________________
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 ! |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : novembre 2003 Messages : 15 ![]() |
Oui c'est à peu prêt ça. En fait, c'est un champ de fusion (qui correspond à un identifiant de personne dans mon cas) que je dois transformer en code-barre. Et pour se faire, la fonction code128() me converti cette donnée numérique en donnée de type code-barre 128. Il ne reste plus ensuite qu'à mettre la police de type code-barres 128 associée.
Le problème c'est que je ne sais pas comment faire appel à cette fonction ? |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 321 ![]() |
Salut,
Pourquoi n'utilises tu pas une simple police de caractère Code barre juste pour cette zone du document ?
__________________
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 ! |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : novembre 2003 Messages : 15 ![]() |
Salut,
En fait je suis obligé d'utilisé la police code 128 (à cause de certaines réglementations) et pour celle-ci il ne suffit pas d'appliquer la police code-barres sur mon champ de fusion. Je m'explique, pour que ma douchette récupère le texte "123456", il que que je mette le texte "Ò,BXLÓ" en police code-barres. La fonction vb code128() permet donc de transformer "123456" en "Ò,BXLÓ". Sauf que je ne sais pas comment faire appel à cette fonction. Pour information on peut retrouver cette fonction sur le site internet http://grandzebu.net/index.php dans la rubrique informatique, code-barres, puis code 128. Merci d'avance |
|
|
00
|
|
|
#6 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 321 ![]() |
Salut,
Pour la fonction, elle est complète, il suffit de la coller. Par contre, le problème est qu'un document issu d'une fusion ne possède plus de champs ni de signets. On se retrouve avec un document ne contenant que du texte. Il faudra donc déterminer où se trouve le texte à convertir dans le document. Un exemple sur un texte sélectionné dans un document : Code :
__________________
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 ! |
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : novembre 2003 Messages : 15 ![]() |
Merci pour ton aide. Par contre j'ai oublié de préciser que je ne m'y connais pas en VB Word. Donc ce serait sympa si tu pouvais m'expliquer quoi faire exactement.
Pour information j'ai déjà copié la fonction code128() dans Word. Par contre je ne comprends pas ce que fait la tienne. Disons que dans mon exemple, j'ai un champ de fusion qui s'appelle "identifiant". Que dois-je faire pour que lorsque j'ouvre le document, la valeur récupérée par le champ de fusion "identifiant" soit remplacée par celle que retourne la fonction code128() ? Encore une fois, merci et désolé d'être un newbie dans ce domaine. |
|
|
00
|
|
|
#8 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 321 ![]() |
Salut,
J'ai copié intégralement la fonction donnée par ton lien. Dans la partie : Code :
On peut agir sur le contenu d'un champ de fusion mais juste avant la fusion, il faut utiliser un évènement Application_BeforeMailMerge. On récupère la donnée avant injection et on la modifie. Comment utiliser la fonction ? http://heureuxoli.developpez.com/off...page=page8#8-B
__________________
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 ! |
||
|
|
00
|
|
|
#9 | ||||||
|
Invité de passage
![]() Inscription : novembre 2003 Messages : 15 ![]() |
Salut,
Je viens de tester ta fonction mais il y a un petit problème. Je m'explique, si je tape : Code :
Par contre, si te tape : Code :
J'ai donc testé que ma ligne sélectionnée était bien récupérée en utilisant la fonction suivante et cela fonctionne. Code :
|
||||||
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 321 ![]() |
Salut,
Probablement que tu as pris un retour à la ligne qui n'est pas autorisé.
__________________
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 ! |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : novembre 2003 Messages : 15 ![]() |
Effectivement je me demande si je ne récupère pas un caractère en trop car lorsque j'utilise la fonction Len() pour voir la taille de ce que j'ai sélectionné, la valeur obtenue est toujours supérieure de 1 par rapport au nombre de caractères sélectionnés.
Sauf que je ne vois vraiment pas comment ça se fait. Est-il possible que je mette en pièce-jointe sur ce topic le petit fichier Word que j'utilise pour faire mes tests afin que tu puisses y jeter un petit coup d'oeil ? En te remerciant par avance |
|
|
00
|
|
|
#12 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 321 ![]() |
Salut,
Tu peux mettre ton fichier sur le forum. Certains caractères masqués peuvent être affichés en cliquant sur un bouton qui ressemble à ça : ¶
__________________
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 ! |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : novembre 2003 Messages : 15 ![]() |
Ok merci.
Je vais d'abord commencer par expliquer ce que j'ai voulu faire dans mon document Word et je mettrai le fichier en pièce-jointe demain matin car j'ai oublié ma clé USB au bureau. En fait dans mon document test, je n'ai pas mis de champs de fusion mais uniquement du texte (je testerai plus tard avec le publipostage). Voici les informations présentes : Nom, Prénom, Service, Matricule, Code-barres. J'ai ensuite créé deux signets : le premier intitulé "Signet1" qui encapsule le matricule, et le second intitulé "Signet2" qui encapsule le code-barres. Le but de ma macro est donc de récupérer le contenu du signet1, de le convertir à l'aide de la fonction code128() et de mettre le résultat dans le signet2. Il ne me restera plus alors qu'à appliquer la police code-barres correspondante sur le signet2. Voilà j'espère avoir bien expliqué mon problème. Bonne soirée |
|
|
00
|
|
|
#14 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 321 ![]() |
Salut,
tout de suite, le fait d'utiliser des signets une bonne méthode, mais elle n'est pas utilisable avec du 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 ! |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : novembre 2003 Messages : 15 ![]() |
Salut,
Je viens de vérifier dans mon document et il y avait effectivement le retour à la ligne qui était incorporé dans les signets. Une fois retiré ça fonctionne correctement. Par contre si tu me dis que ça ne fonctionnera pas avec les champs de fusion, je ne sais pas comment faire autrement. Pourrez-tu m'expliquer quoi faire ? Je te transmets en pièce-jointe mon fichier Word. Merci d'avance |
|
|
00
|
|
|
#16 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 321 ![]() |
Salut,
On peut récupérer la valeur d'un contrôle avant que la donnée ne soit insérée dans le document de cette manière. Code :
__________________
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 ! |
||
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : novembre 2003 Messages : 15 ![]() |
Bonsoir,
Finalement je n'ai pas su récupérer le contenu de mon champ de fusion avec la méthode que tu m'as indiquée. En effet, mon document Word est généré par une application à partir du modèle dans lequel j'ai incorporé mes macros. Et je me suis aperçu après recherches que cette application génère pour chaque document un fichier texte dans lequel sont stockées toutes les informations et remplace lui même les champs de fusion par ces informations à l'aide d'un programme qui s'appelle "fusion.exe". J'ai donc contourné le problème en lisant le contenu de ce fichier texte et en récupérant l'information voulue. Maintenant il me reste encore quelques tests à effectuer afin de m'assurer que tout fonctionne correctement. En tout cas un grand merci à ce forum et tout particulièrement à Heureux-oli pour toute l'aide qu'il m'a apportée. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com