Bonjour,
Je t’ai fait un petit applescript pour tester.
Pour son utilisation:
1 -créer un dossier pour la réception des dossiers et fichiers.
2 - ouvrir le fichier excel, faire un essai avec un fichier excel d’une centaine de ligne pour s’assurer que tout fonctionne comme tu veux. Le fichier doit resté ouvert.
3 - préparer le script pour cela :
Ouvrir Editeur de script qui se trouve dans Application—>Utilitaires
Clic sur le bouton “Nouveau document” en bas à gauche
Dans la fenêtre qui s’ouvre faire un copier coller du script.
Cliquer sur exécuter en haut à gauche
Le script te demande de sélectionner le dossier pour recevoir les résultats (dossier créer juste avant)
Puis il te demande de sélectionner le premier dossier dans lequel sera effectué la recherche
Puis il te demande de sélectionner le deuxième dossier dans lequel sera effectué la recherche
Il fait le job en faisant des copies des fichiers trouvés et les renomment (fait des copies plutôt que de déplacer afin de préserver l’original et la possibilité de revenir en arrière si besoin)
Il commence à la ligne 2 du fichier excel et s’arrête à la première cellule vide de la colonne A.
S’il trouve des erreurs, il crée sur le bureau un fichier erreurs .txt contenant les erreurs rencontrées, une erreur par ligne, avec numéro de la ligne excel puis le nombre de fichier trouvé en 1ere et en 2ième recherche (ceci pour les fichiers non trouvés et pour fichiers trouvés en plusieurs exemplaires)
A la fin il te met un message terminé.
J'attends ton retour !
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 dossier 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 laligne to 1
set drapeau to 0
repeat
set liste1 to ""
set liste2 to ""
set nb1 to 0
set nb2 to 0
tell application "Microsoft Excel"
activate
--«event coreslct» sheet "Feuil1"
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 aa to pdf1
set commande to "find " & aa & " -name " & "'" & lefichier & ".pdf" & "'"
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
set aa to pdf2
set commande to "find " & aa & " -name " & "'" & lefichier & ".pdf" & "'"
try
set liste2 to do shell script commande
on error
set liste2 to ""
end try
set nb2 to count text item of liste2
if nb1 + nb2 = 0 or nb1 + nb2 > 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 PDF 1 = " & nb1 & "fichier trouvé. et dans PDF2 = " & nb2 & " 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
else
set liste to liste2
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"
activate
display dialog "termine"
end tell