Générer des courriers types word à partir d'excel

loulouange

XLDnaute Occasionnel
Bonsoir,

Je me permets de faire appel à vos compétences en Excel afin de savoir s'il est possible de créer dans un tableau excel comprenant une liste de personnes avec coordonnées, un bouton ou autre permettant d'ouvrir un document spécifique dans Word reprenant des éléments dans le tableau excel.

Etant donné que se sont des lettres personnalisées, il n'y pas de possibilité de faire un publipostage.

Jusqu'ici je n'ai pu qu'améliorer les lettres types en appliquant des champs, (je n'y connaissais rien avant).

Je sais qu'Excel propose de grandes possibilités mais je crains que ce que je demande nécessite une très bonne maîtrise d'Excel.

Ceci dit, si vous pensez que ma demande est réalisable, et s'il existe un tuto pas à pas ou si vous pouviez m'expliquer au moins pour un exemple, je pourrais tenter de comprendre le fonctionnement des macros.

Pour vous permettre de mieux cerner ma demande, je vous mets en pièce jointe un tableau et deux exemples de lettres types, une pour absence injustifiée (AI) et l'autre pour absence justifiée (AJ).

Le tableau est exhaustif, d'autres lettres types et documents existent, le but étant de pouvoir en cliquant sur un bouton (dans chaque colonne sur chaque ligne ??) de générer le document et de reprendre l'adresse du destinataire.

Je vous remercie par avance pour vos suggestions et conseils qui me seront bien précieux.
 

Pièces jointes

  • données sources.xls
    29.5 KB · Affichages: 247
  • Convov2 suite à AJ avec rdv ateliers.docx
    152 KB · Affichages: 230
  • Convov2 suite à AI avec rdv ateliers.docx
    154.9 KB · Affichages: 171
  • Convov2 suite à AJ avec rdv ateliers.docx
    152 KB · Affichages: 225
  • Convov2 suite à AI avec rdv ateliers.docx
    154.9 KB · Affichages: 179
  • Convov2 suite à AJ avec rdv ateliers.docx
    152 KB · Affichages: 225
  • Convov2 suite à AI avec rdv ateliers.docx
    154.9 KB · Affichages: 179

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

Bonjour Martial, le forum,

Je reviens sur la MFC, j'ai vu l'option "Effacer les règles", je voulais savoir si je pouvais ensuite recopier les régles de la feuille1 sur les autres feuilles ? évitant ainsi de tout reprendre à chaque fois.

A te relire.

Loulou
 

Yaloo

XLDnaute Barbatruc
Re : Générer des courriers types word à partir d'excel

Bonsoir Loulou,

Il ne me semble pas que ce soit faisable avec juste un copier/coller. Une macro doit pouvoir le faire, mais le temps de créer la macro doit être plus long que de faire les MFC manuellement (sauf bien sûr si tu as beaucoup beaucoup de MFC)
A+
Martial
 

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

Bonjour Martial,

Ok alors il vaut mieux que je le fasse manuellement effectivement, je supprime les MFC en trop progressivement c'est pas bien gênant.

Je n'ai pour une fois pas de question à te poser :eek: grâce aux bases que tu m'as transmises j'arrive à manipuler mon fichier en comprenant à présent le fonctionnement et en évitant surtout de refaire certaines erreurs.

Encore merci à toi.

Je reviendrais surement te voir.

A +

Loulou
 
Dernière édition:

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

Bonsoir le forum, bonsoir Martial,

Ca faisait longtemps ... je savais bien que je reviendrais vous voir.

J'ai attendu un moment avant de revenir ici espérant trouver la solution à mon problème qui reste une énigme pour moi.

Cela concerne toujours mon fameux fichier qui me rend bien service tous les jours. Mais il y a un "bug" qui se produit de temps en temps et qui cause toujours le même problème, je m'explique :

dans la première feuille "F.O. reçues", il arrive parfois que les données dans la cellule F qui concerne les codes postaux sautent, ou bien je trouve des données qui ne correspondent pas. Heureusement que j e fais une sauvegarde régulièrement ce qui me permet de remettre les infos à jour.

J'ai regardé dans tous les codes vba s'il y avait une erreur dans le renvoie des cellules mais je n'ai rien trouvé.
J'ai l'impression que cela survient lorsque que des infos sont rentrées dans la feuille "Pré. Ateliers", lorsque l'on renseigne les présences , est il possible que cela soit du au fait qu'un tri est fait avant la saisie ? Je pense aussi à cette feuille car j'ai vu parfois dans la colonne code postale par exemple "10h" : info que l'on trouve dans la feuille présence atelier mais ce que je ne comprend pas c'est que cette ligne n'est pas normalement prise en compte dans le renvoi des données.

