Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

appel fonction vba dans publipostage

7 réponses
Avatar
Alain
Bonjour,

je n'arrive pas a trouver comment appeler une fonction vba de mon cru depuis un
document de fusion : mes donnees en entree sont au format texte avec des numeros
de telephone sous forme 478201984 peu lisibles. J'ai donc fait une petite
fonction VBA me reformatant ca facon "04 78 20 19 84 ". Mais je ne sais pas
comment l'incorporer dans mes champs de fusion, tout en passant l'un d'eux comme
argument...

Toute suggestion bienvenue.

--
Use our news server 'news.foorum.com' from anywhere.
More details at: http://nnrpinfo.go.foorum.com/

7 réponses

Avatar
Circé
Bonjour,

Pas de chance, tu vas te mettre le club des AMIS à dos !!!!! :-D
Pasque sur ce forum, on veille au superfétatoire !!!!

Donc, la macro, inutile !!
Il faut simplement que tu ajoutes dans ton champ un commutateur de format :
# "0# ## ## ## ##"

Et pour tout savoir sur les champs, c'est ici :
http://faqword.free.fr/articles.php?lng=fr&pg2

Circé
http://faqword.free.fr
auteur de Word 2003 chez MicroApplication

Alain wrote:
|| Bonjour,
||
|| je n'arrive pas a trouver comment appeler une fonction vba de mon
|| cru depuis un document de fusion : mes donnees en entree sont au
|| format texte avec des numeros de telephone sous forme 478201984 peu
|| lisibles. J'ai donc fait une petite fonction VBA me reformatant ca
|| facon "04 78 20 19 84 ". Mais je ne sais pas comment l'incorporer
|| dans mes champs de fusion, tout en passant l'un d'eux comme
|| argument...
||
|| Toute suggestion bienvenue.
||
|| --
|| Use our news server 'news.foorum.com' from anywhere.
|| More details at: http://nnrpinfo.go.foorum.com/
Avatar
Bruno DESMET
j'ai pas la solution finale, mais dans l'aide des macro de word j'ai trouvé
çà :

Format, fonction, exemple
Cet exemple montre diverses utilisations de la fonction Format pour mettre
des valeurs au format choisi sur la base de formats nommés ou de formats
définis par l'utilisateur. Pour ce qui concerne le séparateur de date (/),
d'heure (:) et le littéral AM/PM, la sortie formatée réellement affichée par
votre système dépend des paramètres régionaux avec lesquels le code
s'exécute. Lorsque les heures et les dates sont affichées dans
l'environnement de développement, ce sont les formats heure et date
raccourcis des paramètres régionaux qui sont utilisés. Lorsqu'ils
s'affichent par exécution du code, les formats heure et date raccourcis
utilisés sont ceux des paramètres système, qui peuvent différer des
paramètres régionaux. Pour cet exemple, les paramètres Français-France sont
utilisés.

MyTime et MyDate s'affichent dans l'environnement de développement dans les
formats heure et date raccourcis définis par le paramétrage actuel du
système.

Dim MyTime, MyDate, MyStr
MyTime = #17:04:23#
MyDate = #Janvier 27, 1993#

' Renvoie l'heure système courante dans le format long défini par le
'système.
MyStr = Format(Time, "Heure, complet")

' Renvoie la date système courante dans le format long défini par le
'système.
MyStr = Format(Date, "Date, abrégé")

MyStr = Format(MyTime, "h:m:s") ' Renvoie "17:4:23".
MyStr = Format(MyTime, "hh:mm:ss AMPM") ' Renvoie "05:04:23 PM".
MyStr = Format(MyDate, "jjjj j mmm yyyy") ' Renvoie "Vendredi 27 janvier
'1993"
' Si aucun format n'est spécifié, une chaîne est renvoyée.
MyStr = Format(23) ' Renvoie "23".

