assembler des fichiers pdf à partir d'une base excel

en mettre 1 le premier trouvé
en plus mettre le fichier erreur.txt avec la ligne concernée
oui dans la colonne S merci
 
Voila le script qui cherche les fichiers dans le dossier des pdf et met le nom dans la colonne "S" correspondante.

Pour ensuite utiliser le bouton "afficher image" il faut modifier la formula qui est dans les cellules de la colonne "Q" la formule devient: dans la ligne 2: =$R$1&S2&".pdf"
cette formule est bien sur à "tirer" vers le bas de la colonne pour copie dans toutes les cellules.
Bien vérifier que dans "R1" il y a bien le chemin du dossier des pdf au format UNIX. avec des "/"

Bloc de code:
set pdf1 to choose folder with prompt "Sélectionner le dossier pour la recherche"
set pdf1 to pdf1 as string
set pdf1 to quoted form of POSIX path of pdf1 as string
set bureau to POSIX path of (path to desktop folder as text)

set laligne to 2
set drapeau to 0
repeat
    tell application "Microsoft Excel"
        activate
        set lefichier to value of range ("a" & laligne)
        set lefichier to my entexte(lefichier) as string
    end tell
   
    if lefichier is "" or lefichier is "0" then
        exit repeat
    end if
   
    set commande to "find " & pdf1 & " -maxdepth 1 -name " & lefichier & "*.pdf"
    set lechemin to do shell script commande
   
    set AppleScript's text item delimiters to {return}
    set nb to count text item of lechemin
    if nb = 0 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 & " fichier trouvé = " & nb & return to lelog starting at eof
        close access lelog
        set drapeau to 1
    end if
   
    if drapeau = 0 then
       
        if nb > 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 & " fichier trouvé = " & nb & return to lelog starting at eof
            close access lelog
            set drapeau to 1
        end if
       
        set lechemin to text item 1 of lechemin
       
        set lecheminmac to (POSIX file lechemin)
        tell application "Finder"
            set b to lecheminmac as alias
            set lenom to name of b
            --enlever extension
            set nomcourt to text 1 thru ((offset of "." in lenom) - 1) of lenom
        end tell
       
       
        tell application "Microsoft Excel"
            activate
            set value of range ("S" & laligne) to nomcourt
        end tell
    end if
    set drapeau to 0
    set laligne to laligne + 1
end repeat
on entexte(a)
    try
        set a to round of a rounding toward zero
    end try
    set AppleScript's text item delimiters to {"E"}
    try
        set ccc to a
        set a to a as text
        set b to text item 2 of a
        set cc to text item 1 of a
        set AppleScript's text item delimiters to {""}
        set ccc to (item 1 of cc) & text 3 thru -1 of cc
    end try
    set AppleScript's text item delimiters to {""}
    set lefichier to ccc
end entexte
 
content pour toi .. ;)
 
Bonjour,
Aujourd'hui j'ai un dossier avec des pdf nommés avec une liste de mots et de chiffres parmi les chiffres un nombre correspond au chiffre d'une colonne L dans excel. (fronton adidas 1m g1 10777 990.00 150.00 fr_int idcom2u1385718.wedia[-1_-1xoxarx_p31d65e8e]) le chiffre est 1385718. j'ai besoin de les renommer avec le contenue de la colonne L,J,M,N ET K -ex - possible pour vous merci
 
  • Wow
Réactions: Gerapp38
Bonjour,
Comment pourrait-on différencier les différents nombres qui semblent composer le nom des pdf ?:rolleyes:
 
Bonjour,

Si j'ai bien compris,
la colonne L du fichier excel contient le numéro qui est inclus dans le nom du fichier PDF.

et tu veux renommer le pdf avec dans l'ordre le contenu des colonnes avec un "_" entre chaque et un ex à la fin
exemple: L_J_M_N_Kex.