Je joins le fichier ici, peut être aurez-vous plus de chance que moi pour déceler l'origine du problème, voici le lien :
suivi atelier mai 2014.xlsm - Fichier XLS

J'avais une autre question que j'avais depuis un moment en tête :

Par exemple dans le code de la feuille1 cela commence ainsi :

Code:
Private Sub Worksheet_Change(ByVal Target As Range
Application.DisplayAlerts = 0: Application.EnableEvents = 0
i = Target.Row
'Récupération de l'Identifiant de la ligne modifiée
Id = Cells(i, 1)
  'On met en majuscule ou en nom propre les colonnes D, E, F, G et I
  Cells(i, 4) = StrConv(Cells(i, 4), 1)
  Cells(i, 5) = StrConv(Cells(i, 5), 3)
  Cells(i, 6) = StrConv(Cells(i, 6), 3)
  Cells(i, 7) = StrConv(Cells(i, 7), 3)
  Cells(i, 9) = StrConv(Cells(i, 9), 1)

Pourquoi doit-on mettre 'StrConv' et que signifie le chiffre 1 ou 3 juste avant la parenthèse de fin ?

Merci pour votre aide.
 

Staple1600

XLDnaute Barbatruc
Re : Générer des courriers types word à partir d'excel

Bonsoir à tous

loulouange
Pourquoi doit-on mettre 'StrConv' et que signifie le chiffre 1 ou 3 juste avant la parenthèse de fin ?
Le début de la réponse est dans le commentaire
'On met en majuscule ou en nom propre les colonnes
Et la suite dans l'aide en ligne de VBA (accessible avec les touches ALT+F11 puis F1)
Si tu ne sais plus ou est ta touche F1, tu peux alors aller lire les mêmes infos de l'aide à propos de StrConv (ou presque) ci-dessous:
Ce lien n'existe plus
 

Yaloo

XLDnaute Barbatruc
Re : Générer des courriers types word à partir d'excel

Bonjour Loulou :), Staple :D, tout le monde,

J'ai regardé le fichier mais n'arrive pas à reproduire ton "bug", sans ça, difficile de le solutionner.

Pour StrConv, Staple a répondu, mais tu aurais pu le trouver toi-même ;)

A+

Martial
 

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

Bonjour Staple, Martial, le forum,

Staple : je te remercie pour ta réponse et ton lien que je suis allée consulter. J'avais bien compris que c'était une histoire de mettre en majuscule les données saisies dans certaines colonnes mais je ne comprenais pas pourquoi il y a des cellules avec chiffres qui sont concernées, dans mon cas :

NOM - Prénom - CP (code postal) - Adresse1 - téléphone

Mais maintenant que j'analyse mon tableau, l'erreur vient de moi car entre temps j'avais changé l'ordre de la colonne CP ce qui du coup fait que les numéros de cellules ne correspondent plus dans le code.

Pour l'histoire des 1 et 3 j'ai pu trouver l'explication dans ce lien :

StrConv, fonction - Access

Je comprends maintenant pourquoi dans la colonne Adresse1 les premières lettres de chaque mot se mettaient en majuscules, je devais à chaque fois tout remettre manuellement en minuscule dans la feuille "base".

Martial : je te remercie de t'être penché sur le tableau, de mon coté pour l'instant je n'ai pas non plus eu de bug, je vais essayer de vérifier tous les jours afin de savoir exactement à quel moment cela se produit, c'est un peu compliqué car je ne suis pas la seule à l’utiliser.

Ceci dit, je me demandais si mon problème n'était pas lié justement au constat fait plus haut avec strconv ?

Désolée de ne pas avoir trouvé la réponse par moi même, pourtant j'utilise beaucoup google et le forum par contre la touche F1 j'avoue beaucoup moins car j'ai toujours du mal à tout saisir, j'ai besoin de cas concrets pour comprendre :eek: ce n'est pas de la mauvaise volonté je vous assure.

Encore merci pour votre disponibilité.

A+

Loulou
 

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

Bonsoir,

Je viens encore vous embêter, je sens que je vais me faire gronder :eek:

Cela concerne la macro que j'avais mis sur une des feuilles afin de faire une copie de celle-ci vers un autre classeur.

Elle s’exécute via un bouton, j'arrive à mon résultat mais j'ai à chaque fois un message d'erreur :

Je vous mets le code du bouton :

Code:
Sub CopierFeuilleValSeulesNoVBA()
Dim WbkCopy As Workbook
Sheets("typo").Copy
Set WbkCopy = ActiveWorkbook
With WbkCopy
   With .ActiveSheet
    .UsedRange.Value = .UsedRange.Value
   End With
   Application.DisplayAlerts = False
   .SaveAs "c:\lou\typotest.xlsx", xlOpenXMLWorkbook
   End With
End Sub

