IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Renommer en masse des dossiers depuis une liste excel [Résolu]
Options
Bartaba87
posté 22 Mar 2021, 16:44
Message #1


Nouveau Membre


Groupe : Membres
Messages : 14
Inscrit : 22 Mar 2021
Membre no 213 706



Bonjour à tous,

Je m'adresse à vous pour trouver une solution afin de renommer en masse des dossiers depuis une liste excel sur mac.

J'ai trouvé une solution depuis le web anglophone : https://www.howtoexcel.org/vba/how-to-creat...rs-from-a-list/ mais autant j'arrive à la faire fonctionner sur windows, autant impossible d'exécuter la commande avec un chemin du finder mac os.

Auriez-vous des idées ou adaptation de Visual Basic à apporter ?

P.S. : Je suis une bille en script/terminal/code (mais ça ne me fait pas peur d'essayer).

Merci d'avance de vos réponses,

Bartaba.

Config :
MAC OS Mojave (10.14.6)
iMac (21.5-inch, Late 2015)
2,8 GHz Intel Core i5

Excel pour Mac version 16.46
Go to the top of the page
 
+Quote Post
Vincent
posté 22 Mar 2021, 16:53
Message #2


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 184
Inscrit : 21 Jul 2001
Lieu : LYON 6e
Membre no 524



Le plus simple : https://www.publicspace.net/ABetterFinderRe...e/index_fr.html


--------------------
1979 🎂🎉 45 ans d'Apple
1984 🎂🎉 40 ans de Mac

Mini M2 Pro - 2023 - 14.4.1 - 16Go/1To - Ecran LG 32UN880
Apple Watch Ultra -10.4
iPhone 15 Pro Max 512Go 17.4.1
Go to the top of the page
 
+Quote Post
baron
posté 22 Mar 2021, 17:48
Message #3


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 19 343
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Tu peux aussi jeter un œil là : https://forums.macg.co/threads/renommer-des....1301342/page-2


--------------------
MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS  12.6 “Monterey”  MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post
PBell
posté 22 Mar 2021, 18:33
Message #4


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 264
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Bonsoir,
Avec Applescript, cela se fait assez facilement.
J'imagine que ton fichier Excel contient 2 colonnes, l'une avec le nom de dossier actuel et l'autre avec le nom que tu souhaites donner au dossier.

Est-ce une liste de dossiers dans un dossier parent, oui bien ces dossiers peuvent être n'importe où ? Si ils peuvent être n'importe où leur chemin est-il indiqué dans ton fichier Excel ?
Faut-il aller chercher des sous-sous dossiers ?

Enfin comme Applescript peut être lent sur des gros volumes de fichiers/dossiers, il peut être judicieux de passer par du shell.
Quel est l'ordre de grandeur du nombre de dossiers à renommer ?

Cordialement


--------------------
iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post
Bartaba87
posté 24 Mar 2021, 14:51
Message #5


Nouveau Membre


Groupe : Membres
Messages : 14
Inscrit : 22 Mar 2021
Membre no 213 706



Oh la la, merci à tous, je n'avais pas vu vos réponse, je vous fais un retour au plus vite !
Go to the top of the page
 
+Quote Post
Bartaba87
posté 24 Mar 2021, 20:30
Message #6


Nouveau Membre


Groupe : Membres
Messages : 14
Inscrit : 22 Mar 2021
Membre no 213 706



Citation (Vincent @ 22 Mar 2021, 16:53) *


Bonsoir,

Après vérification, il me semble que ce logiciel est un "'Automator" plus poussé. Dans mon cas, j'ai besoin de modifier du tout au tout le nom de plusieurs dossiers mais pas en tant que liste d'un même genre type "image_1 / image_2..".

Pourriez-vous m'infirmer ceci ?

Merci de votre réponse en tout cas,

Bartaba
Go to the top of the page
 
+Quote Post
baron
posté 24 Mar 2021, 20:30
Message #7


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 19 343
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Citation (Bartaba87 @ 24 Mar 2021, 14:51) *
[…] je n'avais pas vu vos réponses […]

sign20.gif [Forum] Notification des réponses — Alerte pour réponse à sa question

wink.gif


--------------------
MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS  12.6 “Monterey”  MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post
Bartaba87
posté 24 Mar 2021, 20:45
Message #8


Nouveau Membre


Groupe : Membres
Messages : 14
Inscrit : 22 Mar 2021
Membre no 213 706



Citation (baron @ 22 Mar 2021, 17:48) *


Bonsoir Baron,

Je suis allé voir et effectivement ça fonctionne ! Excellente approche mais peut-être un peu brutale pour moi. J’aurais souhaité une solution « plus élégante » smile.gif avec une macro au sein d’un tableur qui me permettrait de jongler plus efficacement. J’ai toutefois noté et gardé précieusement le procédé.

Merci beaucoup.

Bartaba

Citation (baron @ 24 Mar 2021, 20:30) *
Citation (Bartaba87 @ 24 Mar 2021, 14:51) *
[…] je n'avais pas vu vos réponses […]

sign20.gif [Forum] Notification des réponses — Alerte pour réponse à sa question

wink.gif


Merci pour le tips wink.gif je viens de modifier ça !

Merci merci merci.

Citation (PBell @ 22 Mar 2021, 18:33) *
Bonsoir,
Avec Applescript, cela se fait assez facilement.
J'imagine que ton fichier Excel contient 2 colonnes, l'une avec le nom de dossier actuel et l'autre avec le nom que tu souhaites donner au dossier.

Est-ce une liste de dossiers dans un dossier parent, oui bien ces dossiers peuvent être n'importe où ? Si ils peuvent être n'importe où leur chemin est-il indiqué dans ton fichier Excel ?
Faut-il aller chercher des sous-sous dossiers ?

Enfin comme Applescript peut être lent sur des gros volumes de fichiers/dossiers, il peut être judicieux de passer par du shell.
Quel est l'ordre de grandeur du nombre de dossiers à renommer ?

Cordialement


Bonsoir PBell,

C’est exactement l’idée, une colonne pour les noms actuels et une colonne pour les nouveaux textes.

Il s’agit à chaque fois de liste de sous-dossiers au sein d’un dossier. Ce dernier n’étant pas forcément le même à chaque fois.

Le chemin n’est pas indiqué dans le fichier excel, c’est pourquoi la solution apportée sur le site en lien : https://www.howtoexcel.org/vba/how-to-creat...rs-from-a-list/ était pratique.
Je sélectionnais le dossier à choisir à chaque fois et procédais aux modifs (mais sur windows…).

L’ordre de grandeur est de 30/50 je dirais. Parfois pour plusieurs dossiers :

Dossier_1
- Sous-doss1
- Sous-doss2
x30

Dossier_2
-Sous-Doss1
-Sous-Doss2
x40



mais je peux refaire à chaque fois la manip pour les dossiers racines (j’en traite pas des masses tous les jours non plus), ça ne me dérange pas. C’est juste les rasades de 30/40 sous-dossiers à traité qui m’embête…

Merci de ta réponse en tout cas, n’hésite pas à me demander des précisions.

Bartaba
Go to the top of the page
 
+Quote Post
PBell
posté 24 Mar 2021, 21:16
Message #9


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 264
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Bonsoir,
Je résume donc le besoin:

1) Demander à l'utilisateur de sélectionner un dossier D1
2) Demander à l'utilisateur de sélectionner un fichier Excel avec colonne A, le nom actuel des sous dossiers et colonne B le nouveau nom de ces sous dossiers
3) Le script sélectionne tous les dossiers contenus dans le dossier D1 et dont le nom figure en colonne A, et remplace par leur nom par le valeur de la même ligne en colonne B

