Un cas classique, 2 tables liés (0,1 à n) par exemple une table Clients et une table Facture (si vous préférer 2 bases de données).
Un client à de 0 à n facture, 1 facture ne correspond qu'a un client.

Comment faire un publipostage pour générer un courrier pour chaque client présentant leurs factures ?
On pourrait penser à mettre répéter les informations client de la table Clients dans la table Facture à chaque enregistrement.
Outre la complexité de l'opération, on va être confronté au problème que chaque client n'a pas le même nombre de factures. L'utilisation des champs (règles) SUIVANT et SUIVANT SI permettant d'avoir plusieurs enregistrements sur une même page va être très complexe !
(Je ferai peut être un article présentant cette solution permettant d'illustrer une utilisation complexe des champs)
On va utiliser une technique très "simple" avec l'utilisation du champ DATABASE (BaseDeDonnées).
Préalables
Les 2 tables doivent avoir un champ commun (colonne) permettant d'identifier quel client doit quelle facture.
Le champ N°Client semble être un bon choix (en base de donnée on parle de clé primaire / clé externe).
Dans cet exemple on va utiliser des fichiers/tableaux Excel plus classique.
Etape 1 : Création du publipostage avec la table Clients
Un publipostage standard.
Etape 2 : Ajout du champ DATABASE
Nous allons insérer la table/base de données Factures en tant que champ DATABASE en mettant en place un critère fixe dans la requête (exemple le client 1) puis nous rendrons dynamique ce critère pour s'adapter à chaque enregistrement de la table/base de données Clients.
On insère le champ pas le ruban Insertion > QuickParts > Champs
Sélectionner la catégorie Publipostage puis le champ BaseDeDonnées.
Cliquer sur le bouton Insérer une base de données...

La fenêtre suivante apparait.

- Sélectionner la table/base de données Factures.
- Ajouter un critère de requête valide (n°6 dans l'image suivante)
Par exemple, on sélectionne seulement les enregistrements (factures) du client 1 (utiliser un client existant !).
L'onglet Sélectionner les champs (n°7) permet de choisir quels champs (colonnes) conserver.

- Permet de choisir une présentation du tableau des factures (liste/format non personnalisable !).
- Valider avec le bouton Insérer des données...
- Cocher Insérer en tant que champ puis valider avec le bouton OK.
Etape 3 : Modification du champ DATABASE
On remplace la valeur en "dur" dans la requête (ici 1) par le champ de fusion N°Client de la table/base de données Clients.
- Alt + F9 pour afficher les codes de champs.
- Remplacer 1 par le champ de fusion N°Client de la table/base de données Clients.
- Alt + F9 à nouveau pour masquer les codes de champs.
Il n'y a plus qu'à lancer la fusion !
Remarques sur le formatage du tableau :
Les formatages proposés pour le champ DATABASE proviennent d'ancienne version de Word (97 /2000 je dirais) et ne sont pas très sympa 😒.
On retrouve le choix fait dans l'assistant dans le code du champ
- Le commutateur \l (par exemple \l "16") correspondant au modèle choisie (1 à 42).
- Le commutateur \b (par exemple \b "191") correspondant au paramètres/options sélectionnés.

1+2+4+8+16+32+128 =191
Cas particulier : On ajoute 512 et 1024 quand on décoche les 2 dernières options (qui pour moi ne fonctionnent pas 🤪).
Le formatage manuel du tableau ou l'application d'un style de tableau avant la fusion est inutile.
La solution serait une macro appliquant un style de tableau à tous les tableaux par exemple.
Sub MEF_Tableau()
Dim objTableau As Table
For Each objTableau In ActiveDocument.Tables
' Pour identifier les tableaux à mettre en forme, on pourrait
' utiliser la 1ere cellule (inutile s'il n'y pas d'autres
' tableaux autres que ceux générés par le champ DATABASE).
If objTableau.Cell(1, 1).Range.Text Like "Fact*" Then
objTableau.Style = "Tableau Grille 5 Foncé - Accentuation 1"
End If
Next
End Sub
Merci pour votre attention bienveillante.