Est-ce bien cela ?
tu veux renommer directement les fichiers ou les déplacer et les renommer(pour conserver les originaux)?
 
Dernière édition:
oui la colonne L du fichier excel contient le numéro qui est inclus dans le nom du fichier PDF
oui il faut renommer le pdf avec dans l'ordre le contenu des colonnes avec un_entre chaque et un es à la fin _kex si nous pouvons déplacer super
 
OK !

alors voilà le script:
le fichier excel étant ouvert, il te demande de sélectionner le dossier résultat, puis le dossier des pdf.
Il crée le fichier erreur si pas de fichier pdf trouvé.

Bon tests !
Bloc de code:
set resultat to choose folder with prompt "Sélectionner le dossier pour les resultats"
set ledossier to choose folder with prompt "Sélectionner le dossier pour la recherche des PDF"
set pdf1 to ledossier as string
set pdf1 to quoted form of POSIX path of pdf1 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 laligne to 2
set drapeau to 0

repeat
    set liste1 to ""
    set nb1 to 0
    tell application "Microsoft Excel"
        activate
        set lefichier to value of range ("L" & laligne)
        set lefichier to my entexte(lefichier) as string
        set colm to value of range ("m" & laligne)
        set colm to my entexte(colm)
        set coln to value of range ("n" & laligne)
        set coln to my entexte(coln)
        set colk to value of range ("k" & laligne)
        set colk to my entexte(colk)
        
    end tell
    
    if lefichier is "" or lefichier is "0" then
        exit repeat
    end if
    
    set newnom to lefichier & "_" & colm & "_" & coln & "_" & colk & "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 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
    
    set liste to liste1
    
    if drapeau = 0 then
        repeat with i from 1 to nb1
            set lechemin to text item i of liste
            set lechemin to lechemin as string
            
            set resultat to POSIX path of resultat as string
            set newnom to resultat & newnom & ".pdf"
            
            set newnom to quoted form of POSIX path of newnom
            set anciennom to quoted form of POSIX path of liste
            
            set commande to "cp " & anciennom & " " & newnom
            do shell script commande
        end repeat
    end if
    set drapeau to 0
    set laligne to laligne + 1
end repeat


tell application "Finder"
    do shell script "rm " & bureau & "liste.txt"
    activate
    display dialog "termine"
end tell

on entexte(a)
    try
        set a to round of a rounding toward zero
    end try
    set AppleScript's text item delimiters to {"E"}
    try
        set ccc to a
        set a to a as text
        set b to text item 2 of a
        set cc to text item 1 of a
        set AppleScript's text item delimiters to {""}
        set ccc to (item 1 of cc) & text 3 thru -1 of cc
    end try
    set AppleScript's text item delimiters to {""}
    set lefichier to ccc
end entexte
 
  • J’adore
Réactions: baron
Voilà ! + J + i
tests bon ?
Bloc de code:
set resultat to choose folder with prompt "Sélectionner le dossier pour les resultats"
set ledossier to choose folder with prompt "Sélectionner le dossier pour la recherche des PDF"
set pdf1 to ledossier as string
set pdf1 to quoted form of POSIX path of pdf1 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 laligne to 2
set drapeau to 0

repeat
    set liste1 to ""
    set nb1 to 0
    tell application "Microsoft Excel"
        activate
        set lefichier to value of range ("L" & laligne)
        set lefichier to my entexte(lefichier) as string
        set colj to value of range ("j" & laligne)
        set colj to my entexte(colj)
        set coli to value of range ("i" & laligne)
        set coli to my entexte(coli)
        set colm to value of range ("m" & laligne)
        set colm to my entexte(colm)
        set coln to value of range ("n" & laligne)
        set coln to my entexte(coln)
        set colk to value of range ("k" & laligne)
        set colk to my entexte(colk)
       
    end tell
   
    if lefichier is "" or lefichier is "0" then
        exit repeat
    end if
   
    set newnom to lefichier & "_" & colj & "_" & coli & "_" & colm & "_" & coln & "_" & colk & "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 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
   
    set liste to liste1
   
    if drapeau = 0 then
        repeat with i from 1 to nb1
            set lechemin to text item i of liste
            set lechemin to lechemin as string
           
            set resultat to POSIX path of resultat as string
            set newnom to resultat & newnom & ".pdf"
           
            set newnom to quoted form of POSIX path of newnom
            set anciennom to quoted form of POSIX path of liste
           
            set commande to "cp " & anciennom & " " & newnom
            do shell script commande
        end repeat
    end if
    set drapeau to 0
    set laligne to laligne + 1