Option: chercher aussi les dossiers situés dans des sous - dossiers eux mêmes dans le dossier D1

Attention; il faut que les noms de dossiers soient uniques, c'est à dire aucune duplication dans la colonne B. Là où ça peut être un peu plus complexe c'est si un dossier B porte le même nom qu'un dossier actuel en A...! est-ce un cas réel ? Dans le doute, il vaut mieux gérer les erreurs possibles avec un log.

Si tu me confirmes, je te prépare un petit script à partir d'un script similaire que j'ai déjà écrit.

Cordialement


--------------------
iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post
Bartaba87
posté 24 Mar 2021, 21:25
Message #10


Nouveau Membre


Groupe : Membres
Messages : 14
Inscrit : 22 Mar 2021
Membre no 213 706



Citation (PBell @ 24 Mar 2021, 21:16) *
Bonsoir,
Je résume donc le besoin:

1) Demander à l'utilisateur de sélectionner un dossier D1
2) Demander à l'utilisateur de sélectionner un fichier Excel avec colonne A, le nom actuel des sous dossiers et colonne B le nouveau nom de ces sous dossiers
3) Le script sélectionne tous les dossiers contenus dans le dossier D1 et dont le nom figure en colonne A, et remplace par leur nom par le valeur de la même ligne en colonne B

