Conversion par lots .doc/.docx en .pdf

M

Membre supprimé 1158913

Invité
Bonjour,
Quelqu'un aurait-il une solution pour convertir des documents Word (2016) en PDF par lots entiers ou par dossiers ? J'aimerais convertir plus de 500 documents sans avoir à les ouvrir un par un. Existe-t-il une solution, gratuite de préférence étant donné que je ne n'en ferai usage a priori qu'une seule fois ?
Je vous remercie.
 
Bonjour,

J'avais du faire un petit script applescript qui faisait ça c'était avec word 2011, mais il devrait fonctionner avec word 2016.

Word étant ouvert, il faut lancer le script qui te demande de choisir le dossier contenant le fichiers word puis de choisir un dossier qui réceptionnera les pdf.... puis attendre le message de fin.
Je remets le script.

Bloc de code:
tell application "Finder"
    set cheminsource to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à exporter en PDF"
    set chemincible to choose folder with prompt "Sélectionnez le dossier cible"
    
    my inspecter(cheminsource, chemincible)
end tell

on inspecter(source, cible)
    tell application "Finder"
        -- traitement des fichiers :
        
        set les_fichiers to files of source
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
            tell application "Finder"
                set lefichier to chaque_fichier
                set nom to name of chaque_fichier -- recupere le nom du fichier
                set extens to document file nom in source --recupere l extension du fichier
                set lextension to name extension of extens
                
                if lextension = "docx" then
                    
                    set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                    set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
                    set elements to text items of nom
                    set nomcourt to (items 1 thru -2 of elements) as string
                    set ancien_nom to nomcourt
                    set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
                    
                    set sortie to cible & ancien_nom & ".pdf" as string --défini le chemin de sortie
                    
                    
                    set extension hidden of lefichier to false -- force affichage de l'extension
                    set lefichier to chaque_fichier as string
                    
                    tell application "Microsoft Word"
                        open file lefichier -- ouvre le fichier dans Word
                        
                        set theActiveDoc to the active document
                        save as theActiveDoc file format format PDF file name sortie
                        
                        close document nom --ferme le fichier
                    end tell
                end if
                
            end tell
        end repeat
        -- traitement des dossiers :
        set les_dossiers to folders of source
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
end inspecter
tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
  • J’aime
Réactions: JLB21 et Vinzzz25
content pour toi !
 
Bonjour à tous,

Et d'avance merci pour les réponses.
J'ai fait des recherches, j'ai trouvé des réponses, mais qui ne fonctionne pas (soit par évolution des Os, soit par erreur de manipulation de ma part). J'ai testé automator, les différents scripts proposés sur le forum, VipRiser...

Bon, en résumé, j'ai 3443 fichier .doc ou .docx (ou sans extension apparente, bien que le Finder sait pertinemment que c'est avec word qu'il faut ouvrir ces documents). Je souhaite tous les convertir en .pdf.

Une idée M'siers Dames ?

Bloc de code:
tell application "Finder"
    set cheminsource to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à exporter en PDF"
    set chemincible to choose folder with prompt "Sélectionnez le dossier cible"
  
    my inspecter(cheminsource, chemincible)
end tell

on inspecter(source, cible)
    tell application "Finder"
        -- traitement des fichiers :
      
        set les_fichiers to files of source
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
            tell application "Finder"
                set lefichier to chaque_fichier
                set nom to name of chaque_fichier -- recupere le nom du fichier
                set extens to document file nom in source --recupere l extension du fichier
                set lextension to name extension of extens
              
                if lextension = "docx" then
                  
                    set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                    set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
                    set elements to text items of nom
                    set nomcourt to (items 1 thru -2 of elements) as string
                    set ancien_nom to nomcourt
                    set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
                  
                    set sortie to cible & ancien_nom & ".pdf" as string --défini le chemin de sortie
                  
                  
                    set extension hidden of lefichier to false -- force affichage de l'extension
                    set lefichier to chaque_fichier as string
                  
                    tell application "Microsoft Word"
                        open file lefichier -- ouvre le fichier dans Word
                      
                        set theActiveDoc to the active document
                        save as theActiveDoc file format format PDF file name sortie
                      
                        close document nom --ferme le fichier
                    end tell
                end if
              
            end tell
        end repeat
        -- traitement des dossiers :
        set les_dossiers to folders of source
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
end inspecter
tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell

J'ai essayé le script ci-dessus. Cela m'indique une erreur:
"Erreur dans Microsoft Word: missing value ne comprends pas le message "save as"


Par ailleurs, je pense avoir un problème d'extension entre les fichiers qui n'en ont pas, ceux en .doc et ceux en .docx. Mais ça ne devrait pas être le plus difficile à résoudre
 
Bonjour,

le script avait été conçu avec word 2011 et un ancien OS.
Il y a très peu de changement a effectuer dans le script, par contre avec les nouvelles restriction de l'os à la première exécution il va te demander d'autoriser l'accès au dossier de réception des PDF.

voilà le script qui fonctionne chez moi avec word 16.36 et OS Mojave 10.14.6

Bloc de code:
tell application "Finder"
    set cheminsource to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à exporter en PDF"
    set chemincible to choose folder with prompt "Sélectionnez le dossier cible"
   
    my inspecter(cheminsource, chemincible)
end tell

on inspecter(source, cible)
    tell application "Finder"
        -- traitement des fichiers :
       
        set les_fichiers to files of source
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
            tell application "Finder"
                set lefichier to chaque_fichier
                set nom to name of chaque_fichier -- recupere le nom du fichier
                set extens to document file nom in source --recupere l extension du fichier
                set lextension to name extension of extens
               
                if lextension = "docx" or lextension = "doc" then
                   
                    set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                    set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
                    set elements to text items of nom
                    set nomcourt to (items 1 thru -2 of elements) as string
                    set ancien_nom to nomcourt
                    set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
                   
                    set sortie to cible & ancien_nom & ".pdf" as string --défini le chemin de sortie
                   
                   
                    set extension hidden of lefichier to false -- force affichage de l'extension
                    set lefichier to chaque_fichier as string
                   
                    tell application "Microsoft Word"
                        activate
                        open file lefichier -- ouvre le fichier dans Word
                       
                        set theActiveDoc to the active document
                        save as theActiveDoc file format format PDF file name sortie
                       
                        close document nom --ferme le fichier
                    end tell
                end if
               
            end tell
        end repeat
        -- traitement des dossiers :
        set les_dossiers to folders of source
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
end inspecter
tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Dernière édition par un modérateur:
Merci pour cette réponse.
Avec ce nouveau script, j'ai de nouveau le message "Erreur dans Microsoft Word : missing value ne comprends pas le message "save as"

Version iOs: 10,14,6
Version Word: 16,35
 
Dernière édition par un modérateur:
Curieux...
Essai d'ouvrir Word avant de cliquer sur exécuter le script.
Donne quand même exactement comment tu procèdes et ce que tu obtiens à chaque étapes ?
Lorsque ça te met le message, qui à t'il dans word ?
 
Chez moi, en tout cas, le script fonctionne très bien, aussi bien dans Mojave 10.14.6 que dans Catalina 10.15.4. Rien de particulier à signaler, une fois le script lancé on a droit aux demandes de localisation des classeurs, ensuite avant l'enregistrement du premier document la classique demande d'autorisation d'accès et ça roule jusqu'au message final.

Tant que j'y étais, je me suis permis de modifier la ligne des extensions pour que ça prenne aussi les .doc :
if lextension = "docx" or lextension = "doc" then
...et ça fonctionne aussi, RAS... ;)
 
Le changement fait par Aliboron ne fait qu’ajouter la prise en charge des fichiers doc, mais ne change en rien le fonctionnement du script qui fonctionnait en sautant tous les fichiers autres que les docx.
Enfin content pour toi si çà fonctionne...
 
