Aide et conseils sur Excel pour fabriquer un outil pour extraire des donnée
bonjour
j'utilise excel (version 2013 package office MOFPE ) pour une association j'ai besoin de faire parvenir aux membres un document avec un texte standard mais en le personnalisant genre publipostage (avec nom prénom adresse n°adh etc...) les infos sont dans un classeur excel et je souhaite pouvoir éditer pour chaque membre un document avec leurs infos personnelles sous word et ensuite leur envoyer soit par mail soit par la poste.
je ne sais pas faire de macro ni de VBA c'est bien là mon problème.
le classeur excel où sont les données a cette forme je souhaite pouvoir récupérer les données des colonnes pour les insérer dans les champs à renseigner d'un document à créer et à enregistrer pour chaque adhérent
merci de vos conseils
Phil
Bonjour philphil,
Avez-vous regardé cette vidéo qui propose de faire du publipostage avec Excel sans passer par Word?
https://www.youtube.com/watch?v=qiRDGerT58E
Bonjour fcyspm30
merci de votre réponse je suis en train de regarder et ensuite de faire un essai
encore merci
Philippe alias philphil
Bonjour
Aprés avoir suivi les instructions sur youtube
j'ai lancé l’exécution du code suivant
Sub publipostage()Dim classeurOrigine As String, classeurPublipostage As String
classeurOrigine = ActiveWorkbook.Name
Workbooks.Add
classeurPublipostage = ActiveWorkbook.Name
[a1] = "Publipostage automatique réalisé le " & Format(Now(), "dd/mm/yyyy")
Windows(classeurOrigine).Activate
Dim table As Range
Set table = [a2].CurrentRegion
Dim ligne As Integer, colonne As Integer
For ligne = 2 To table.Rows.Count
Dim enregistrements As String
enregistrements = ""
For colonne = 1 To table.Columns.Count
enregistrements = enregistrements & table(1, colonne) & ";" & table(ligne, colonne) & "!"
Next
ActiveSheet.Shapes(1).Copy
Application.Wait Now + TimeValue("00:00:01")
Windows(classeurPublipostage).Activate
Sheets.Add after:=ActiveSheet
ActiveSheet.Paste
Dim enregistrement As Variant, nouveauTexte As String
For Each enregistrement In Split(enregistrements, "!")
Dim titre As String, cellule As String
If enregistrement <> "" Then
titre = Split(enregistrement, ";")(0)
cellule = Split(enregistrement, ";")(1)
nouveauTexte = ActiveSheet.Shapes(1).TexteFrame.Characters.Text
nouveauTexte = Replace(nouveauTexte, "[" & titre & "]", cellule)
ActiveSheet.Shapes(1).TexteFrame.Characters.Text = nouveauTexte
End If
Next
Windows(classeurOrigine).Activate
Next
End Sub
1er problème
j'ai eu une erreur 438 ligne 46 col 48
nouveauTexte = ActiveSheet.Shapes(1).TexteFrame.Characters.Text
nouveauTexte = Replace(nouveauTexte, "[" & titre & "]", cellule)
ActiveSheet.Shapes(1).TexteFrame.Characters.Text = nouveauTexte
End If Next Windows(classeurOrigine).Activate Next
End Sub
comment le résoudre ?
2eme problème
lorsque la macro s'exécute aucun des champs prévus nom prénom etc... 8 au total n'est rempli dans le classeur crée
et je n'ai qu'un seul classeur crée en plus de celui qui date le publipostage alors que mon fichier sur lequel doit s'appliquer la macro comporte 190 lignes et donc 190 classeurs différents avec les infos personnelles de chaque personne
.j'ai aussi une question le fichier origine contient 8 colonnes indispensable dans le classeur origine mais qui ne sont pas à traiter par la macro publipostage
| ADH | DJ | action | DATE | NOM | PRENOM | ADRESSE | CP | VILLE | N° TEL | ADRESSE MAIL | P | COT | DON | TOTAL | LETTRE |
est ce que cela peut generer des erreurs ?
merci de vos aides et commentaires
bien cordialement
Phil