assembler des fichiers pdf à partir d'une base excel

une petite chose il ajoute une ,0 dans les chiffres du fichier
1336593_Carton 10mm alvéolaire blanc Riou_1120,0_1750,0_Recto_1,0ex
 
Même constat la colonne M est un nombre, et ton système doit être avec un format affichage nombre avec 1 virgule !

donc même question comment est ton fichier excel réel?
 
j'ai repris le fichier de base il est au format texte ouf il fonction très merci - Je ne sais pas comment te remercier
 
Afin le mystère est résolu !
la réponse à la question des fichiers en double ???

Si OK alors content pour toi !
 
oui super il met _doublon à la fin
est-il possible de prévoir chiffre et texte dans le script
il me double les infos du fichier parfois
1314444_100x100_carton_alveolaire_10mm_1ex_Carton 10mm alvéolaire blanc Riou_1000_1000_Recto_1ex
 
est-il possible de prévoir chiffre et texte dans le script
Non pas de possibilité...
il me double les infos du fichier parfois
Là je ne comprend pas !
Ton exemple ne m'aide pas ! car je ne vois pas de double...
Pour créer le nom le script se sert:
Nom du fichier PDF actuel(sans l'extension.pdf) suivi de"_" suivi de la colonne B puis colonne D puis colonne E puis colonne I puis colonne M

Donc s'il y a des doubles c'est qu'il y a la même infos dans le nom du fichier et dans la colonne B !
 
est-il possible d'avoir le script avec une interpretation en chiffre ?
Et toujours non !
Tout simplement car il cherche le fichier par son nom et le nom d'un fichier c'est toujours que du texte !

Il faut faire la modification dans excel ! transformer toute les colonnes du format nombre en format texte et ressaisir les valeurs ou
faire un copier, coller de la colonne (A par exemple) la coller dans une autre colonne(P par exemple) puis dans la colonne A mettre la formule =TEXTE(Px;0) x étant le numéro de la ligne.
Tu vois , c'est pas si simple !
Peut-être une macro excel peut faire le job, mais là je connaît moins.
 
Lorsque qu'il retrouve un fichier avec du texte - il ajoute les infos excel à la suite du texte pouvons nous supprimer l'ancien texte et le remplacer par le nouveau dans excel ?
 
On peu, mais il y a le risque de se retrouver avec plusieurs fichiers du même nom. tous le fichiers trouvés dont le nom sera:

valeur de la colonne A suivi (ou non de texte) va se retrouver avec le même nom de renommage !
 
Bien sur ! comme il à su mettre "ex" ! quoi metttre ? et dans quelle conditions (seulement s'il y a du texte ?
 
Ok je regarde ça ce soir !
a demain
 
Voila le nouveau script.
Je récap.
il renomme les fichiers dont le nom est le même que dans le fichier excel et ajoute _doublon en cas de fichier en double (même nom)
Il renomme les fichiers dont le nom est plus long que dans le fichier excel et ajoute -valide et en cas de de double rajoute _doublon.

J'espère avoir bien compris ! si c'est pas ça n'hésite pas à me le dire.

Bon tests
Bloc de code:
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 nb1 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 newnom to "_" & 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 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 resultat as string
            set a to (resultat & materiel)
            
            
            set b to (POSIX file lechemin)
            tell application "Finder"
                set b to b 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 "Finder"
                if not (exists a) then
                    make new folder at resultat with properties {name:materiel}
                end if
            end tell
            set a to quoted form of POSIX path of a
            set lechemin to quoted form of POSIX path of lechemin
            
            tell application "Finder"
                set arenommer to newnom
                if (count character of nomcourt) > (count character of lefichier) then
                    set arenommer to arenommer & "_valide"
                end if
                
                set testnom to resultat & materiel & ":" & nomcourt & arenommer & ".pdf"
                if (exists testnom) then
                    set arenommer to arenommer & "_doublon" ---- ajout de double --
                end if
                
            end tell
            
            do shell script "cp " & lechemin & " " & a
            
            set anciennom to resultat & materiel & ":" & lenom
            set anciennom to quoted form of POSIX path of anciennom
            set nouveaunom to resultat & materiel & ":" & nomcourt & arenommer & ".pdf"
            set nouveaunom to quoted form of POSIX path of nouveaunom
            set commande to "mv " & anciennom & " " & nouveaunom
            
            do shell script commande
            set arenommer to ""
        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
 
Bonjour,
après quelques tests, je te met un nouveau script qui accepte le fichier excel avec les entrées au format nombre et texte (il converti les nombres au format texte...
sinon à pat ça il fait la même chose que le précédent

Dis moi si tes tests sont corrects ! merci du retour.

Bloc de code:
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 nb1 to 0
    tell application "Microsoft Excel"
        activate
        set lefichier to value of range ("a" & laligne)
        set lefichier to my entexte(lefichier)
        set materiel to value of range ("b" & laligne)
        set largeur to value of range ("d" & laligne)
        set largeur to my entexte(largeur)
        set hauteur to value of range ("e" & laligne)
        set hauteur to my entexte(hauteur)
        set recto to value of range ("i" & laligne)
        set QT to value of range ("m" & laligne)
        set QT to my entexte(QT)
    end tell
    if lefichier is "" then
        exit repeat
    end if
   
    set newnom to "_" & 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 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 resultat as string
            set a to (resultat & materiel)
           
           
            set b to (POSIX file lechemin)
            tell application "Finder"
                set b to b 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 "Finder"
                if not (exists a) then
                    make new folder at resultat with properties {name:materiel}
                end if
            end tell
            set a to quoted form of POSIX path of a
            set lechemin to quoted form of POSIX path of lechemin
           
            tell application "Finder"
                set arenommer to newnom
                if (count character of nomcourt) > (count character of lefichier) then
                    set arenommer to arenommer & "_valide"
                end if
               
                set testnom to resultat & materiel & ":" & nomcourt & arenommer & ".pdf"
                if (exists testnom) then
                    set arenommer to arenommer & "_doublon" ---- ajout de double --
                end if
               
            end tell
           
            do shell script "cp " & lechemin & " " & a
           
            set anciennom to resultat & materiel & ":" & lenom
            set anciennom to quoted form of POSIX path of anciennom
            set nouveaunom to resultat & materiel & ":" & nomcourt & arenommer & ".pdf"
            set nouveaunom to quoted form of POSIX path of nouveaunom
            set commande to "mv " & anciennom & " " & nouveaunom
           
            do shell script commande
            set arenommer to ""
        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)
    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:
Bonjour
apres test toujours les virgules merci
1247367_carton_alveolaire_10mm_1000x1000_1ex_Carton 10mm alvéolaire blanc Riou_1000,0_1000,0_Recto_1,0ex_valide.pdf
Il faut si possible que le valide soit avant_1ex merci
 
Bon voici un new qui devrait faire ce que tu demandes...

bon tests
Bloc de code:
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 nb1 to 0
    tell application "Microsoft Excel"
        activate
        set lefichier to value of range ("a" & laligne)
        set lefichier to my entexte(lefichier) as string
        set materiel to value of range ("b" & laligne)
        set largeur to value of range ("d" & laligne)
        set largeur to my entexte(largeur)
        set hauteur to value of range ("e" & laligne)
        set hauteur to my entexte(hauteur)
        set recto to value of range ("i" & laligne)
        set QT to value of range ("m" & laligne)
        set QT to my entexte(QT)
    end tell
    
    if lefichier is "" or lefichier is "0" then
        exit repeat
    end if
    
    set newnom to "_" & 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 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 resultat as string
            set a to (resultat & materiel)
            
            
            set b to (POSIX file lechemin)
            tell application "Finder"
                set b to b 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 "Finder"
                if not (exists a) then
                    make new folder at resultat with properties {name:materiel}
                end if
            end tell
            set a to quoted form of POSIX path of a
            set lechemin to quoted form of POSIX path of lechemin
            
            tell application "Finder"
                set arenommer to newnom
                --display dialog "ligne " & laligne & " " & lefichier
                set orig to lefichier as string
                set nb to count character of orig
                
                
                if (count character of nomcourt) > nb then
                    
                    set testnom to resultat & materiel & ":" & nomcourt & arenommer & "_valide" & "_" & QT & "ex" & ".pdf"
                    if (exists testnom) then
                        set arenommer to arenommer & "_valide" & "_" & QT & "ex" & "_doublon"
                    else
                        set arenommer to arenommer & "_valide" & "_" & QT & "ex"
                    end if
                else
                    set testnom to resultat & materiel & ":" & nomcourt & arenommer & "_" & QT & "ex" & ".pdf"
                    if (exists testnom) then
                        set arenommer to arenommer & "_" & QT & "ex" & "_doublon" ---- ajout de double --
                    else
                        set arenommer to arenommer & "_" & QT & "ex"
                    end if
                end if
            end tell
            
            do shell script "cp " & lechemin & " " & a
            
            set anciennom to resultat & materiel & ":" & lenom
            set anciennom to quoted form of POSIX path of anciennom
            set nouveaunom to resultat & materiel & ":" & nomcourt & arenommer & ".pdf"
            set nouveaunom to quoted form of POSIX path of nouveaunom
            set commande to "mv " & anciennom & " " & nouveaunom
            
            do shell script commande
            set arenommer to ""
        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