Bonjour tout le monde.
Je viens vers vous car après de nombreuses recherches, je ne trouve pas mon bonheur.
Je cherche à réaliser 2 choses avec les outils Office.
1/Création de dossiers et sous-dossiers
Fichier : https://we.tl/uHHgvHUWSV
Je souhaite générer des dossier avec 1 sous dossier à partir d'une liste sur Excel.
Onglet : HVAC Status
J'utilise 2 parties sur mon fichier Excel :
- Une cellule avec le chemin d'accès pour créer le dossier qui est en "E5".
- Colonne A = Nom du dossier
Voici la macro que j'ai utilisé :
1 2 3 4 5 6 7 8 9 10
|
Sub créer_dossiers()
On Error Resume Next
Dim lig As Byte, cptr As Byte
lig = Range("A65536").End(xlUp).Row
For cptr = 1 To lig
MkDir "C:\Users\timothee.vanderhorst\Documents\test"
MkDir "C:\Users\timothee.vanderhorst\Documents\test\" & Cells(cptr, 1)
Next
End Sub |
J'aimerais utiliser directement la case "E5" plutôt que de devoir ré-ouvrir la macro à chaque fois pour changer le chemin d'accès.
Je ne vois pas du tout comment créer un seul sous-dossier (à nommer Fichiers) par dossier créé via la colonne A.
Comme suit :
C:\Users\timothee.vanderhorst\Documents\test\TF - HVAC - 101.01.01 GASCONDENSATIEKETEL\Fichiers
C:\Users\timothee.vanderhorst\Documents\test\TF - HVAC - 101.01.02 CONDENSERENDE GASWANDKETELS\Fichiers
C:\Users\timothee.vanderhorst\Documents\test\TF - HVAC - 101.02.03 EXPANSIESYSTEEM\Fichiers
......
2/Publipostage depuis Excel
Fichier : https://we.tl/z7Ld2rYCNL
J'ai crée un modèle Word qui effectue un publipostage depuis mon premier fichier Excel avec l'onglet "HVAC DATAS".
J'ai bien trouvé une macro afin de publiposter tous mes fichiers en les séparant tous, mais je ne sais pas comment faire pour les mettre dans mes dossiers crées (pas les sous-dossier, bien les dossiers créés précédemment via la colonne A).
Voici la macro utilisée :
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
'Publipostage > Word, enregistrement individuel en PDF
Sub TestPublipostPdf()
' Déclaration des variables
Dim iR As Integer
Dim i As Integer
Dim oDoc As Document
Dim DocName As String
Dim oDS As MailMergeDataSource
' Affectation des objets
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource
iR = oDoc.MailMerge.DataSource.RecordCount
Debug.Print iR
For i = 1 To iR
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
.DataSource.FirstRecord = i
.DataSource.LastRecord = i
' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument
' Exécution du publipostage
.Execute
' Actualisation de l'enregistrement pour la sauvegarde
.DataSource.ActiveRecord = i
'Utilisation de deux champs pour obtenir le nom du document ; remplacer le chiffre 6 par le numéro de colonne qui contient l'adresse mail
'si c'est pour un envoi sur outlook avec la macro en individuel ou par le n° de col qui servira de nom ) votre pdf
DocName = .DataSource.DataFields(2).Value
'Si vous souhaitez utiliser deux champs pour nommer votre document retirez la quote devant la ligne qui suit et remplacer le n° de colonne
DocName = DocName & "-" & .DataSource.DataFields(4).Value
Debug.Print DocName; i
End With
' Chemin de Sauvegarde du document publiposté ; modifier le chemin avec les guillemets sans oublier de mettre un \ à la fin
With ActiveDocument
'N'oubliez pas de rajouter un \ après le nom de votre dossier et avant la fermeture des guillemets
.SaveAs "C:\Users\timothee.vanderhorst\Documents\test\" & DocName & ".pdf", wdExportFormatPDF
.Close False
End With
Next i
End Sub
'Publipostage > Word, enregistrement individuel en DOC
Sub TestPublipostDoc()
' Déclaration des variables
Dim iR As Integer
Dim i As Integer
Dim oDoc As Document
Dim DocName As String
Dim oDS As MailMergeDataSource
' Affectation des objets
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource
iR = oDoc.MailMerge.DataSource.RecordCount
Debug.Print iR
For i = 1 To iR
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
.DataSource.FirstRecord = i
.DataSource.LastRecord = i
' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument
' Exécution du publipostage
.Execute
' Actualisation de l'enregistrement pour la sauvegarde
.DataSource.ActiveRecord = i
'Utilisation de deux champs pour obtenir le nom du document ; remplacer le chiffre 6 par le numéro de colonne qui contient l'adresse mail
'si c'est pour un envoi sur outlook avec la macro en individuel ou par le n° de col qui servira de nom ) votre doc
DocName = .DataSource.DataFields(2).Value
'Si vous souhaitez utiliser deux champs pour nommer votre document retirez la quote devant la ligne qui suit et remplacer le n° de colonne
DocName = DocName & "-" & .DataSource.DataFields(4).Value
Debug.Print DocName; i
End With
' Chemin de Sauvegarde du document publiposté ; modifier le chemin avec les guillemets sans oublier de mettre un \ à la fin
With ActiveDocument
'N'oubliez pas de rajouter un \ après le nom de votre dossier et avant la fermeture des guillemets
.SaveAs "C:\Users\timothee.vanderhorst\Documents\test\" & DocName & ".doc"
.Close
End With
Next i
End Sub |
Comme je l'ai écris plus haut, je souhaite que ces documents uniques soient bien à leur place à savoir ce genre d'architecture :
C:\Users\timothee.vanderhorst\Documents\test\TF - HVAC - 101.01.01 GASCONDENSATIEKETEL\voorblaad technische fiche 101.01.01 GASCONDENSATIEKETEL.doc
C:\Users\timothee.vanderhorst\Documents\test\TF - HVAC - 101.01.01 GASCONDENSATIEKETEL\voorblaad technische fiche 101.01.02 CONDENSERENDE GASWANDKETELS.doc
C:\Users\timothee.vanderhorst\Documents\test\TF - HVAC - 101.01.01 GASCONDENSATIEKETEL\voorblaad technische fiche 101.02.03 EXPANSIESYSTEEM.doc
......
Dans l'attente d'une âme charitable qui puisse m'aider.
Merci à vous !!
Partager