end repeat


tell application "Finder"
    do shell script "rm " & bureau & "liste.txt"
    activate
    display dialog "termine"
end tell

on entexte(a)
    try
        set a to round of a rounding toward zero
    end try
    set AppleScript's text item delimiters to {"E"}
    try
        set ccc to a
        set a to a as text
        set b to text item 2 of a
        set cc to text item 1 of a
        set AppleScript's text item delimiters to {""}
        set ccc to (item 1 of cc) & text 3 thru -1 of cc
    end try
    set AppleScript's text item delimiters to {""}
    set lefichier to ccc
end entexte
 
Dernière édition:
J'ai edité le script,
reprend le il est corrigé !
 
Super il démarre est error

error "cp: /Users/riousolutions/Desktop/renoamma/1390932_Dubl_Rcto / V_400_200_1ex.pdf: No such file or directory" number 1
 
Je viens de retester chez moi ! c'est bon.

Il me faudrait donc plus d'éléments pour comprendre d' ou viens l'erreur !
L'erreur dit qu'il ne trouve pas le fichier pour le renommer ...
- Quel est le nom de ton dossier pour le résultat ?
  • quel est le nom original du fichier qui à le numéro 1390932
  • quel est le contenu des cellules J, I, M, N, et k de ce fichier
edit: est-ce qu'il y aurait pas un "/" dans le contenu d'une des cellules qui sert pour le nouveau nom ????
 
Dernière édition:
Je suis quasi sur que le problème vient d'un caractère "/" dans le nouveau nom, ce qui est incompatible avec le renommage par le shell et unix.
Donc je te refais le script qui renomme en se servant du finder du mac., cela devrait contourner le problème, en acceptant les "/" dans la nouveau nom.

J'attends le retour de tes tests ...

Bloc de code:
set resultat to choose folder with prompt "Sélectionner le dossier pour les resultats"
set ledossier to choose folder with prompt "Sélectionner le dossier pour la recherche des PDF"
set pdf1 to ledossier as string
set pdf1 to quoted form of POSIX path of pdf1 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 laligne to 2
set drapeau to 0

repeat
    set liste1 to ""
    set nb1 to 0
    tell application "Microsoft Excel"
        activate
        set lefichier to value of range ("L" & laligne)
        set lefichier to my entexte(lefichier) as string
        set colj to value of range ("j" & laligne)
        set colj to my entexte(colj)
        set coli to value of range ("i" & laligne)
        set coli to my entexte(coli)
        set colm to value of range ("m" & laligne)
        set colm to my entexte(colm)
        set coln to value of range ("n" & laligne)
        set coln to my entexte(coln)
        set colk to value of range ("k" & laligne)
        set colk to my entexte(colk)
       
    end tell
   
    if lefichier is "" or lefichier is "0" then
        exit repeat
    end if
   
    set newnom to lefichier & "_" & colj & "_" & coli & "_" & colm & "_" & coln & "_" & colk & "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 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
   
    set liste to liste1
   
    if drapeau = 0 then
        repeat with i from 1 to nb1
            set lechemin to text item i of liste
            set pournom to POSIX file lechemin as alias
           
            tell application "Finder"
                set lenom to name of pournom
            end tell
           
            set resultat to resultat as string
            set newnom to newnom & ".pdf"
            set a to POSIX file liste
           
            tell application "Finder"
                duplicate a to resultat
                set newfile to (resultat & lenom) as alias
                set name of newfile to newnom
            end tell
        end repeat
    end if
    set drapeau to 0
    set laligne to laligne + 1
