Publipostage avec des noms répétés plusieurs fois dans 1 tableau Excel

Grimm_jow

XLDnaute Nouveau
Bonjour,

J'ai un tableau Excel que je voudrais utiliser pour faire des convocations. Dans ce tableau, les personnes à convoquer apparaissent plusieurs fois car elles doivent être convoquées plusieurs à des dates et des lieu différents. Alors bien sûr je pourrais faire un courrier de convocation par date mais ça me ferait envoyer 4 courriers pour certaines personnes. Donc je voudrais savoir comment faire en transformant automatiquement mon tableau pour que ne faire qu'une convocation par personne.
Je sais aussi que j'aurais pu construire mon tableau différemment dès le départ en indiquant comme entête de colonne date1, date 2 mais il aurait fallut mettre lieu 1, lieu 2, ... heure 1, heure 2 ... épreuve 1, épreuve 2 ... et c'est assez dur à gérer dans ce sens pour le construire.

Pour la solution, s'il y en a, merci de ne pas me proposer de VBA, je ne le maîtrise absolument pas. Ou alors vraiment quelque chose de ultra simple et expliqué sur la mise en œuvre.

S'il y a plusieurs formules et/ou plusieurs transformation, ça me va.

Peut être aussi que la solution est dans les règles de publipostage de Word, mais je ne connais que "si alors, sinon..." qui ne suffira pas je pense.

Si c'est impossible merci de me le dire.

Je vous joins un extrait du fichier en question.

Par souci de confidentialité j'ai remplacé les noms des personnes par des numéros. Ça va de 30 à 43, il y a donc 14 personne et j’aimais au final ne faire que 14 courriers en publipostage.

Cordialement

Julien
 

Fichiers joints

zebanx

XLDnaute Accro
Bonjour Julien, le forum

Un publipostage (tableau excel / lettre word) est possible et la forme de votre tableau devrait le permettre sans trop de problème.

Néanmoins, afin d'éviter les inutiles A/R ("c'est bien mais c'est pas comme ça que je voulais que ce soit présenté"), il serait important de joindre un modèle word "type" que vous souhaitez envoyer.
Ca ne prend pas longtemps à faire, vous l'avez d'ailleurs peut-être déjà à disposition.

@+
 

Grimm_jow

XLDnaute Nouveau
Bonjour

Je n'avais pas vu votre réponse. Je n'ai pas été informé par email.

Ma demande n'était pas de faire un simple publipostage en effet possible avec mon tableau mais de faire un publipostage reprenant dans un seul courrier TOUTES les lignes correspondant au même surveillant. Certains surveillants surveillent 3 épreuves, il faut alors que le courrier adressé à ces surveillants comportent 3 lignes correspondant à chacune des épreuves et indiquant les dates lieux et heures des épreuves.

Ceci est impossible avec word excel de façon simple. Il faut soit passer par du vba. Soit passer par cette méthode que j'ai trouvée en cherchant un peu et qui me convient bien : http://www.faqword.com/index.php/word/tutos/toutes-versions/416-publipostage-conditionnel-maison#word-2007-2019

Merci
 

zebanx

XLDnaute Accro
Bonjour,

Un essai uniquement fait sur excel avec :
- un tableau de départ
- une feuille modèle
- la création des copies depuis "modèle"
- un export xls pour chaque nom

Ca prend quand même du temps à faire sous word pour créer les différents champs donc si vous ne fournissez pas le modèle attendu...

xl-ment
 

Fichiers joints

Grimm_jow

XLDnaute Nouveau
Merci pour votre fichier.
Je ne sais pas comment vous avez procédé. Je ne sais pas faire de publipostage dans Excel. Il faut dire que je n'ai jamais vraiment cherché. De plus la demande est de pouvoir le faire sous word à partir de la base de données excel et de voir s'il y a des fonctions permettant d'accéder à la demande.
Voici le type de résultat attendu sous word. J'ai dû le mettre en pdf car le site n'accepte pas les fichiers word
 

Fichiers joints

zebanx

XLDnaute Accro
Bonjour,

Un zip contenant les informations.

- base de données excel (recap) avec bouton "GO" pour mise en forme pour le publipostage (feuille publi)