Bonjour le script est fantastique. Je rencontre des problèmes seulement si dans le nom du fichier source il y a un accent. Le pdf se fait mais ne peut fermer le fichier sur Word et la séquence s'arrête.

Y a-t-il un moyen de régler ce petit problème ? Probablement la réécriture du nom se fait sans accents.
 
Dernière édition par un modérateur:
Bonjour,

Je viens de tester, je ne rencontre pas de problème même si le nom des fichiers contiennent des accents, il doit y avoir autre chose ! ...
Donne un peu plus de détails sur ce qui se passe. (nom du fichier, message d'erreur s'il y a, le script s'arrête sur quelle action ?) etc...
 
Bonjour,
Teste avec ce script...
Ce sera un peu plus long, il faut que pages fasse la conversion .docx vers .pages

Bloc de code:
tell application "Finder"
    set cheminsource to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à exporter en PDF"
    set chemincible to choose folder with prompt "Sélectionnez le dossier cible"
    
    my inspecter(cheminsource, chemincible)
end tell

on inspecter(source, cible)
    tell application "Finder"
        -- traitement des fichiers :
        
        set les_fichiers to files of source
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
            tell application "Finder"
                set lefichier to chaque_fichier
                set nom to name of chaque_fichier -- recupere le nom du fichier
                set extens to document file nom in source --recupere l extension du fichier
                set lextension to name extension of extens
                
                if lextension = "docx" or lextension = "doc" then
                    
                    set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                    set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
                    set elements to text items of nom
                    set nomcourt to (items 1 thru -2 of elements) as string
                    set ancien_nom to nomcourt
                    set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
                    
                    set sortie to cible & ancien_nom & ".pdf" as string --défini le chemin de sortie
                    
                    
                    set extension hidden of lefichier to false -- force affichage de l'extension
                    set lefichier to chaque_fichier as string
                    
                    tell application "Pages"
                        open file lefichier -- ouvre le fichier dans pages
                        
                        
                        --export document nom to file sortie as PDF --exporte en PDF
                        export front document to file sortie as PDF
                        
                        close front document --ferme le fichier
                    end tell
                end if
                
            end tell
        end repeat
        -- traitement des dossiers :
        set les_dossiers to folders of source
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
end inspecter
tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
  • J’aime
Réactions: LS Zaitsev
Bonjour à tous, j'aimerais bien utiliser le script proposé pour convertir mes docx par lot mais je ne sais même pas comment on utilise un script. Quelqu'un peu mettre un tuto pour GRAND débutant ? Un super merci d'avance
 
  1. lancer Éditeur de script (dans le dossier /Applications/Utilitaires)
  2. demander la création d'un nouveau script au lancement
  3. copier le script de Zeltron54 en entier depuis le message n°2 ci-dessus
  4. coller le script dans la fenêtre de l'Éditeur Applescript
  5. cliquer sur la flèche pour lancer l'exécution du script
  6. laisser les choses se faire, en répondant éventuellement aux différentes demandes
S'il y a des points qui te paraissent obscurs, n'hésite pas à poser des questions...

PS : tu n'as pas précisé, mais s'il devait s'agir de Pages plutôt que Word, alors c'est dans le message n°12 que tu trouveras le script (toujours de Zeltron54 :merci:)
 
Bonjour,
Tu lances l’application « éditeur de script » qui est dans applications—> utilitaires, tu choisis le bouton nouveau document, dans la fenêtre qui s’ouvre tu fais un copié-collé du script et tu cliques sur Exécuter.
le script se lance et te demande de choisir le dossier contenant les fichiers Word, puis de choisir le dossier cible qui recevra les fichiers en pdf.
Tu attends la fin du traitement, un message te prévient.

Edit : grillé par @Aliboron :coucou:
 
Bonjour cela ne fonctionne pas pour ma part avec word 2019 j'ai 60 fichiers à convertir et après 3 conversions il me dit : "Ca y est c'est fait "...
 
Dernière édition: