agrégation de documents par macro

C@thy

XLDnaute Barbatruc
Bonjour le forum,

j'ai essayé de faire une recherche dans ce forum avec vba et agrégation, mais je dois mal poser la question.

Voilà :
je reçois (enfin pas moi, mon utilisateur) par mail des documents word.
Chaque jour il me faut agréger tous les documents en un seul avec un index biensûr... (chaque document a un thème).

C'est possible ça???

question organisation : est-ce qu'on peut repérer dans un répertoire tous les documents qui ont la même date et les agréger en un seul?
Sinon, je demanderai à l'utilisateur de lancer la macro d'agrégation tous les jours puis d'archiver.

Donc j'envisage une boucle sur tous les doc du répertoire, qui copie les fichiers .doc dans un doc de synthèse les uns à la suite des autres en fonction de la date.
Le 1er paragraphe devra être mis en titre1 pour créer l'index (ou sommaire) aïe je sens que ça se complique, car j'imagine qu'il y aura d'autres titre1 dans le doc.

question subsidiaire : est-ce qu'on peut faire ça sous Acrobat??? (agréger les doc. dans un pdf? mais là, je dois compliquer la chose... je ne sais même pas si il y a un VBA sous Acrobat, donc disons que c'est plus simple sous Word).

Edit :
Selection.WholeStory
Selection.Copy
Documents("Synthese.doc").Activate
Selection.EndKey Unit:=wdStory
'je les colle à la fin du doc
Selection.PasteAndFormat (wdPasteDefault)

Si vous pouvez éclairer ma lanterne, cela ferait avancer le schmilblick.

Un grand merci à vous.

Bises et bon ouik:cool:

C@thy
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : agrégation de documents par macro

Salut Cathy :) ,
question organisation : est-ce qu'on peut repérer dans un répertoire tous les documents qui ont la même date et les agréger en un seul?
On peux lire la date, oui, mais laquelle ? Création du Word, date de dernière modification, etc. ?
Sinon, je demanderai à l'utilisateur de lancer la macro d'agrégation tous les jours puis d'archiver.
Plus simple, faire un dossier par jour :p;
Donc j'envisage une boucle sur tous les doc du répertoire, qui copie les fichiers .doc dans un doc de synthèse les uns à la suite des autres en fonction de la date.
Jusque là, pas trop de soucis ;)
Le 1er paragraphe devra être mis en titre1 pour créer l'index (ou sommaire) aïe je sens que ça se complique, car j'imagine qu'il y aura d'autres titre1 dans le doc.
Si tu listes le répertoire, je mettrais plutôt un saut de page, puis le nom du fichier avec un style "Cathy" avant de coller le texte pour faire le répertoire :D.
question subsidiaire : est-ce qu'on peut faire ça sous Acrobat??? (agréger les doc. dans un pdf? mais là, je dois compliquer la chose... je ne sais même pas si il y a un VBA sous Acrobat, donc disons que c'est plus simple sous Word).
Oui, VBA fonctionne avec Acrobat, une excellente documentation sur ton disque dur : C:\Program Files\Adobe\Adobe Utilities\ExtendScript Toolkit CS4\SDK\French\Adobe Intro to Scripting.pdf, mais effectivement, ce n'est pas forcément simple :eek:...
Bon courage :cool:
 

JNP

XLDnaute Barbatruc
Re : agrégation de documents par macro

Re :),
Voici de quoi bien débuter :
Code:
Public Chemin As String, Dossier As Object, Fichier As Object
Public ATraiter() As String, I As Integer
Sub main()
AcquisitionDossier
Liste
Traitement
End Sub
Sub AcquisitionDossier()
' Tiré de l'aide FileDialog
Dim fd As FileDialog, vrtSelectedItem As Variant
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
    If .Show = -1 Then
        Chemin = .SelectedItems(1)
    End If
End With
Set fd = Nothing
End Sub
Sub Liste()
'ReDim ATraiter(0)
I = 0
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
For Each Fichier In Dossier.Files
    If Right(Fichier.Name, 4) = ".doc" Then ' liste les fichier DOC seulement
        ReDim Preserve ATraiter(I) ' fichiers valides
        ATraiter(I) = Fichier.Name
        I = I + 1
    End If