- lettre type word avec champs de publipostage
Vous allez déziper et classer les fichiers dans un répertoire.
Mais lors de la première ouverture de ce modèle type word, des messages d'erreurs vont apparaitre (messagebox) parce qu'il ne trouve pas la source de données.
Mais au bout de 3 ou 4 message box il y en aura une qui vous demandera spécifiquement d'aller rechercher cette source.
Vous n'aurez plus qu'à aller chercher le fichier excel et de choisir par la suite la feuille "publi$" comme étant la base de données.
Le modèle est très proche du votre, vous pouvez bien sur l'adapter à votre convenance avec les différents champs.
A noter que les champs du tableau vont jusqu'à 6 donc 6 références pour chaque nom pour le moment de classes à surveiller.

- document final (ici 16 pages).

Si vous souhaitez le faire sous word, vous devez connaitre les manipulations principales pour aller rechercher la base notamment.
Et des tutoriels vidéos expliquent très bien comment on fait dans le cas contraire ou besoin de rafraichissement sur le sujet.

Bonne finalisation

@+
zebanx
 

Fichiers joints

Dernière édition:

Grimm_jow

XLDnaute Nouveau
Bonjour et merci pour votre envoie.

Encore une fois je n'ai pas été prévenu par le site que j'avais une réponse et avec les fêtes je me suis un peu éloigné du sujet. Toutes mes excuses et meilleurs voeux.

Donc j'ai testé votre envoie. Je vois que le bouton go a pour vocation de transformer le tableau. Cette transformation se fait via VBA et malheureusement je ne comprends pas ce langage.

J'ai ensuite testé le publipostage avec word. Bien sûr j'ai dû aller chercher la base de donnée sur la feuille publi car le lien est différent entre chez vous et chez moi (oui je sais faire un publipostage sous word sans problème). Par contre je n'ai pas eu de résultat. J'ai afficher les champs avec alt+ f9 et tous les champs indiquent : "Erreur ! Signet non défini."
Je n'ai pas su de quoi il s'agissait. Du coup j'ai simplement réinsérer les champs de fusions classiques à la place et en effet j'obtiens un tableau qui récapitule toutes les surveillances pour chaque personne. J'ai même ajouté une règle si alors sinon pour personnaliser "convié" en fonction du genre.

Les + de votre méthode sont que l'on peut partir d'un tableau excel facile à traiter puis le transformer en un tableau utilisable pour le publipostage comme désiré. Sur Word on peut personnaliser les tailles des colonnes du tableau.
Les - sont que le tableau word a 6 lignes qu'il y ait une seule surveillance ou 6 et l'utilisation du VBA sur Excel.

Les + de la méthode que j'ai trouvée : permet de se passer du VBA avec une manip somme toute relativement simple. Le tableau word comporte exactement le nombre de lignes nécessaires pour chaque surveillant.
Les - : Il faut à chaque fois créer un tableau secondaire avec juste les civilités, les noms et prénoms (c'est rapide à faire mais pas automatisé). Les largeurs du tableau word sont automatiques et non paramétrables, ce qui est un peut gênant car la colonne salle n'a pas besoin d'être aussi large que la colonne épreuve par exemple.

Cordialement
 
Dernière édition:

zebanx

XLDnaute Accro
Bonjour @Grimm_jow

Meilleurs voeux xl-iens également.
Je pense qu'on pouvait actualiser les champs sans avoir besoin de tous les refaire en changeant la source de données.
Dans le ruban "publipostage", choix de modifier la liste des destinataires et on peut aller chercher une source de données.

Vous avez trouvé une solution qui vous convient, tant mieux. L'important reste d'être à l'aise avec l'utilisation d'un fichier.

Je reste par contre sur l'idée qu'il vaut mieux travailler sur excel plutôt que word finalement.
Pour construction :
1- Un tableau de base avec tous les champs
2- Une feuille modèle (telle que présentée sous word)
3- Une macro pour lancer toutes les générations de feuille
4- Une exportation des feuilles créés ce qui facilite leur transmission par la suite à chaque destinataire (le publipostage sous word conduisant à avoir un fichier contenant toutes les lettres, sauf erreur).

Ce post m'a été utile pour cette position. Chacun est donc content de ses méthodes, c'est l'essentiel.

Xl-ment
zebanx
 

Grimm_jow

XLDnaute Nouveau
Bonjour,

Cette fois-ci j'ai bien été informé de la réponse.

Comme cette demande est pour quelqu'un qui maîtrise encore moins que moi le sujet, la demande est spécifiquement sur Word. Le publipostage sous word propose 3 options : l’envoie par mail (si ces dernier sont renseignés dans la base de données), l'impression directe ou, en effet, la création d'un fichier contenant tout ou partie des lettres générées. Il est possible de réaliser une ou plusieurs de ce actions pour le même documents de publipostage et de choisir les courriers que l'on voudra fusionner (pas forcément toute la liste).

Pour ma curiosité personnelle, pourriez-vous m’expliciter vos différents points ou en valider ma compréhension svp ?
1- Il s'agit de la base de donnée initiale de travail sous excel ?
2- Le même modèle que sous word mais dans une feuille excel ?
3- C'est la méthode proposée dans votre message du 14 décembre ? Si oui serait-il possible de m'expliquer les 2 macros (celle du 14 décembre et celle du 15) svp ?
4- Exportation toujours dans le classeur Excel dans différentes feuilles ? En quoi est-ce plus facile pour la transmission (cf ma réponse sur les possibilités de word en génération de documents pour le publipostage ci-dessus) ?

Je ne dis pas que je suis plus content de ma méthode que de la votre. J'ai fait l'inventaire des + et - de votre méthode du 15 décembre et de celle que j'ai trouvée à mettre en œuvre sous word. Les 2 ont leurs avantages et leurs inconvénients à mes yeux. La possibilité de proscrire certains inconvénients me plairait. Sur une méthode pour mon développement personnel, sur l'autre pour aider encore plus à la demande qui m'a été faite.

Cordialement
 

zebanx

XLDnaute Accro
Re-bonjour,

1. Oui, enfin en ouvrant le fichier sous excel puis word, la base de donnée s'est correctement alimentée sous word pour le publipostage.
edit : en changeant les informations, j'ai vu effectivement que la base ne s'est pas actualisée. Je suis donc reparti depuis "publipostage", puis "démarrer la fusion et le publipostage" et j'ai choisi "le pas à pas" pour pouvoir à nouveau réimporter la base.

2. Dépend uniquement de ce que vous indiquez dans la feuille "modèle"

3. Non, le fichier ne travaillait que sous word. Ci-joint la version excel.
Il y a trois boutons
3.1 pour supprimer les feuilles autres que la base, le modèle
3.2 pour générer des feuilles à partir du modèle
3.3 pour exporter ces feuilles suivant les différents noms, dans le même répertoire.

4. Je ne sais pas si c'est plus facile effectivement si vous envoyer les informations directement par voie électronique depuis word. Je ne procède pas comme cela, mais ça pourrait être plus rapide.
edit : après essai, c'est effectivement pas mal de procéder de la sorte. Présentation moyenne mais bonne efficacité pour les envoyer par outlook.

@+
 

Fichiers joints

Dernière édition:

Grimm_jow

XLDnaute Nouveau
Re-bonjour,

Même pour un envoie par courrier papier ça reste très efficace sur word. On peut choisir quels courriers on souhaite imprimer et éventuellement enregistrer uniquement ces courrier là ou l'intégralité des courriers générables.

J'ai bien compris l'action de chaque boutons mais pas comment ils sont fabriqués puisque je ne comprends toujours pas le VBA (cf ma requête dans le message précédent).

Je remarque que le bouton export est assez peu utile par rapport à ce qu'on peut faire directement sous word. En effet le Export crée un nombre assez volumineux de fichiers et s'il y a plusieurs vagues de convocations pour par exemple un examen blanc puis le véritable examen, on risque de se retrouver avec des documents portant le même nom. Donc conflit. De plus il faut ouvrir les documents 1 par 1 pour les imprimer. Alors que sous word, Même si vous avez enregistré un fichier comportant tous les courriers vous pouvez encore choisir quelles pages vous souhaiter imprimer. Ou même en amont, si on dispose de différentes bases de données prêtes, on peut utiliser le modèle de publipostage pour ne générer que certains courriers et aussi reprendre le modèle pour une autre base et générer d'autres convocations.

Je reste curieux de comprendre les programmations VBA. Et si je savais modifier la commande que j'utilise avec méthode pour personnaliser un peu plus le tableau qui se crée, elle serait top.
 

zebanx

XLDnaute Accro
Bonjour,

Ok pour word, vous avez des arguments solides pour conserver l'usage de cette appli;)

Ce serait trop long pour expliquer le langage VBA, néanmoins dans le fichier joint :
- rajout de 5 colonnes qui peuvent être reprises sous word
- ajout en VBE (ALT + F11) d'un code supplémentaire en VBA pour avoir un tableau de publipostage intégrant ces 5 nouvelles colonnes

En gros, on change les bornes à différents endroits par rapport à la V0.
(Donc si vous souhaitez encore rajouter des colonnes, il n'y aura qu'à modifier ces éléments).

xl-ment
zebanx

VB:
Sub recap_publipostage()
Set shr = Sheets("recap"): Set shp = Sheets("publi")
derL2 = shr.Cells(Rows.Count, 1).End(3).Row: derL2R = shp.Cells(Rows.Count, 1).End(3).Row
j = 13 '-- changement

'--- clearcontents
shp.Select
Range(Cells(2, 1), Cells(derL2R + 1, 100)).ClearContents
derL2R = shp.Cells(Rows.Count, 1).End(3).Row

'--- copie des lignes
shr.Select
For i = 2 To derL2
On Error GoTo prochain
        If Cells(i, 3).Value <> Cells(i - 1, 3).Value Then
        shr.Range(Cells(i, 1), Cells(i, 18)).Copy Destination:=shp.Cells(derL2R + 1, 1) '-- max : 18 colonnes
        Else
            If shp.Cells(derL2R + 1, 3) = shr.Cells(i, 3) Then
            j = j + 6
            shr.Range(Cells(i, 13), Cells(i, 18)).Copy Destination:=shp.Cells(derL2R + 1, j) '---colonnes M à R à reprendre si valeur retrouvée
            Else
            shr.Range(Cells(i, 1), Cells(i, 18)).Copy Destination:=shp.Cells(derL2R + 1, 1) '--- sinon copie de ligne complète (nouveau nom)
            End If
        End If
      If Cells(i, 3).Value <> Cells(i + 1, 3).Value Then derL2R = shp.Cells(Rows.Count, 1).End(3).Row: j = 13 '--- changement

prochain:
On Error GoTo -1
Next i

'---mise en forme
shp.Select
With [A1].CurrentRegion.Offset(1, 0)
        .Interior.Pattern = xlNone
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Orientation = 0
        .Borders.LineStyle = xlNone
End With

End Sub
 

Fichiers joints

Grimm_jow

XLDnaute Nouveau
Bonsoir

Les arguments pour word sont pour moi (en tant que formateur bureautique) logiques. Word est à la base fait pour le travail et l'édition de texte. Il serait dommage qu'il soit moins efficace que Excel sur le sujet.

Pour moi, l'intérêt d'excel est bel et bien le traitement de la base de données (ce qui ne comble pas toutes les lacunes de Word).

Merci pour le code, mais ne le comprenant pas, c'est comme si vous m'aviez envoyé un message en mandarin.

En tous cas merci pour le suivi du sujet
 

BrunoM45

XLDnaute Barbatruc
Bonjour Julien alias Grimm_jow

Tu verras le VBA n'est pas si compliqué ;)
Voici ton fichier avec le code et les commentaires pour le comprendre (du moins j'espère)

Ensuite pour ton publipostage tu as juste à faire appel à la feuille "ListePubli"

A+
 

Fichiers joints

Grimm_jow

XLDnaute Nouveau
Bonjour et encore désolé pour le délai de réponse. Le site ne me prévient pas systématiquement.
Merci pour les explications. Il y a des choses que j'arrive à comprendre quand c'est très détaillé. Quand les remarques sont plus d'ordre général, je comprends l'idée énoncée mais pas les commandes. En effet pour comprendre vraiment il faut savoir a quoi correspond chaque commande et je n'en connais aucune. Il y en a quelques unes dont j'ai plus ou moins deviné l'action et le fonctionnement mais ça reste obscur pour les néophytes.
Pour mieux te faire comprendre c'est comme si tu ne parlais pas du tout anglais et que je te disais que "My friends are coming home tonignht for a party with a lot of boose and food" ça voulait dire que mes amis viennent chez mois pour une soirée avec beaucoup d'alcool et de nourriture. Tu auras l'idée. Peut être même que tu arriveras a identifier quelques mots, mais au final tu seras toujours incapable de comprendre la phrase et de la refaire ou d'utiliser les mots dans une autre phrase.
Mais merci pour la tentative c'est gentil. Je pense qu'il faut que je me plonge dans un tuto de VBA pour comprendre.
Merci encore
 

Discussions similaires


Haut Bas