Option: chercher aussi les dossiers situés dans des sous - dossiers eux mêmes dans le dossier D1

Attention; il faut que les noms de dossiers soient uniques, c'est à dire aucune duplication dans la colonne B. Là où ça peut être un peu plus complexe c'est si un dossier B porte le même nom qu'un dossier actuel en A...! est-ce un cas réel ? Dans le doute, il vaut mieux gérer les erreurs possibles avec un log.

Si tu me confirmes, je te prépare un petit script à partir d'un script similaire que j'ai déjà écrit.

Cordialement



Ah c'est vraiment super ! Pour répondre à ta question, oui ce n'est pas impossible que les noms puissent se répéter en A et B. ça restera rare. je pourrais le faire manuellement si c'est galère à mettre en place.

Merci beaucoup, c'est exactement mon besoin.

Bartaba
Go to the top of the page
 
+Quote Post
Vincent
posté 24 Mar 2021, 22:43
Message #11


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 184
Inscrit : 21 Jul 2001
Lieu : LYON 6e
Membre no 524



Citation (Bartaba87 @ 24 Mar 2021, 20:30) *
Citation (Vincent @ 22 Mar 2021, 16:53) *


Bonsoir,

Après vérification, il me semble que ce logiciel est un "'Automator" plus poussé. Dans mon cas, j'ai besoin de modifier du tout au tout le nom de plusieurs dossiers mais pas en tant que liste d'un même genre type "image_1 / image_2..".

Pourriez-vous m'infirmer ceci ?

Merci de votre réponse en tout cas,

Bartaba


on peut tout faire avec : il suffit de glisser les fichier d'un dossier dans la fenêtre du logiciel, de définir la règle de renommage et hop !
https://www.publicspace.net/ABetterFinderRe...e/index_fr.html

Il y a une version d'essai !


--------------------
1979 🎂🎉 45 ans d'Apple
1984 🎂🎉 40 ans de Mac

Mini M2 Pro - 2023 - 14.4.1 - 16Go/1To - Ecran LG 32UN880
Apple Watch Ultra -10.4
iPhone 15 Pro Max 512Go 17.4.1
Go to the top of the page
 
+Quote Post
Bartaba87
posté 24 Mar 2021, 23:41
Message #12


Nouveau Membre


Groupe : Membres
Messages : 14
Inscrit : 22 Mar 2021
Membre no 213 706



Bonsoir Vincent et merci pour la réponse! Je vais regarder un tutoriel alors!
Go to the top of the page
 
+Quote Post
Bartaba87
posté 25 Mar 2021, 13:20
Message #13


Nouveau Membre


Groupe : Membres
Messages : 14
Inscrit : 22 Mar 2021
Membre no 213 706



Vincent,

Merci beaucoup d'avoir insisté. Après avoir regardé un tuto et réessayé, il est vrai que c'est très pratique ; bien qu'il faille pré-enregistrer la liste en format texte, cela devient assez intuitif à l'usage.