Next
End Sub
Sub Traitement()
For I = LBound(ATraiter) To UBound(ATraiter)
    MsgBox ATraiter(I)
Next I
End Sub
Tu lances la procédure Main. Il te demandera de sélectionner le dossier (du jour :p), puis il listera les fichiers Word 2003, et il t'en donnera la liste 1 par 1. Il te suffit de remplacer le MsgBox par la récupération des textes :D.
Bonne soirée :cool:
 

C@thy

XLDnaute Barbatruc
Re : agrégation de documents par macro

Merci pour vos idées vous m'ouvrez des horizons.
Les fichiers seront vraisemblablement recus par email, il s'agit alors de la date de reception du mail. Un répertoire par jour, oui, mais comment je crée ca?
Oui c sans doute possible en vba sous outlook.
En tout cas un grand merci pour ves idées.
Bises et bon we
C@thy
 

Zon

XLDnaute Impliqué
Re : agrégation de documents par macro

Salut,

Cathy, pour te mettre sur la piste, je m'en sers de temps en temps pour sauvegarder mes pièces jointes.

Code:
Const CheminDossier$="C:\Images" ' à adpater
Sub ExportPj()
 Dim PJ As Attachments
 Dim I&, J&
  
  With Application.Session.GetDefaultFolder(olFolderInbox).Items ' à adapter
    For I = 1 To .Count
      If .Item(I).Attachments.Count > 0 Then
        For J = 1 To .Item(I).Attachments.Count 'Parcours des pièces jointes
          Set PJ = .Item(I).Attachments
          PJ.Item(J).SaveAsFile (CheminDossier & PJ.Item(J).FileName) 'Sauvegarde de la ou les pièces jointes
        Next J
      End If
    Next I
  End With
End Sub


enregistre toutes les pieces jointes de tous les messages dans la boite de reception..

Pour enregistrer par jour, tu pourrais creer une règle ...donc ...

A+++
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : agrégation de documents par macro

Merci Jnp, zon j'ai une réunion lundi matin sur le sujet, j'en saurai plus sur la structure des documents. Je vous lis depuis mon tel oui je sais c'est archaique pas de Pc a la maison la raison: eviter de bosser le week-end ( ben c'est raté!)
c'est pourquoi vu la taille de l'écran je n'ai pas trop fait attention que les deux premiers messages venaient du même auteur. Rassure-toi, jnps je ne me suis pas mise a te vouvoyer!!! Mais comme lundi il va falloir faire vite je profite du we pour avancer sur le sujet. Donc un grand merci a vous deux.
Effectivement je vais insérer un saut de page entre chaque doc. Pour le sommaire je vais voir s'il faut conserver les styles existants mais cela peut poser un probleme s'il existe des Titre1 différents. Je sens la galère...
Big bisous C@thy
 

C@thy

XLDnaute Barbatruc
Re : agrégation de documents par macro

Bonjour le fil, le forum,

j'espère que le week-end fut bon (trop court!). Paris, comme bien d'autres endroits, s'est réveillé sous la neige...

Pour répondre à ta question, jnp, je veux bien connaître l'instruction qui donne la date de la dernière modification car je vais devoir trier mes documents en fonction de cette date (heure comprise).

D'autre part, en vba word, quelle est l'instruction qui permet de créer un sommaire (avec des liens cliquables de préférence...).
Je ne suis pas fan de word, est-ce que pour créer un sommaire il faut obligatoirement avoir des styles Titre1, Titre2 etc... (ce que je n'ai pas...).

Avec ça je devrais commencer à me débrouiller.

Un grand Merci et bonne journée ;).

C@thy
 

JNP

XLDnaute Barbatruc
Re : agrégation de documents par macro

Re :),
Pour la date de dernière modification, mon code modifié
Code:
Public Chemin As String, Dossier As Object, Fichier As Object
Public ATraiter() As String, [COLOR=red][B]DateModif() As Date,[/B][/COLOR] I As Integer
Sub main()
AcquisitionDossier
Liste
Traitement
End Sub
Sub AcquisitionDossier()
' Tiré de l'aide FileDialog
Dim fd As FileDialog, vrtSelectedItem As Variant
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
    If .Show = -1 Then
        Chemin = .SelectedItems(1)
    End If