' Formats définis par l'utilisateur.
MyStr = Format(5459.4, "##,##0.00") ' Renvoie "5 459,40".
MyStr = Format(334.9, "###0.00") ' Renvoie "334,90".
MyStr = Format(5, "0.00%") ' Renvoie "500,00%".
MyStr = Format("BONJOUR", "<") ' Renvoie "bonjour".
MyStr = Format("Et voilà!", ">") ' Renvoie "ET VOILÀ!".

--
Bravo Delta
http://perso.club-internet.fr/brunaria/
"Alain" a écrit dans le message de
news:

Bonjour,

je n'arrive pas a trouver comment appeler une fonction vba de mon cru
depuis un

document de fusion : mes donnees en entree sont au format texte avec des
numeros

de telephone sous forme 478201984 peu lisibles. J'ai donc fait une petite
fonction VBA me reformatant ca facon "04 78 20 19 84 ". Mais je ne sais
pas

comment l'incorporer dans mes champs de fusion, tout en passant l'un d'eux
comme

argument...

Toute suggestion bienvenue.

--
Use our news server 'news.foorum.com' from anywhere.
More details at: http://nnrpinfo.go.foorum.com/


Avatar
Anacoluthe
Bonjour !

'Bruno DESMET' nous a écrit ...
j'ai pas la solution finale, mais dans l'aide des macro de word j'ai trouvé
çà :
(...)
MyStr = Format(5459.4, "##,##0.00") ' Renvoie "5 459,40".
MyStr = Format(334.9, "###0.00") ' Renvoie "334,90".


Oui c'est l'application d'images de format numérique en VBA.

Il reste que la question initiale sur le formatage des champs
de fusion trouve sa réponse dans le formatage des *champs*
comme l'a indiqué Circé (coucou !)

Dans Word les champs et VBA sont deux mondes séparés :-p
À preuve vouloir appliquer une fonction quelconque VBA
à un champ de fusion comme le demandait Alain relève
de la haute voltige ! Non seulement c'est superfétatoire
mais en plus c'est assez compliqué :-)

Anacoluthe
« Un gentleman, c'est quelqu'un qui sait jouer
de la cornemuse et qui n'en joue pas. »
- Pierre DESPROGES

Avatar
Alain
Merci de vos reponses, je m'empresse d'approfondir l'etude de ces commutateurs
de format.
N'empeche que, par curiosite et parceque j'imagine qu'il y a tout de meme des
cas ou les commutateurs n'ont pas la solution, je serais interesse de savoir si
on peut faire appel au code VBA dans ce contexte. Est-ce seulement complique ou
carrement impossible ?
Parcequ'il faut bien reconnaitre que passer par des fonctions peut aussi
ameliorer la lisibilite : quand par exemple on a des tests imbriques pour
n'imprimer a la fusion certains blocs qu'a certaines conditions, pour peu que
l'on insere ces champs dans les cellules d'un tableau pour la mise en page, et
bien l'examen du resultat final ne brille par par la clarte. Alors que
l'utilisation de code VBA avec des tests imbriques mais utilisant l'indentation
et les commentaires a un air carrement plus sympa et facilite la maintenance...

Encore merci pour les conseils,

Alain.