Merci beaucoup !

Bonne journée,

Bartaba
Go to the top of the page
 
+Quote Post
PBell
posté 25 Mar 2021, 13:46
Message #14


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 264
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Bonjour,
Le script ci-dessous fait ce que tu demandes.
Dans le cas où des nouveaux noms de dossiers existent déjà, les dossiers ne sont pas changés, mais le script indique le nombre d'erreurs et les noms en erreur sont dans le presse papier.

Code
set ExcelFile to choose file with prompt "Selectionner le fichier Excel" of type {"XLSX"}
tell application "Microsoft Excel"
    -- Le fichier contient une colonne A avec le nom de dossier actuel et une colonne B avec le nouveau nom
    open ExcelFile
    tell active sheet to set maListe to value of used range
    close window 1
    -- MaListe est une liste de lignes (row) avec 2 valeurs, ancien et nouveau
end tell
set DossierParent to choose folder with prompt "Sélectionner le dossier contenant les dossiers à renommmer"

set ListeErreur to {}

repeat with Ligne in maListe -- boucle sur les lignes Excel    
    -- cherche dossier avec le nom item 1 of Ligne
    -- remplace le dossier avec le nom item 2 of ligne
    tell application "Finder"
        set Dossier to (every folder of folder DossierParent whose name is (item 1 of Ligne))
        if (count of Dossier) = 1 then -- trouvé un dossier de ce nom
            try
                set name of (first item of Dossier) to item 2 of Ligne
            on error
                log "erreur"
                set end of ListeErreur to item 1 of Ligne
            end try
            log "c=" & (count of ListeErreur)
        end if
    end tell
end repeat -- Ligne suivante

if (count of ListeErreur) > 0 then
    display alert "Le script a rencontré " & (count of ListeErreur) & " erreur(s)." & return & "Voir dans le presse papier."
    set AppleScript's text item delimiters to ","
    set the clipboard to items 1 thru -1 of ListeErreur as text
else
    display alert "Le script s'est éxécuté sans erreur."
end if


Pour tester, un dossier parent avec des sous dossier et un fichier Excel avec les colonnes A et B comme indiquées précédemment.
Le script demande de sélectionner le fichier Excel, puis le dossier parent.
Le fichier Excel s'ouvre et se ferme rapidement, juste le temps de lire les 2 colonnes.

Cordialement


--------------------
iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post
Bartaba87
posté 25 Mar 2021, 22:33
Message #15


Nouveau Membre


Groupe : Membres
Messages : 14
Inscrit : 22 Mar 2021
Membre no 213 706



Merci beaucoup PBell, je teste ça très vite et je te fais un retour!

Je ne pensais pas avoir 3 méthodes différentes pour solutionner mon soucis, vous êtes des chefs!
Go to the top of the page
 
+Quote Post
Bartaba87
posté 29 Mar 2021, 09:08
Message #16


Nouveau Membre


Groupe : Membres
Messages : 14
Inscrit : 22 Mar 2021
Membre no 213 706



Bonjour PBell et désolé de se retour tardif.

Alors j'ai tenté le script via l'éditeur de script (à partir de Fichier/Nouveau).

Le script se lance bien et me demande de sélectionner le fichier Excel.

Toutefois, tous mes fichiers Excel sont grisés et je ne peux les sélectionner. J'ai bien vérifié que mon extension était en .xlsx et j'ai même tenté en enregistrant en .xls pour voir s'il apparaissait non grisé mais rien de rien.

Une idée ?

Merci encore !

Bartaba
Go to the top of the page
 
+Quote Post
PBell
posté 30 Mar 2021, 08:25
Message #17


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 264
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Bonjour,
Si les fichiers XL ont grisés c'est qu'il y a erreur de type.

Essaye de supprimer la fin de la ligne de sélection de fichier Excel. La partie : "of type {"XLSX"}".

Il ne restera que:
CODE
set ExcelFile to choose file with prompt "Selectionner le fichier Excel"


Il faudra donc que tu sélectionnes bien un fichier Excel, ce filtre étant supprimé.

Cordialement

PS: sur mon vieux système, cela fonctionne avec "XLSX", mais peut être les systèmes plus récents sont sensibles à la casse ("xlsx")


--------------------
iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post
Bartaba87
posté 30 Mar 2021, 09:15
Message #18


Nouveau Membre


Groupe : Membres
Messages : 14
Inscrit : 22 Mar 2021
Membre no 213 706



Bonjour PBell, et merci.

Le script fonctionne parfaitement après avoir enlevé le of type XLSX.

Voici donc le code final qui a fonctionné chez moi :

CODE
set ExcelFile to choose file with prompt "Selectionner le fichier Excel"
tell application "Microsoft Excel"
-- Le fichier contient une colonne A avec le nom de dossier actuel et une colonne B avec le nouveau nom
open ExcelFile
tell active sheet to set maListe to value of used range
close window 1
-- MaListe est une liste de lignes (row) avec 2 valeurs, ancien et nouveau
end tell
set DossierParent to choose folder with prompt "Sélectionner le dossier contenant les dossiers à renommmer"

set ListeErreur to {}

repeat with Ligne in maListe -- boucle sur les lignes Excel
-- cherche dossier avec le nom item 1 of Ligne
-- remplace le dossier avec le nom item 2 of ligne
tell application "Finder"
set Dossier to (every folder of folder DossierParent whose name is (item 1 of Ligne))
if (count of Dossier) = 1 then -- trouvé un dossier de ce nom
try
set name of (first item of Dossier) to item 2 of Ligne
on error
log "erreur"
set end of ListeErreur to item 1 of Ligne
end try
log "c=" & (count of ListeErreur)
end if
end tell
end repeat -- Ligne suivante

if (count of ListeErreur) > 0 then
display alert "Le script a rencontré " & (count of ListeErreur) & " erreur(s)." & return & "Voir dans le presse papier."
set AppleScript's text item delimiters to ","
set the clipboard to items 1 thru -1 of ListeErreur as text
else
display alert "Le script s'est éxécuté sans erreur."
end if


Merci beaucoup PBell.

Merci à vous tous pour m'avoir aidé à solutionner se problème de différentes manières.

Bonne journée,

Bartaba
Go to the top of the page
 
+Quote Post
mr23
posté 5 Jan 2024, 20:57
Message #19


Nouveau Membre


Groupe : Membres
Messages : 3
Inscrit : 5 Jan 2024
Membre no 218 480



Salut à tous!

Je déterre ce sujet très intéressant en espérant que quelqu'un le voit rapidement biggrin.gif
Je suis sur le même cas de figure, mais pour des fichiers et non des dossiers.

Pour résumer ma situation :

    J'ai des fichiers répartis dans des sous-dossiers (2 ou 3 niveaux maximum), apparenté à un seul et même dossier "maître"
    J'ai une liste Excel avec colonne A = anciens noms et colonne B = nouveaux noms
    Les anciens et les nouveaux noms comportent des espaces (et doivent les conserver)


