Bonjour,
Tout d'abord je m'excuse par avance de mon opportunisme avec mon 1er msg.
Je cherche à effectuer un publipostage classique avec des champs de fusion.
Problème : ma source de donnée se trouve être un fichier txt dans lequel les enregistrements sont issus d'une requête SQL, le nombre de lignes sont de fait complètement variables.
En clair dans la source de donnée on retrouve ça :
Nom Date Debut Date fin Hopital
Nom Datedebut1 DateFin1 NomHopital1
Nom Datedebut2 DateFin2
Nom Datedebut3 DateFin3
Nom Datedebut4 DateFin4 NomHopital2
...
Nom DatedebutN DateFinN NomHopitalN
Dans la lettre fusionnée je cherche donc à lister l'ensemble des dates (de congés) prise par cette même personne sur une seule page.
Difficulté supplémentaire : l'hôpital n'est pas un champs obligatoire et le client souhaiterait voir sur la feuille d'une part les dates de congés avec séjour hospitalier (lorsque dans une ligne d'enregistrement on retrouve un nom d'hôpital de facto c'est un sejour hospitalier) et d'autre part les congés sans séjour hospitalier.
Grosso modo la lettre fusionnée donnerait ça :
Nom
Dates de congés avec séjour hospitalier :
NomHop1 DateDebut1 DateFin1
NomHop2 DateDebut2 DateFin2
NomHop3 DateDebut3 DateFin3
...
Dates de congés SANS séjour hospitalier :
DateDebut4 DateFin4
...
Je pensais avoir trouver la solution avec le champs NEXT mais il ne fait que passer à la ligne suivante, or comme le nombre d'enregistrements est variable je ne peux mettre dans ma lettre type, un certain nombre de NEXT pré-déterminé.
L'idéal serait donc de faire une boucle qui effectuerait des NEXT jusqu'à ce qu'on ne trouve plus d'enregistrement mais impossible de trouver un champs qui ressemble à un While ou un For.
Peut être (sûrement même) la solution se trouve dans la macro ?
Dans le doute je laisse quand même le code de la macro, effectué depuis un logiciel de développement :
Aidez un pauvre stagiaire à qui on lui impose des deadline
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
36
37
38 Sub mamacro () ' Lecture du nom du document principal g_NomDocPpal = ActiveDocument.Name ' Lecture du nom du document de fusion g_NomDocFus = ActiveDocument.MailMerge.DataSource.Name ' Réalisation de la Fusion With ActiveDocument.MailMerge .OpenDataSource Name:="C:\DEV\sourcededonees.txt" .Destination = wdSendToNewDocument .MailAsAttachment = False .MailAddressFieldName = "" .MailSubject = "" .SuppressBlankLines = True ' With .DataSource .FirstRecord = wdDefaultFirstRecord ' lastrecord End With .Execute Pause:=True End With Selection.WholeStory Selection.Fields.Update ' Fermeture du document principal qui ne sert plus à l'utilisateur Documents(g_NomDocPpal).Close SaveChanges:=wdDoNotSaveChanges End Sub
Merci d'avance pour vos futures réponses
Partager