Combiner le contenu de plusieurs fichiers words en un seul

Combiner le contenu de plusieurs fichiers words en un seul - Logiciels - Windows & Software

Marsh Posté le 26-01-2004 à 10:20:12    

Ah que clarté et concision dans le titre, espère-je !  
Voilà, j'ai environ 600, 700 fichiers word, de taille variable, mais légère, et j'aimerais tout mettre en un, sans y passer des lustres à faire du copier-coller.
 
Si en plus, il y avait moyen, toujours en automatisant, de les séparer, avec en intitulé le nom des fichiers par exemple, ou autres joyeusetés ?
Et en espérant que ça me laisse la présentation ( forme selon laquelle c'est écrit )
 
Ca me paraît faisable, et ça me dépannerait diantrement !
 
Voilà, d'avance merci  
 :)

Reply

Marsh Posté le 26-01-2004 à 10:20:12   

Reply

Marsh Posté le 26-01-2004 à 10:48:26    

Macro qui copie-colle tous les documents en 1 ?


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
Reply

Marsh Posté le 26-01-2004 à 11:10:04    

en un poil plus sophistiqué, si possible ;)

Reply

Marsh Posté le 26-01-2004 à 11:14:04    

Bon pour l'instant amber text merger, qui coûte 20 dollars, et qui en démo va me rajouter sa touche personnelle à la fin de chaque document ( pas à la fin des 600 j'espère ! )
Et on dirait qu'il n'a aucune des fonctionnalités énoncées au début du post !
 