Donc j'ouvre mon fichier suivi atelier, sur l'onglet typo lorsque je clique sur le bouton j'ai une fenêtre qui s'affiche avec "erreur d’exécution '9'
Je clique donc sur "débogage" , j'arrive sur la feuille suivante ayant pour titre :

"Microsoft Visual Basic" Classeur1 [arrêt] - [Feuille6 (code)]

Dans la partie Private Sub Worksheet_Activate() j'ai en en jaune With Sheets("Base")

Donc je ferme cette page et je me retrouve sur mon tableau source, je vois qu'un classeur a été crée "classeur1" or normalement c'est un fichier nommé typotest qui doit s'ouvrir. Je referme donc ce fichier.

Je retourne sur le fichier source et je clique à nouveau sur le bouton et là ça fonctionne et cette fois le fichier typotest s'est bien ouvert. Si je refais le test ça fonctionne toujours.

Mais dès que referme le fichier source, que je l'ouvre à nouveau et que je recommence les étapes, ça se passe toujours de la même manière.

Merci par avance pour votre aide.
 

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

oui j'ai bien une feuille typo dans le classeur sources, le code fonctionne si ce n'est ce début de bug à chaque fois, je pense que c'est lié à la feuille "base" qui comprend les ID et donc les autres feuilles se remettent à jour par rapport à la feuille "base".
mais normalement dans le code du bouton, la copie ne devrait pas prendre en charge les codes vba au final.
 

camarchepas

XLDnaute Barbatruc
Re : Générer des courriers types word à partir d'excel

Oui , j'ai vu , par contre , y'a des num tel et autre choses dans le classeur, je pense qu'il vaudrait mieux l'enlever .

Voici donc .

Comme tu travail sur 2 classeurs , il faut préciser le nom du classeur comme c'est fait ci dessous

Code:
Private Sub Worksheet_Activate()
Application.DisplayAlerts = 0: Application.EnableEvents = 0
'A l'activation de la feuille
  'On cherche la dernière ligne pleine pour supprimer les données
  j = [A65536].End(xlUp).Row
  If j > 4 Then Rows("5:" & j).ClearContents
  With Workbooks("Suivi ateliers(1).xlsm").Sheets("Base")
  'Pour toutes les lignes de "Base"
  For j = 3 To .[A65536].End(xlUp).Row
    If .Cells(j, 2) <> "" Then
      'On copie les données de Base dans la feuille activée
      i = [A65536].End(xlUp)(2).Row
      Cells(i, 1).Resize(, 5).Value = .Cells(j, 1).Resize(, 5).Value
      Cells(i, 6) = .Cells(j, 25)
      Cells(i, 7) = .Cells(j, 28)
      Cells(i, 8) = .Cells(j, 29)
      Cells(i, 9).Resize(, 23).Value = .Cells(j, 808).Resize(, 23).Value
  End If
  Next
  End With
  j = [A65536].End(xlUp).Row
  If j > 4 Then Range("A5:AE" & [D65536].End(xlUp).Row).Sort [D5], xlAscending, [E5], , xlAscending, , , xlNo
Application.DisplayAlerts = -1: Application.EnableEvents = -1
End Sub
 

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

Bonjour,

Oups j'avais pas fait attention, je suppose que tu parles du logo avec les coordonnées, j'avais pris soins d'enlever les infos personnelles sur les autres feuilles mais là j'ai zappé, merci de me l'avoir signalé (j'ai supprimé le fichier).

Alors je viens d'essayer ton code et là ça fonctionne !! Il fallait donc préciser le nom du classeur sources.

J'ai encore deux questions :

Pour le nom du classeur sources, on ne peut pas mettre "ThisWorkbook" ? je demande cela car on est amené à changer le nom du fichier selon la période de l'année. Ceci pour éviter de changer à chaque fois la ligne. Enfin c'est pas bien gênant autrement.

2ème question : Avant de générer mon fichier, je travaille au départ sur mon tableau sources qui se trouve donc dans l'onglet typo en appliquant des filtres sur certaines colonnes, mais si je fais ensuite la copie via le bouton pour obtenir mon deuxième fichier typotest, tout s'emballe et je me retrouve avec des données dans tous les sens. donc je dois enlever les filtres du tableau sources avant et les remettre ensuite sur le tableau de destination. Je voulais savoir si c'était normal ?

Encore merci pour ton aide.
 

camarchepas

XLDnaute Barbatruc
Re : Générer des courriers types word à partir d'excel

Le thisworkbook est le classeur qui contient la macro,

L'autre solution c'est d'activer le classeur et de ce servir d'activeworkbook.

Pour l'autre question , non c'est pas normal , aprés peut être dû à la volumétrie et à la capacité de l'ordi.

Pour certain de mes traitements pleins de lignes et colonnes , je suis obligé de segmenter la copie, sinon des problèmes mémoire
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 175
Membres
112 677
dernier inscrit
Justine11