assembler des fichiers pdf à partir d'une base excel

OK !
si tout fonctionne ! ;):up:

bonne journée
 
Après quelques tests plus approfondis , 2 problèmes à signaler, dans le cas ou la colonne est formaté au format nombre.

-1 ne fonctionne que si le numéro du fichier dans la colonne L à 9 caractères maximum.
-2 ne fonctionne pas si plusieurs fichiers sont trouvés (même numéro ou numéro inclue l'un dans l"autre. par exemple:"12345678" et "234567")

fait signe si cela nécessite une correction .
 
Dernière édition:
Bonjour,
Voila une nouvelle version pour le renommage, qui accepte en entrée pour les noms, du texte et des nombres même si le nombre de chiffres est supérieur à 9.
Le fichier erreur, si le nombre de fichiers trouvés est supérieur à 1, te liste les chemins des différents fichiers trouvés.

J'espère que je n'ai rien oublié :p
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 ccc to lefichier
        try
            set test to lefichier + 0
            set ccc to my entexte(lefichier, "L", laligne)
        end try
        set lefichier to ccc
        
        set colj to value of range ("j" & laligne)
        set ccc to colj
        try
            set test to colj + 0
            set ccc to my entexte(colj, "J", laligne)
        end try
        set colj to ccc
        
        set coli to value of range ("i" & laligne)
        set ccc to coli
        try
            set test to coli + 0
            set coli to my entexte(coli, "i", laligne)
        end try
        set coli to ccc
        
        set colm to value of range ("m" & laligne)
        set ccc to colm
        try
            set test to colm + 0
            set colm to my entexte(colm, "m", laligne)
        end try
        set colm to ccc
        
        set coln to value of range ("n" & laligne)
        set ccc to coln
        try
            set test to coln + 0
            set ccc to my entexte(coln, "N", laligne)
        end try
        set coln to ccc
        
        set colk to value of range ("k" & laligne)
        set ccc to colk
        try
            set test to colk + 0
            set ccc to my entexte(colk, "k", laligne)
        end try
        set colk to ccc
    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é pour " & lefichier & return to lelog starting at eof
        close access lelog
        set drapeau to 1
    end if
    
    if 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é pour " & lefichier & return to lelog starting at eof
        close access lelog
        repeat with i from 1 to nb1
            set fich to paragraph i of liste1
            set lelog to open for access ((path to desktop folder as text) & "les erreurs.txt") as text with write permission
            write fich & return to lelog starting at eof
            close access lelog
        end repeat
        
        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, lacol, laligne)
    --display dialog " entre colonne " & lacol & " = " & a
    try
        set a to round of a rounding toward zero
    end try
    
    tell application "Microsoft Excel"
        activate
        set tmp to value of range "L1"
        set aa to "=TEXTE(" & lacol & laligne & ";0)"
        set value of range "L1" to aa
        set b to value of range ("L1") as string
        set value of range "L1" to tmp
    end tell
    
    set lefichier to b
end entexte
 
Bonjour,
est-il possible de faire un script pour supprimer des fichiers et dossiers sur un serveur à partir d'un nom ex "forme decoupe"
merci
 
bonjour,

Il faudrait un peut plus de détails ?
 
Oui
via le script dans un volume monté sur le bureau "serveur_base"- il faut aller chercher tous les dossiers qui se nomment "forme decoupe" et les supprimer
 
-- "forme decoupe" Est - ce le nom complet ou il faut chercher les dossiers qui ont dans le nom "forme decoupe" ?

--Il n'y a que des dossiers avec ce nom ou il y a aussi des fichiers ?

-- La recherche doit se faire à un seul niveau ou de manière récursive ?

-- Tu veux ensuite supprimer ces dossiers et tout leur contenus ?
 
oui il faut chercher les dossier qui ont le nom "forme de decoupe"
que des dossiers
de manière récursive
oui supprimer ces dossiers et tout leur contenus
merci
 
Oui
via le script dans un volume monté sur le bureau "serveur_base"- il faut aller chercher tous les dossiers qui se nomment "forme decoupe" et les supprimer
Faut-il vraiment un script pour cela ?

Une recherche avec le Finder (qu'on peut enregistrer pour une prochaine fois, sous la forme d'un dossier intelligent), un éventuel contrôle de pertinence et ⌘⌫ (menu Fichier > Placer dans la Corbeille) ne suffiraient-ils pas ?
 
Comme le dit @baron
--Dans le finder faire cmd+f
--Dans la fenêtre sélectionner le volume pour la recherche
--Sélectionner "type"-->nom
--Correspond à : --> forme de decoupe
Tu as tous les dossiers dans la fenêtre, --> un tout sélectionner et --> placer dans la corbeille.
-- vider la corbeille...