--
Use our news server 'news.foorum.com' from anywhere.
More details at: http://nnrpinfo.go.foorum.com/
Avatar
Bruno DESMET
Donc, je suis hs ;-(((

--
Bravo Delta
http://perso.club-internet.fr/brunaria/
"Anacoluthe" a écrit dans le message de
news:OoJ2$
Bonjour !

'Bruno DESMET' nous a écrit ...
j'ai pas la solution finale, mais dans l'aide des macro de word j'ai
trouvé


çà :
(...)
MyStr = Format(5459.4, "##,##0.00") ' Renvoie "5 459,40".
MyStr = Format(334.9, "###0.00") ' Renvoie "334,90".


Oui c'est l'application d'images de format numérique en VBA.

Il reste que la question initiale sur le formatage des champs
de fusion trouve sa réponse dans le formatage des *champs*
comme l'a indiqué Circé (coucou !)

Dans Word les champs et VBA sont deux mondes séparés :-p
À preuve vouloir appliquer une fonction quelconque VBA
à un champ de fusion comme le demandait Alain relève
de la haute voltige ! Non seulement c'est superfétatoire
mais en plus c'est assez compliqué :-)

Anacoluthe
« Un gentleman, c'est quelqu'un qui sait jouer
de la cornemuse et qui n'en joue pas. »
- Pierre DESPROGES



Avatar
Alain
Personne ne releve le defi d'une solution claire a l'integration de fonctions
VBA conjointement a l'utilisation des champs ?;o)
Remarquez, peut-etre n'y en-a'il pas...

N'empeche que les cas d'utilisation ne doivent pas etre si rares : pour en
revenir aux numeros de telephone a formater que j'evoquais dans les Post initial,
les formats fonctionnent tres bien (Merci !) tant que TOUS les numeros ont ete
saisis sans espaces. Or de temps en temps, la personne qui a saisi le fichier
(je n'ai pas de controle dessus) a pris la peine de saisir les espaces. Le N°
devient alors de la forme "0 2 14 " au lieu de "04 78 20 18 94"
Je trouverais dommage de devoir retravailler mon fichier CSV "a la papatte"
apres chaque import pour ma fusion.

Peut-etre y-a'il encore des codes de champs pour virer prealablement les espaces,
mais quand j'aurais rajoute ca (sans parler des champs conditionnels), ma page
en mode visu des codes de champs commencera a etre un beau fouillis :o(

Je persiste donc a penser qu'une petite fonction VBA clarifierait grandement
tout ca, avec l'avantage d'etre reutilisable dans d'autre documents.
Je continue a chercher de mon cote.

Alain.

--
Use our news server 'news.foorum.com' from anywhere.
More details at: http://nnrpinfo.go.foorum.com/
Avatar
Anacoluthe
Bonjour !

'Alain' nous a écrit ...
N'empeche que, par curiosite et parceque j'imagine qu'il y a tout de meme des
cas ou les commutateurs n'ont pas la solution, je serais interesse de savoir si
on peut faire appel au code VBA dans ce contexte. Est-ce seulement complique ou
carrement impossible ?
Parcequ'il faut bien reconnaitre que passer par des fonctions peut aussi
ameliorer la lisibilite : quand par exemple on a des tests imbriques pour
n'imprimer a la fusion certains blocs qu'a certaines conditions, pour peu que
l'on insere ces champs dans les cellules d'un tableau pour la mise en page, et
bien l'examen du resultat final ne brille par par la clarte. Alors que
l'utilisation de code VBA avec des tests imbriques mais utilisant l'indentation
et les commentaires a un air carrement plus sympa et facilite la maintenance...


Je vais essayer de répondre court.
- Pour les tests, il faut utiliser les champs IF
mais si vous devez multiplier les fusions conditionnelles
c'est que votre source est bien mal conçue....
- Très souvent ce n'est pas Word qu'il faut voir, c'est
la source : des données claires produisent des fusions
claires.
- Si vous pensez avoir besoin d'une macro, faites-la dans
la source. Dans 90% des cas vous la trouverez superflue
vue de ce côté des données ! Une bonne requête, une bonne
mise en forme et Word n'en demande pas plus.
- Concernant l'usage de VBA à la fusion dans Word ce
n'est pas impossible, c'est juste compliqué car il
faut utiliser les événements* de fusion à chaque
enregistrement. Hors détournement tarabiscoté du
publipostage, on nage à 99% dans le superfétatoire !!!

Anacoluthe
« Un gentleman, c'est quelqu'un qui sait jouer
de la cornemuse et qui n'en joue pas. »
- Pierre DESPROGES