Même sans programmer, ça ne me paraît pourtant pas sorcier de faire une truc fonctionnel, et intelligent !  
(je demande même pas que ça soit beau, et je n'y connais rien mais on dirait du visual, ou un truc du genre... )
 
avec le screenshot et tout  
 
tiens je n'avais même pas remarqué l'url ! :D  
 
Come together !   :D


Message édité par ancestroll le 26-01-2004 à 11:15:46
Reply

Marsh Posté le 26-01-2004 à 11:51:24    

je pars manger, mais j'essaie de te trouver qqch dans l'après midi


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
Reply

Marsh Posté le 26-01-2004 à 11:56:56    

C'est sympa, parce que là  il n'y a pas le "converter" pour lire les .docs, juste celui pour les écrire, il faut être enregistré!!!
grrrr
Et c'est  pour déposer des textes persos :)

Reply

Marsh Posté le 26-01-2004 à 15:12:43    

Valà une macro word qui fait ça.
 
Si tu veux automatiser le traitement, il suffit de faire un doc word avec un appel à cette macro en autoexec, en modifiant les paramètres (en dur au lieu de demander à l'utilisateur)
 

Code :
  1. Sub conc()
  2. ' Parcours un dossier, ouvre les documents et concatènes tous dans un document unique
  3. ' bill.fr - pour réponse dans forum Hardware.fr
  4. Dim savedir As String
  5. Dim savefile As String
  6. Dim loaddir As String
  7. ' On récupère les valeurs paramétrables
  8. savedir = InputBox("Entrez le chemin où sauver le document complet", , "C:\" )
  9. If (savedir = "" ) Then Return
  10. savefile = InputBox("Entrez le nom document complet", , "concat.doc" )
  11. If (savefile = "" ) Then Return
  12. loaddir = InputBox("Entrez le chemin où charger les documents", , "C:\" )
  13. If (loaddir = "" ) Then Return
  14. ' On enregistre le document final
  15. ChangeFileOpenDirectory savedir
  16. Documents.Add DocumentType:=wdNewBlankDocument
  17. ActiveDocument.SaveAs FileName:=savefile, FileFormat:=wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False
  18. ' On charge les documents
  19. ChangeFileOpenDirectory loaddir
  20. Application.FileSearch.FileName = "*.doc"
  21. Application.FileSearch.LookIn = loaddir
  22. Application.FileSearch.Execute
  23. For i = 1 To Application.FileSearch.FoundFiles.Count
  24.     ' On copie le document
  25.     Documents.Open FileName:=Application.FileSearch.FoundFiles(i), ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", Format:=wdOpenFormatAuto
  26.     Selection.WholeStory
  27.     Selection.Copy
  28.     ' On colle le nom du document puis les données du document
  29.     Windows(savefile).Activate
  30.     Selection.Font.Bold = wdToggle
  31.     Selection.Font.Italic = wdToggle
  32.     Selection.Font.Size = 22
  33.     Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
  34.     Selection.TypeText Text:=Application.FileSearch.FoundFiles(i)
  35.     Selection.InsertBreak Type:=wdPageBreak
  36.    
  37.     Selection.Paste
  38.     Selection.InsertBreak Type:=wdPageBreak
  39.     ActiveDocument.Save
  40.     ' fermeture du document
  41.     Windows(Application.FileSearch.FoundFiles(i)).Activate
  42.     ActiveWindow.Close
  43.  
  44. Next i
  45. End Sub


 
Bon courage, n'hésite pas si tu as besoin :)


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
Reply

Marsh Posté le 26-01-2004 à 16:55:56    

Fantastique !  
Mais alors, je viens d'essayer et...
(désolé si je dis des bêtises je ne m'y connais que très peu)
1° au bout de deux fichiers il me met "le membre de la collection requis n'existe pas"
si je fais debug :  
cette ligne ci  
Windows(Application.FileSearch.FoundFiles(i)).Activate  
est en jaune
( je précise que j'ai entré le chemin ms dos pour le dossier, mais comme il a trouvé ça n'a peut-être pas d'incidence ? je vais les mettre à la racine pour vérifier )
 
2° On dirait qu'il ouvre les fichiers, mais je vais vérifier -c'est sur un autre ordi- ( je suis en train de me demander si je ne dis pas une sottise, si ça se trouve j'ai deux fichiers ouverts, celui en cours et le futur final  
Sinon, ca risque d'être dur pour l'ordi 600 ouverts d'un coup, même si je peux les faire par paquets.
 
3° C'est nouveau pour moi les macros, alors je l'ai copiée collée dans visual basic (de words) enregistrée puis éxécutée dans un nouveau document.
J'espère que c'est la bonne procédure, et que je suis compréhensible !
Je retourne tester !

Reply

Marsh Posté le 26-01-2004 à 17:10:48    

avec le dossier à la racine, et même en otant les sous-dossiers de celui-ci, même réaction

Reply

Marsh Posté le 26-01-2004 à 17:19:11    

Ok, moi sous word 2000 ça passe pourtant.
 
pour le 3) c'est bien ça
 
pour les 1) & 2), le souci vient du fait qu'il ne ferme pas le document, essaie de remplacer le slignes de fermeture par :
 

Code :
  1. ' fermeture du document
  2.    Windows(Right(Application.FileSearch.FoundFiles(i), Len(Application.FileSearch.FoundFiles(i)) - Len(loaddir) - 1)).Activate
  3.    ActiveWindow.Close


 
Je ne comprend pas pourquoi chez toi ça ne fonctionne pas bien. Le but de ce bout de code c'est de se repositionner sur le document et de le fermer.


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
Reply

Marsh Posté le 26-01-2004 à 17:19:11   

Reply

Marsh Posté le 26-01-2004 à 19:23:56    

j'ai bien word 2000
là j'ai changé, j'ai toujours l'erreur "le membre de la collection requis n'existe pas"  
sauf que en debug le jaune est positionné sur  "Windows(Right(Application.FileSearch.FoundFiles(i), Len(Application.FileSearch.FoundFiles(i)) - Len(loaddir) - 1)).Activate "
 
Pour créer la macro, je fais outils / macro/ macros, je copie colle toute ta macro, après je ferme et je fais exécuter macro.
Je me trompe peut-être là-dedans ?

Reply

Marsh Posté le 26-01-2004 à 19:47:59    

Non c'est ça, la méthode est bonne...
 
où se passe l'erreur si tu remplace cette ligne par :
 

Code :
  1. fichier = Application.FileSearch.FoundFiles(i)
  2. longueur = Len(fichier) - Len(loaddir) - 1
  3. doc = Right(fichier, longueur)
  4. Windows(doc).Activate


 
Parce que moi ça passe... étrange


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
Reply

Marsh Posté le 26-01-2004 à 20:11:03    

alors pour l'instant j'ai ça :
 
"
 
   
  Sub conc()  
  ' Parcours un dossier, ouvre les documents et concatènes tous dans un document unique  
  ' bill.fr - pour réponse dans forum Hardware.fr  
  Dim savedir As String  
  Dim savefile As String  
  Dim loaddir As String  
   
  ' On récupère les valeurs paramétrables  
  savedir = InputBox("Entrez le chemin où sauver le document complet", , "C:\" )  
  If (savedir = "" ) Then Return  
  savefile = InputBox("Entrez le nom document complet", , "concat.doc" )  
  If (savefile = "" ) Then Return  
  loaddir = InputBox("Entrez le chemin où charger les documents", , "C:\" )  
  If (loaddir = "" ) Then Return  
   
  ' On enregistre le document final  
  ChangeFileOpenDirectory savedir  
  Documents.Add DocumentType:=wdNewBlankDocument  
  ActiveDocument.SaveAs FileName:=savefile, FileFormat:=wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False  
   
  ' On charge les documents  
  ChangeFileOpenDirectory loaddir  
  Application.FileSearch.FileName = "*.doc"  
  Application.FileSearch.LookIn = loaddir  
  Application.FileSearch.Execute  
  For i = 1 To Application.FileSearch.FoundFiles.Count  
      ' On copie le document  
      Documents.Open FileName:=Application.FileSearch.FoundFiles(i), ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", Format:=wdOpenFormatAuto  
      Selection.WholeStory  
      Selection.Copy  
   
      ' On colle le nom du document puis les données du document  
      Windows(savefile).Activate  
      Selection.Font.Bold = wdToggle  
      Selection.Font.Italic = wdToggle  
      Selection.Font.Size = 22  
      Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter  
      Selection.TypeText Text:=Application.FileSearch.FoundFiles(i)  
      Selection.InsertBreak Type:=wdPageBreak  
       
      Selection.Paste  
      Selection.InsertBreak Type:=wdPageBreak  
      ActiveDocument.Save  
   
' fermeture du document  
    fichier = Application.FileSearch.FoundFiles(i)  
  longueur = Len(fichier) - Len(loaddir) - 1  
  doc = Right(fichier, longueur)  
  Windows(doc).Activate  
      ActiveWindow.Close
       
  Next i  
   
  End Sub  
 
"
que l'on soit sûrs :)
 
meme combat, debug à "Windows(doc).Activate "
 
par contre j'ai pris quelques fichiers, les ai mis dans un autre répertoire, et là il m'en a fait 18 ou 19 sur 24 :)
même message, mais vers la fin avant d'afficher l'erreur j'ai eu l'impression fugitive qu'il ouvrait un peu en boucle le dernier ( enfin le 18 ou 19 eme )
ah les mystères de l'info...

Reply

Marsh Posté le 26-01-2004 à 21:35:29    

Ok. Bon voilà ça devrait contourner le problème (testé avec office xp par contre)
 
attention, il faut que tous les documents soient fermés avant de lancer la macro sinon je garantis pas.
 

Code :
  1. Sub conc()
  2.   ' Parcours un dossier, ouvre les documents et concatènes tous dans un document unique
  3.   ' bill.fr - pour réponse dans forum Hardware.fr
  4.   Dim savedir As String
  5.   Dim savefile As String
  6.   Dim loaddir As String
  7.    
  8.   ' On récupère les valeurs paramétrables
  9.   savedir = InputBox("Entrez le chemin où sauver le document complet", , "C:\" )
  10.   If (savedir = "" ) Then Return
  11.   savefile = InputBox("Entrez le nom document complet", , "concat.doc" )
  12.   If (savefile = "" ) Then Return
  13.   loaddir = InputBox("Entrez le chemin où charger les documents", , "C:\" )
  14.   If (loaddir = "" ) Then Return
  15.    
  16.   ' On enregistre le document final
  17.   ChangeFileOpenDirectory savedir
  18.   Documents.Add DocumentType:=wdNewBlankDocument
  19.   ActiveDocument.SaveAs FileName:=savefile, FileFormat:=wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False
  20.    
  21.   ' On charge les documents
  22.   ChangeFileOpenDirectory loaddir
  23.   Application.FileSearch.FileName = "*.doc"
  24.   Application.FileSearch.LookIn = loaddir
  25.   Application.FileSearch.Execute
  26.   For i = 1 To Application.FileSearch.FoundFiles.Count
  27.       ' On copie le document
  28.       Documents.Open FileName:=Application.FileSearch.FoundFiles(i), ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", Format:=wdOpenFormatAuto
  29.       Selection.WholeStory
  30.       Selection.Copy
  31.    
  32.       ' On colle le nom du document puis les données du document
  33.       Documents(1).Activate
  34.       Selection.Font.Bold = wdToggle
  35.       Selection.Font.Italic = wdToggle
  36.       Selection.Font.Size = 22
  37.       Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
  38.       Selection.TypeText Text:=Application.FileSearch.FoundFiles(i)
  39.       Selection.InsertBreak Type:=wdPageBreak
  40.        
  41.       Selection.Paste
  42.       Selection.InsertBreak Type:=wdPageBreak
  43.       ActiveDocument.Save
  44.    
  45. ' fermeture du document
  46.   Documents(2).Close
  47.      
  48.   Next i
  49.    
  50.   End Sub


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
Reply

Marsh Posté le 26-01-2004 à 23:15:53    

Pfiouu tu assures !
Alors : ça à l'air de fonctionner nickel, à part ... à un moment, erreur d'exécution 5155 ( je crois ) " ce fichier est en lecture seule) il y en a, effectivement. Mais je crois que j'avais vu il y a lgtps un truc pour virer en masse l'attribut de lecture seule.
Sinon il faut que je me fasse un paquet sans ce genre de fichier, pour te dire, car quand cela s'arrête ainsi il ne sauvegarde pas le fichier final semble - t - il
 

Reply

Marsh Posté le 27-01-2004 à 00:07:16    

en ligne de commande (cmd sous windows) :
 
attrib *.doc -r


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
Reply

Marsh Posté le 27-01-2004 à 00:50:24    

Ou encore les sélectionner dans l'explorateur, puis clic droit, Propriétés, et décocher Lecture seule.


Message édité par charly007 le 27-01-2004 à 00:50:50
Reply

Marsh Posté le 27-01-2004 à 01:47:29    

effectivement pour lecture seule ce n'était pas sorcier !
Alors résultat des courses ! *ouf*
Le dernier ( que j'appellerai version 4 ) fonctionne, mais ne sauvegarde rien au final. Peut-être mon win 98 ?
MAIS le troisième fonctionne dorénavent ( à vue de nez le pb était bêtement donc la lecture seule ?! )
J'ai testé avec 98 fichiers d'affilée, aucun problème.
Seul bémol, un nombre incalculable de pages, et peut-être une erreur de balise ( on va se moquer de moi si j'emploie des termes que je ne connais pas bien ! )
Donc en clair ça donne ça: (le fichier se nomme 4, quelle orignalité ! )
  (saut de page)
D:\tri2\4.doc
 (saut de page)
 D:\Tri documents\4.doc gras et italique
 (saut de page)
D:\Tri documents\4.doc
  (saut de page)
D:\Tri documents\4.doc gras et italique
 (saut de page)
Le texte en lui même
(saut de page)
(saut de page)
(saut de page)
(saut de page)
 
Ce qui donne par exemple, 493 pages pour mon test et m'a fait croire que j'avais beaucoup écrit ! lol
Cela dit ce n'est pas dramatique, mais je te mentionne tout en bon testeur!  
En tout cas merci encore, ce forum est un soulagement pour les neurones - et, en l'occurence, les copier-coller ! ;)

Reply

Marsh Posté le 27-01-2004 à 11:07:22    

:)
 
Ca m'a fait plaisir.


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed