Convertir 25000 fichier de doc à docx [Résolu]

Signaler
Messages postés
4
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
27 avril 2020
-
Messages postés
4
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
27 avril 2020
-
Bonjour,
J’ai environ 25.000 fichiers doc, docx, pdf, tif, jpg, etc, mélangés dans une bibliothèque comprenant 75 sous bibliothèques, elles-mêmes comprenant jusqu’à 5 niveaux de sous-sous (…) bibliothèques.
Je voudrais uniformiser mes fichiers en convertissant en fichiers « docx » (word 2013) tous les fichiers « doc » (environ 20.000) qui se trouvent partout. Car certains logiciels travaillent bien sur les fichiers « docx » et moins bien sur les fichiers « doc ».
Je ne peux évidemment pas prendre chaque fichier pour le convertir à la main, un à un.
Je crois avoir trouvé un truc en utilisant BatchMacro.
Pour cela, il faut que je crée d’abord ma macro de conversion.
J’ouvre un fichier « JeanMartin.doc » et je crée une macro de conversion en faisant F12.
Mais dans la macro de conversion, j’ai le nom du fichier à partir duquel j’ai créé la macro :
ActiveDocument.SaveAs2 FileName:="JeanMartin.docx". Donc tous les fichiers convertis par ma macro vont s’appeler "JeanMartin.docx". C’est pas génial !
Existe-t-il un code VBA qui signifie de manière générique :
ActiveDocument.SaveAs2 FileName:=[le même nom de fichier].docx ?
Question basique de la part d’un nul.
Merci beaucoup.
Auguste

1 réponse

Messages postés
6930
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 septembre 2020
550
Bonjour,

faire une boucle sur tous les fichiers doc d'un répertoire

Sub BoucleFichiers()
  Dim Chemin As String, Fichier As String
  Chemin = "C:\Users\Auguste\Dossier_Word\" 'adapter le chemin du répertoire
  Fichier = Dir(Chemin & "*.doc")
      Do While Len(Fichier) > 0
    MsgBox Chemin & Fichier 'affiche le chemin complet du classeur sers toi de ces variables
  'ta macro de conversion
    Fichier = Dir()
  Loop
End Sub

Messages postés
4
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
27 avril 2020

Merci beaucoup cs_Le Pivert d'avoir pris le temps de me répondre. Mais le problème, c'est que je suis complètement nul.
Je ne sais pas unir ta macro avec la macro qui consiste à faire F12:
Sub F12()
'
' F12 Macro
'Pour fichier = EL320.doc
'
ChangeFileOpenDirectory "C:\DossierCible\"
ActiveDocument.SaveAs2 FileName:="EL320.docx", FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False, CompatibilityMode:=15
End Sub

Merci beaucoup de bien vouloir m'aider.
Auguste
Messages postés
6930
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 septembre 2020
550 >
Messages postés
4
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
27 avril 2020

Ce que tu veux faire n'est pas réalisable sur 20000 fichiers. Cela demande l'ouverture de chaque document pour pouvoir le convertir en docx!

ActiveDocument.SaveAs2 FileName


cette ligne de code signifie que tu travailles sur le document actif donc ouvert.

je peux pourtant te répondre sur cela:

[le même nom de fichier].docx ?

Sub BoucleFichiers()
  Dim Chemin As String, Fichier As String
dim nouveau As String
  Chemin = "C:\Users\Auguste\Dossier_Word\" 'adapter le chemin du répertoire
  Fichier = Dir(Chemin & "*.doc")
      Do While Len(Fichier) > 0
    MsgBox Chemin & Fichier 'affiche le chemin complet du classeur sers toi de ces variables
 nouveau = Split(Fichier, ".") (0)
nouveau = nouveau & ".docx"

'ta macro de conversion
    Fichier = Dir()
  Loop
End Sub


Voilà
Messages postés
4
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
27 avril 2020
>
Messages postés
6930
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 septembre 2020

Merci beaucoup. Mais je suis trop nul pour savoir comment intégrer "ma macro de conversion" qui n'est autre que le F12 de word. Ce sont 20000 fichiers d'archive dont je me sers en permanence. Un ami, aujourd'hui disparu, me les avait déjà convertis de word2 à word 2003 en une nuit. Du coup je pensais qu'il fallait faire une bidouille qui prenne automatiquement chaque fichier pour le convertir en word 2013. Par ailleurs, tous mes noms de fichiers sont sous forme de date avec un ajout après un point: EL221215.01D.doc. Il y a donc 2 points dans le nom.
Cordialement
Auguste
Messages postés
6930
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 septembre 2020
550 >
Messages postés
4
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
27 avril 2020

Quand je lis cela, je peux te donner le programme que j'ai fait suivant ce site:

https://www.developpez.net/forums/i1104689/logiciels/microsoft-office/excel/macros-vba-excel/conversion-docx-doc/

Un ami, aujourd'hui disparu, me les avait déjà convertis de word2 à word 2003 en une nuit.

Tu dezippes, tu ouvres le dossier Conversion_doc dans lequel se trouve un classeur nommé Conversion_word , un dossier Destination_docx et 4 documents Word pour faire les essais. tu verras le temps mis pour 4 documents!

ensuite il ne te restera qu' a faire tes documents par petit groupe

voilà le zip à télécharger:

https://www.cjoint.com/c/JDzpyjuIGqQ

Bon courage

J'ai oublié de te dire d'allez dans Outils, Références et de cocher Microsoft Word




@+ Le Pivert
Messages postés
4
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
27 avril 2020
>
Messages postés
6930
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 septembre 2020

Bonjour cs_Le Pivert, J'ai un peu tardé à répondre car je voulais d'abord voir si j'arrivais à faire ce que tu m'as proposé. Cela marche magnifiquement et je ne sais comment te remercier d'avoir pris du temps et de m'avoir partagé ta création. Je n'aurais pas pu y arriver sans cela.
Avec reconnaissance.
Auguste