assembler des fichiers pdf à partir d'une base excel

Je n'ai ni ce fichier excel, ni les dossiers pour le recherche donc j'ai fait:

le script recherche en partant de la ligne 2, le fichier dont le nom est égal au contenu de la colonne A auquel ont ajoute ".pdf" et ceux dans les 2 dossiers de recherche choisis et leurs sous-dossier.

Pour la copie, il copie le fichier trouvé (s'il n'en trouve qu'un, sinon erreur) dans le dossier résultat en créant (s'il n'existe pas) un dossier du nom du contenu de la colonne B.
Puis il renomme le fichier en utilisant le contenu de:
colonne A plus _ plus colonne B plus _ plus colonne D plus _ plus colonne E plus _ plus colonne I plus _ plus colonne M et il ajoute "ex" et ".pdf"

C'est ce que j'avais compris dans ton message #2
 
Bonjour,

J’ai une autre demande. Est-il possible à partir des PDF de générer une vignette et de les incorporer dans un fichier Excel existant dans chaque ligne automatiquement ?
 
oui en supprimant les sous-dossier ok merci beaucoup super fort

Si tu veux garder tes sous dossier mais ne faire la recherche qu'au premier niveau, fait moi signe je te ferais la modif su script!

J’ai une autre demande. Est-il possible à partir des PDF de générer une vignette et de les incorporer dans un fichier Excel existant dans chaque ligne automatiquement ?

Là je ne connaît pas pour générer une vignette! désolé ... mais au fait une vignette de quoi ? de quel contenu ?
 
Ok tu utilises quel script ? celui du message #9 ou celui du message #12

je te met celui du message #12 , le dernier donc, avec la recherche sur les dossiers choisis, sans aller dans leurs sous-dossiers.

dis moi si c'est bon !

Bloc de code:
tell application "Finder"
    set resultat to choose folder with prompt "Sélectionner le dossier pour les resultats"
    set pdf1 to choose folder with prompt "Sélectionner le premier fichier pour la recherche"
    set pdf1 to pdf1 as string
    set pdf1 to quoted form of POSIX path of pdf1 as string
    set pdf2 to choose folder with prompt "Sélectionner le deuxième dossier pour la recherche"
    set pdf2 to pdf2 as string
    set pdf2 to quoted form of POSIX path of pdf2 as string
    set bureau to POSIX path of (path to desktop folder as text)
    
    set commande to "find " & pdf1 & " -maxdepth 1 -name '*.pdf' > " & bureau & "liste.txt"
    do shell script commande
    set commande to "find " & pdf2 & " -maxdepth 1 -name '*.pdf' > " & bureau & "liste1.txt"
    do shell script commande
    
    set commande to "cat " & bureau & "liste1.txt >> " & bureau & "liste.txt"
    do shell script commande
    
    do shell script "rm " & bureau & "liste1.txt"
    
    set laligne to 2
    set drapeau to 0
    repeat
        set liste1 to ""
        set liste2 to ""
        set nb1 to 0
        set nb2 to 0
        tell application "Microsoft Excel"
            activate
            set lefichier to value of range ("a" & laligne)
            set materiel to value of range ("b" & laligne)
            set largeur to value of range ("d" & laligne)
            set hauteur to value of range ("e" & laligne)
            set recto to value of range ("i" & laligne)
            set QT to value of range ("m" & laligne)
        end tell
        if lefichier is "" then
            exit repeat
        end if
        
        set lenom to lefichier & "_" & materiel & "_" & largeur & "_" & hauteur & "_" & recto & "_" & QT & "ex"
        
        --Cherche le fichier
        set commande to "grep " & lefichier & "  " & bureau & "liste.txt"
        try
            set liste1 to do shell script commande
        on error
            set liste1 to ""
        end try
        
        set AppleScript's text item delimiters to {return}
        set nb1 to count text item of liste1
        
        if nb1 = 0 or nb1 > 1 then
            set lelog to open for access ((path to desktop folder as text) & "les erreurs.txt") as text with write permission
            write "A la ligne : " & laligne & " dans liste = " & nb1 & "fichier trouvé. " & return to lelog starting at eof
            close access lelog
            set drapeau to 1
        end if
        
        if nb1 = 1 then
            set liste to liste1
        end if
        if drapeau = 0 then
            
            tell application "Finder"
                set lechemin to text item 1 of liste
                set lechemin to lechemin as string
                set resultat to resultat as string
                set a to (resultat & materiel)
                
                if not (exists a) then
                    make new folder at resultat with properties {name:materiel}
                end if
                
                set a to quoted form of POSIX path of a
                set lechemin to quoted form of POSIX path of lechemin
                
                do shell script "cp " & lechemin & " " & a
                
                set anciennom to resultat & materiel & ":" & lefichier & ".pdf"
                set anciennom to quoted form of POSIX path of anciennom
                set nouveaunom to resultat & materiel & ":" & lenom & ".pdf"
                set nouveaunom to quoted form of POSIX path of nouveaunom
                set commande to "mv " & anciennom & " " & nouveaunom
                do shell script commande
            end tell
        end if
        set drapeau to 0
        set laligne to laligne + 1
    end repeat
end tell

tell application "Finder"
    do shell script "rm " & bureau & "liste.txt"
    activate
    display dialog "termine"
end tell
 
Si tout fonctionne comme tu veux... content pour toi !

Si besoin de modifs tu demandes.

Pour les images (vignettes) ??
 
penses-tu qu'il puisse aller chercher des fichiers comme : 95306_PP500pour impression.pdf
avec l'info au début et d'autres infos derrière et les renommer correctement
 
Pas compris ! :meh:

Donne un exemple:
Qu’est-ce qui se trouve dans la cellule Ax du fichier excel
Quel est le nom du fichier à trouver
Comment devra t’il être renommé
 
Dernière édition:
Ok tu utilises quel script ? celui du message #9 ou celui du message #12

je te met celui du message #12 , le dernier donc, avec la recherche sur les dossiers choisis, sans aller dans leurs sous-dossiers.

dis moi si c'est bon !

Bloc de code:
tell application "Finder"
    set resultat to choose folder with prompt "Sélectionner le dossier pour les resultats"
    set pdf1 to choose folder with prompt "Sélectionner le premier fichier pour la recherche"
    set pdf1 to pdf1 as string
    set pdf1 to quoted form of POSIX path of pdf1 as string
    set pdf2 to choose folder with prompt "Sélectionner le deuxième dossier pour la recherche"
    set pdf2 to pdf2 as string
    set pdf2 to quoted form of POSIX path of pdf2 as string
    set bureau to POSIX path of (path to desktop folder as text)
   
    set commande to "find " & pdf1 & " -maxdepth 1 -name '*.pdf' > " & bureau & "liste.txt"
    do shell script commande
    set commande to "find " & pdf2 & " -maxdepth 1 -name '*.pdf' > " & bureau & "liste1.txt"
    do shell script commande
   
    set commande to "cat " & bureau & "liste1.txt >> " & bureau & "liste.txt"
    do shell script commande
   
    do shell script "rm " & bureau & "liste1.txt"
   
    set laligne to 2
    set drapeau to 0
    repeat
        set liste1 to ""
        set liste2 to ""
        set nb1 to 0
        set nb2 to 0
        tell application "Microsoft Excel"
            activate
            set lefichier to value of range ("a" & laligne)
            set materiel to value of range ("b" & laligne)
            set largeur to value of range ("d" & laligne)
            set hauteur to value of range ("e" & laligne)
            set recto to value of range ("i" & laligne)
            set QT to value of range ("m" & laligne)
        end tell
        if lefichier is "" then
            exit repeat
        end if
       
        set lenom to lefichier & "_" & materiel & "_" & largeur & "_" & hauteur & "_" & recto & "_" & QT & "ex"
       
        --Cherche le fichier
        set commande to "grep " & lefichier & "  " & bureau & "liste.txt"
        try
            set liste1 to do shell script commande
        on error
            set liste1 to ""
        end try
       
        set AppleScript's text item delimiters to {return}
        set nb1 to count text item of liste1
       
        if nb1 = 0 or nb1 > 1 then
            set lelog to open for access ((path to desktop folder as text) & "les erreurs.txt") as text with write permission
            write "A la ligne : " & laligne & " dans liste = " & nb1 & "fichier trouvé. " & return to lelog starting at eof
            close access lelog
            set drapeau to 1
        end if
       
        if nb1 = 1 then
            set liste to liste1
        end if
        if drapeau = 0 then
           
            tell application "Finder"
                set lechemin to text item 1 of liste
                set lechemin to lechemin as string
                set resultat to resultat as string
                set a to (resultat & materiel)
               
                if not (exists a) then
                    make new folder at resultat with properties {name:materiel}
                end if
               
                set a to quoted form of POSIX path of a
                set lechemin to quoted form of POSIX path of lechemin
               
                do shell script "cp " & lechemin & " " & a
               
                set anciennom to resultat & materiel & ":" & lefichier & ".pdf"
                set anciennom to quoted form of POSIX path of anciennom
                set nouveaunom to resultat & materiel & ":" & lenom & ".pdf"
                set nouveaunom to quoted form of POSIX path of nouveaunom
                set commande to "mv " & anciennom & " " & nouveaunom
                do shell script commande
            end tell
        end if
        set drapeau to 0
        set laligne to laligne + 1
    end repeat
end tell

tell application "Finder"
    do shell script "rm " & bureau & "liste.txt"
    activate
    display dialog "termine"
end tell
Je lis mal, ou bien la variable nb2 reste égale à 0 dans ce script ?
 
@Gerapp38

:up:

Non tu lis bien, elle était utilisée lors de mon premier script, et lors des modifs pour utiliser un fichier .TXT pour la recherche j'ai oublié de l'effacer ! :banghead:
Cela devient dur dur avec l'age ! LOL...
 
  • J’aime
Réactions: Gerapp38
Dans le fichier excel colonne A nous avons des chiffres qui permettent de rechercher les fichiers PDF (comme 886726.pdf) et de les rassembler dans les dossiers en les rennomants (merci encore). Est-il possible en plus d'aller chercher des fichiers pdf qui ont ce numéro avec du texte derrière ce numéro comme 886726_impression_620.pdf
 
Oui on peut !
Ou se trouve ce nom (numéro avec le texte) ? dans la fichier excel ? ou ? afin de le récupérer.
Et comment faudra t'il le renommer ?
 
Si j'ai bien compris !
Donc au départ tu ne connaît pas leurs nom !
ils se nomment comme dans la colonne A suivi du texte.

Une chose importante:
Actuellement le script cherche les fichiers qui ont dans le nom le contenu de la colonne A , mais ni y a t'il pas le risque d'avoir plusieurs fichiers dans ce cas: exemple un fichier avec uniquement les chiffres et un autre avec les chiffres plus le texte ?
 
dans ce cas il faut revoir le script !

Ce que me surprend , si c'est la cas actuellement, s'il y a des fichiers avec le nom de la colonne A suivi de texte, tu dois avoir des erreurs dans le script car, tel quel, le script ne peut pas renommer les fichiers !
et s'il y en en plusieurs il les met dans le fichier erreur et ne les copie pas !