End With
Set fd = Nothing
End Sub
Sub Liste()
I = 0
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
For Each Fichier In Dossier.Files
    If Right(Fichier.Name, 4) = ".doc" Then ' liste les fichier DOC seulement
        ReDim Preserve ATraiter(I) ' pour les noms des fichiers valides
       [COLOR=red][B] ReDim Preserve DateModif(I) ' pour les dates
[/B][/COLOR]        ATraiter(I) = Fichier.Name
        [COLOR=red][B]DateModif(I) = Fichier.DateLastModified
[/B][/COLOR]        I = I + 1
    End If
Next
End Sub
Sub Traitement()
For I = LBound(ATraiter) To UBound(ATraiter)
    MsgBox ATraiter(I) [COLOR=red][B]& " : " & DateModif(I)
[/B][/COLOR]Next I
End Sub
Bonne journée :cool:
 

C@thy

XLDnaute Barbatruc
Re : agrégation de documents par macro

Super! Merci ;).

J'ai un peu avancé sur le sujet : on peut créer un sommaire sans avoir de style Titre1 Titre2 etc... et on peut avoir des liens cliquables automatiquement si on coche utiliser des liens hypertexte etc...

Je continue ma prospection.

Bises :cool:

C@thy
 

C@thy

XLDnaute Barbatruc
Re : agrégation de documents par macro

Merci jnp
effectivement tu as bien avancé.

je te joins mon boulot et le modèle de doc à produire.

J'explique un peu plus.

Dans un répertoire donné on stocke 52 (ou 53) dossiers correspondant à des numéros de semaine de l'année en cours.
Chaque dossier comporte 5 sous-dossiers : lundi, mardi etc... comportant des news répertoriées par thème.
la macro va ouvrir un dossier semaine et un sous-dossier jour en fonction d'une demande par USF

Ensuite on copie tous les fichiers du sous-dossier jour dans un même doc. de synthèse et on fait le sommaire... par ordre alpha

je joins le modèle de doc.

Et chaque semaine on prend tous les sous-dossiers et on les copie dans un même document de synthèse et on fait le sommaire tout pareil

J'ai un peu honte de joindre mon brouillon car ce n'est pas terminé, donc pas très propre.

En tout cas un grand merci de me venir en aide ;)

Je vais essayer de mettre le titre avec la bonne semaine et la date : semaine du ... au ...
là où j'ai du mal c'est pour la mise en forme, je ne sais pas trop comment tracer une ligne horizontale, j'ai regardé le modèle, ce n'est pas une bordure...

Maintenant je sais pourquoi tu as une cigogne avec des jumeaux : tu manies aussi bien Excel que Word, ce sont tes bébés!:)

Bises

Edit : la news jointe se trouve dans le répertoire 14 sous-répertoire vendredi

C@thy
 

Pièces jointes

  • boulot.ZIP
    118.1 KB · Affichages: 98
  • boulot.ZIP
    118.1 KB · Affichages: 101
  • boulot.ZIP
    118.1 KB · Affichages: 100
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : agrégation de documents par macro

Mon souci (entre autres! Lol!): on peut avoir dans un même sous-répertoire plusieurs fichiers concernant le même thème ( les Affaire étrangères par exemple) :mad:
Le thème porte toujours le style sous thème et se trouve en tête de chaque document...

Pour la ligne j'ai trouvé, c'est une série d'underscores.

Y a-t-il une possibilité par macro de faire un REPT pour que ce _ soit répété sur toute la ligne, quelles que soient les marges??

Bises du soir;)

C@thy
 

C@thy

XLDnaute Barbatruc
Re : agrégation de documents par macro

Merci l'espion:D j'ai trouvé un truc : si on tape 3 fois le tiret du 6 puis retour

Edit : manque de bol, ça marche pas par macro (enfin, je veux dire j'y arrive pô)

Biz

C@thy
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 362
Membres
103 530
dernier inscrit
Chess01