Comment dois-je adapter le script pour que cela fonctionne?
Si cela facilite le job, je peux copier/regrouper tous les fichiers à renommer dans un seul et même nouveau dossier (une fois qu'ils sont renommés, je n'ai plus besoin de conserver leur emplacement d'origine)



Pour votre info, je n'y connais rien du tout, mais je fais de mon mieux pour me débrouiller wink.gif


Merci d'avance!!
Go to the top of the page
 
+Quote Post
PBell
posté 6 Jan 2024, 08:40
Message #20


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 264
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Bonjour,
Le plus simple est effectivement de mettre tous les fichiers à plat dans un seul dossier.
J'ai repris le script précédent en changeant simplement les références à des dossiers par des références à des fichiers.
Ton fichier Excel doit contenir en colonne 1 les noms actuels et en colonne 2 les nouveaux noms de fichier.
Attention, dans les 2 cas, AVEC leur extension !


CODE
set ExcelFile to choose file with prompt "Selectionner le fichier Excel"
tell application "Microsoft Excel"
    -- Le fichier contient une colonne A avec le nom de fichier actuel et une colonne B avec le nouveau nom
    open ExcelFile
    tell active sheet to set maListe to value of used range
    close window 1
    -- MaListe est une liste de lignes (row) avec 2 valeurs, ancien et nouveau
end tell

set DossierParent to choose folder with prompt "Sélectionner le dossier contenant les fichiers à renommmer"

set ListeErreur to {}

repeat with Ligne in maListe -- boucle sur les lignes Excel    
    -- cherche le fichier avec le nom item 1 of Ligne
    -- remplace le dossier avec le nom item 2 of ligne
    tell application "Finder"
        set Fichier to (every file of folder DossierParent whose name is (item 1 of Ligne))
        if (count of Fichier) = 1 then -- trouvé un Fichier de ce nom
            try
                set name of (first item of Fichier) to item 2 of Ligne
            on error
                set end of ListeErreur to item 1 of Ligne
            end try
            
        end if
    end tell
end repeat -- Ligne suivante

if (count of ListeErreur) > 0 then
    display alert "Le script a rencontré " & (count of ListeErreur) & " erreur(s)." & return & "Voir dans le presse papier."
    set AppleScript's text item delimiters to ","
    set the clipboard to items 1 thru -1 of ListeErreur as text
else
    display alert "Le script s'est éxécuté sans erreur."
end if



J'ai testé sur mon vieux imac27 (Excel 2011 / El Capitain) et cela fonctionne sans problème.
Mais j'ai aussi testé ce vieux script sur ma machine de 2023 (24' M1) mais surtout avec Excel 2021...et là, Ô surprise, Excel ne répond plus correctement aux instructions Applescript (merci Microsoft !! grrr)...mais le reste fonctionne.

...Je savais déjà que Microsoft avait volontairement bloqué des fonctionnalités pour la version Mac, y compris des fonctionnalités exitantes dans des versions Mac antérieures, mais là, ils décrochent le ponpon de la médiocrité !!!!

Si tu a une autre version Excel teste de ton côté.
Si tu as une version 2021, je regarderai le script pour le faire éventuellement fonctionner avec un fichier texte csv.

Cordialement


--------------------
iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post
PBell
posté 6 Jan 2024, 11:48
Message #21


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 264
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Re-bonjour,

Comme ça m’énervait un peu de voir cet Excel 2021 bugger autant sur AppleScript, je viens de corriger le script qui lit désormais une liste anciens noms/nouveaux noms au format csv.

Petite particularité avec les csv sur Excel 2021: enregistrer au format "CSV UTF8 séparé par des virgules" donne un fichier text, séparé par des ; (point virgule) et dont la première ligne comporte quelques caractère bizarre !!
Il faut enregistrer la liste Excel sous le format "CSV (séparateur point-virgule)" qui est un peu plus bas dans la liste des options de format

Et voici le script:
CODE
property Sep : ";" -- defini le separateur de colonne du fichier csv
set Fcsv to choose file with prompt "Sélectionner le fichier csv contenant les anciens noms , les nouveaux"
set lignes to every paragraph of (read file Fcsv)
set AppleScript's text item delimiters to {Sep}

set DossierParent to choose folder with prompt "Sélectionner le dossier contenant les fichiers à renommmer"

set ListeErreur to {}
repeat with Ligne in lignes -- boucle sur les lignes du csv    
    
    tell application "Finder"
        set Fichier to (every file of folder DossierParent whose name is (text item 1 of Ligne))
        if (count of Fichier) = 1 then -- trouvé un Fichier de ce nom
            try
                set name of (first item of Fichier) to text item 2 of Ligne
            on error
                set end of ListeErreur to item 1 of Ligne
            end try
            
        end if
    end tell
end repeat -- Ligne suivante