end repeat


tell application "Finder"
    do shell script "rm " & bureau & "liste.txt"
    activate
    display dialog "termine"
end tell

on entexte(a)
    try
        set a to round of a rounding toward zero
    end try
    set AppleScript's text item delimiters to {"E"}
    try
        set ccc to a
        set a to a as text
        set b to text item 2 of a
        set cc to text item 1 of a
        set AppleScript's text item delimiters to {""}
        set ccc to (item 1 of cc) & text 3 thru -1 of cc
    end try
    set AppleScript's text item delimiters to {""}
    set lefichier to ccc
end entexte
 
Bonjour Merci cela fonction mais il me coupe des mots (1333387_Dubl_Recto_1450_910_1ex) "Dubl "au lieu de "Double cannelure 3 mm" colonne J
 
OK !
toujours le problème des formats de cellule (texte ou nombre) je cherche une solution !
 
OK ! essai ça !

Pas eu la réponse ! C'était bien un "/" dans une cellule ?

Bloc de code:
set resultat to choose folder with prompt "Sélectionner le dossier pour les resultats"
set ledossier to choose folder with prompt "Sélectionner le dossier pour la recherche des PDF"
set pdf1 to ledossier as string
set pdf1 to quoted form of POSIX path of pdf1 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 laligne to 2
set drapeau to 0

repeat
    set liste1 to ""
    set nb1 to 0
    tell application "Microsoft Excel"
        activate
        set lefichier to value of range ("L" & laligne)
        try
            set test to lefichier + 0
            set lefichier to my entexte(lefichier) as string
        end try
        set colj to value of range ("j" & laligne)
        try
            set test to colj + 0
            set colj to my entexte(colj)
        end try
        set coli to value of range ("i" & laligne)
        try
            set test to coli + 0
            set coli to my entexte(coli)
        end try
        set colm to value of range ("m" & laligne)
        try
            set test to colm + 0
            set colm to my entexte(colm)
        end try
        
        set coln to value of range ("n" & laligne)
        try
            set test to coln + 0
            set coln to my entexte(coln)
        end try
        set colk to value of range ("k" & laligne)
        try
            set test to colk + 0
            set colk to my entexte(colk)
        end try
        
        
    end tell
    
    if lefichier is "" or lefichier is "0" then
        exit repeat
    end if
    
    set newnom to lefichier & "_" & colj & "_" & coli & "_" & colm & "_" & coln & "_" & colk & "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 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
    
    set liste to liste1
    
    if drapeau = 0 then
        repeat with i from 1 to nb1
            set lechemin to text item i of liste
            set pournom to POSIX file lechemin as alias
            
            tell application "Finder"
                set lenom to name of pournom
            end tell
            
            set resultat to resultat as string
            set newnom to newnom & ".pdf"
            set a to POSIX file liste
            
            tell application "Finder"
                duplicate a to resultat
                set newfile to (resultat & lenom) as alias
                set name of newfile to newnom
            end tell
        end repeat
    end if
    set drapeau to 0
    set laligne to laligne + 1
end repeat


tell application "Finder"
    do shell script "rm " & bureau & "liste.txt"
    activate
    display dialog "termine"
end tell

on entexte(a)
    try
        set a to round of a rounding toward zero
    end try
    set AppleScript's text item delimiters to {"E"}
    try
        set ccc to a
        set a to a as text
        set b to text item 2 of a
        set cc to text item 1 of a
        set AppleScript's text item delimiters to {""}
        set ccc to (item 1 of cc) & text 3 thru -1 of cc
    end try
    set AppleScript's text item delimiters to {""}
    set lefichier to ccc
end entexte