if (count of ListeErreur) > 0 then
    display alert "Le script a rencontré " & (count of ListeErreur) & " erreur(s)." & return & "Voir dans le presse papier."
    set AppleScript's text item delimiters to ","
    set the clipboard to items 1 thru -1 of ListeErreur as text
else
    display alert "Le script s'est éxécuté sans erreur."
end if


Cordialement


--------------------
iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post
mr23
posté 8 Jan 2024, 09:18
Message #22


Nouveau Membre


Groupe : Membres
Messages : 3
Inscrit : 5 Jan 2024
Membre no 218 480



Merci PBell !!

Je vais tester ça cette semaine et ne manquerai pas de te tenir au courant si ça a fonctionné pour moi.

Petite question (je n'ai pas peur du ridicule laugh.gif ) : j'imagine que je ne peux pas copier/coller ce code tel quel? C'est normal d'avoir des lignes en français et en anglais? Quels sont les "champs" à mettre à jour en fonction de ma config/dossiers?

Et pour info, je bosse sur une ancienne version Mac et Excel, donc ça ne devrait pas poser de problème.


Encore merci
Go to the top of the page
 
+Quote Post
PBell
posté 8 Jan 2024, 19:47
Message #23


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 264
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Bonsoir mr23,

Pas d'inquiétude pour ta question: si le ridicule pouvait tuer, je serai déjà mort biggrin.gif

Le texte est anglais est le code lui-même (Applescript utilise des mots anglais !).
Les parties en français sont les commentaires que j'ajoute pour une meilleure compréhension. Ils sont précédés de "--" qui indique au compilateur de ne pas en tenir compte.

Tu ouvres l'application Éditeur de Script qui se trouve en général dans le dossier Utilitaires. L'ouverture de l'application va automatiquement ouvrir un document vierge.
Dans ce document, tu copies/colles l'intégralité du code que j'ai envoyé.

Si effectivement tu as une ancienne version de Mac et Excel, tu peux directement utiliser la première version du code.

Une fois collé dans le document Éditeur de script, tu commences par cliquer sur l’icône de marteau en haut de la fenêtre: tu vas ainsi faire ta première compilation !! (wahouhhh).
Cette étape permet de vérifier que le copier/coller s'est bien passé: si tout va bien, tu verras que l'Editeur a reformaté le code avec certains mots en couleur.

Ensuite tu cliques sur le triangle (pointé à droite) qui ressemble au bouton "lecture" de iTunes (toujours en haut de la fenêtre).
Cela va lancer le script qui va d'abord te demander de sélectionner le fichier Excel dans une fenêtre standard d'ouverture de fichier.
Le script va ensuite te demander de sélectionner un dossier: tu sélectionnes celui dans lequel tu as mis tes documents à renommer.
Ensuite, le script va mettre un certain temps pour changer tous les noms,...selon le nombre de lignes du fichier Excel.

Je te conseille de commencer par te faire un dossier d'une dizaine de fichiers à renommer pour voir le résultat (en gardant des sauvegardes de ces fichiers !). Si tout va bien, tu pourras le refaire sur tous les fichiers.

Je précise que si un nom de fichier est dans Excel, mais pas dans le dossier (pour les tests par exemple), le script n'aura pas de problème !
Inversement si un nom de fichier du dossier n'est pas dans le fichier Excel, il ne sera pas impacté.
Plus le nombre de lignes Excel est grand, plus le script prendra du temps.

N'hésites pas à revenir vers nous si tu as des questions: une question n'est jamais stupide, seule la réponse peut l'être et c'est moi qui essaierai de la donner rolleyes.gif(-;

Cordialement



--------------------
iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post
mr23
posté 17 Jan 2024, 11:11
Message #24


Nouveau Membre


Groupe : Membres
Messages : 3
Inscrit : 5 Jan 2024
Membre no 218 480



YESSSS!!

Oh p***in, ça marche!

Merci infiniment PBell, tu me sauves biggrin.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 utilisateur(s) sur ce sujet (2 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 16th April 2024 - 05:30