# Renommer des photos d'après un fichier excel sous mac



## Pickis (11 Décembre 2018)

Bonjour.
D'un coté j'ai des dossiers photos classé par classe, de l'autre une liste des noms et prénoms au format excel.
je voudrai matché les deux, c'est a dire que les noms et prénoms sur la liste viennent se mettre en lieu place des numéros présent au sur les photos.
Je sais que c'est faisable sous PC avec des macros, mais sur mac? y'a t'il une solution avec applescript ou autre.
Je précise quand même un point important je n'y connais rien !....
Merci pour vos réponses.


----------



## Membre supprimé 1129907 (13 Décembre 2018)

Je n'ai rien compris ...
Peux-tu mettre un exemple de ce que tu as et ce que tu veux avoir ?


----------



## Pickis (28 Décembre 2018)

Ma liste excel                     +                                      mon dossier classe                                                           =                                                  Trombi

*Note de la modération :* ne pas afficher des noms de personnes de son entourage personnel, donc suppression de la copie écran.


----------



## iDanGener (28 Décembre 2018)

Pickis a dit:


> Bonjour.
> D'un coté j'ai des dossiers photos classé par classe, de l'autre une liste des noms et prénoms au format excel.
> je voudrai matché les deux, c'est a dire que les noms et prénoms sur la liste viennent se mettre en lieu place des numéros présent au sur les photos.
> Je sais que c'est faisable sous PC avec des macros, mais sur mac? y'a t'il une solution avec applescript ou autre.
> ...



Bonjour,

Avec «A Better Finder Rename» c'est possible.

Après avoir glissé le dossier contenant les noms à modifier sur la fenêtre de l'application, il suffit ensuite de fournir dans un fichier texte, une liste de noms de fichiers (1 nom par ligne) dans le même ordre que les éléments à modifier

Daniel


----------



## Membre supprimé 1129907 (28 Décembre 2018)

Donc un fichier Excel avec 3 colonnes : nom, prénom, nom du fichier
Le but est de s’en servir pour renommer les images en remplaçant leur nom par le nom+prénom de la personne

Je regarderais ce soir ce qu’on peut faire

Ps: supprime le premier fichier avec les noms et remplace le par un exemple. J’ai demandé au modo de le supprimer


----------



## Pickis (28 Décembre 2018)

ecatomb a dit:


> Donc un fichier Excel avec 3 colonnes : nom, prénom, nom du fichier
> Le but est de s’en servir pour renommer les images en remplaçant leur nom par le nom+prénom de la personne
> 
> Je regarderais ce soir ce qu’on peut faire
> ...



C’est pour ça que j’ai modifier les prénoms pour pas Avoir de problème. Après ça reste des noms de famille tu les trouves partout. Mais en tout cas merci de t’as bienveillance.


----------



## Membre supprimé 1129907 (28 Décembre 2018)

Si tu enregistres ton fichier Excel en csv, via un script shell c'est possible.

Exemple :

```
#!/bin/bash

fichier_csv="/Users/xxx/test.csv"
repertoire_photo="/Users/xxx/rep2018"

if [ ! -d "${repertoire_photo}" ];then
echo "Répertoire incorrect";
exit 1
fi

cd "${repertoire_photo}"
while IFS=";" read -r nom prenom fichier
do
  mv "${fichier}" "${nom}.${prenom}.jpg"
done < "${fichier_csv}"
```

Le fichier donc le nom sera dans la 3ème colonnes du fichier csv sera renommé à partir des noms et prénoms (avec l'extension jpg). A voir si cela peut te convenir.

Sinon, cela est sans doute possible via AppleScript, par contre pas à partir d'un fichier xls ...


----------



## moderno31 (28 Décembre 2018)

Une autre piste : Automator via des scripts aussi je pense


----------



## Membre supprimé 1129907 (29 Décembre 2018)

Je pensais aussi à Automator, mais il ne peut pas lire lui-même les fichiers ...
Par contre, on doit pouvoir faire une interface demandant le fichier csv et le répertoire des photos via cet outil.


----------



## Pickis (1 Janvier 2019)

Tout d'abord Meilleurs voeux et surtout merci de vous êtes penché sur le sujet. Je regarde tout ça car je suis pas du tout informaticien, a savoir que sur mac j'utilise Numbers, faut il impérativement travailler sous excel?


----------



## Membre supprimé 1129907 (1 Janvier 2019)

Pickis a dit:


> D'un coté j'ai des dossiers photos classé par classe, de l'autre une liste des noms et prénoms au format excel.





Pickis a dit:


> Je regarde tout ça car je suis pas du tout informaticien, a savoir que sur mac j'utilise Numbers, faut il impérativement travailler sous excel?



Quel est donc le format de ton fichier ? Peux-tu l'enregistrer en csv ?


----------



## Pickis (1 Janvier 2019)

ecatomb a dit:


> Quel est donc le format de ton fichier ? Peux-tu l'enregistrer en csv ?


les écoles me les file sous forme xlsx. et moi je les consultes sous numbers.


----------



## Membre supprimé 1129907 (1 Janvier 2019)

Je viens de tester, number permet bien d'ouvrir ces fichiers et de les exporter au format csv.
Après, il risque de rajouter des colonnes ou des lignes en plus ...


----------



## Pickis (1 Janvier 2019)

ecatomb a dit:


> Je viens de tester, number permet bien d'ouvrir ces fichiers et de les exporter au format csv.
> Après, il risque de rajouter des colonnes ou des lignes en plus ...


Je regarde pour ton fichier comment je peu m'en sortir si je comprend rien je reviens vers toi. Merci


----------



## Membre supprimé 1129907 (1 Janvier 2019)

Il faudrait que je vois pour l'utiliser avec automator ou autre. Cela te permettrait d'avoir moins d'actions à faire ...


----------



## Pickis (1 Janvier 2019)

ecatomb a dit:


> Il faudrait que je vois pour l'utiliser avec automator ou autre. Cela te permettrait d'avoir moins d'actions à faire ...


Ba la ça serai niquel, car c'est le but automatiser a Max. Je te laisse voir alors..........


----------



## Membre supprimé 1129907 (1 Janvier 2019)

Script shell final qui prend en argument le fichier au format csv (trois colonnes séparées par des points virgule : nom, prénom, fichier) et le répertoire contenant les images à renommer

```
#!/bin/bash

fichier_csv="$1"
repertoire_photo="$2"

if [ ! -d "${repertoire_photo}" ];then
echo "Répertoire incorrect";
exit 1
fi

cd "${repertoire_photo}"
(cat "${fichier_csv}" ; echo "") | while IFS=";" read -r nom prenom fichier
do
  if [ "${nom}" != "" ] && [ "${prenom}" != "" ] && [ "${fichier}" != "" ]
  then
    mv "${fichier}" "${nom}.${prenom}.jpg"
  fi
done
```

Fichier automator "Renommer_images.app" disponible via un lien google drive que je t'envoi par mp
Prévient moi quand tu l'as récupéré que je supprime le partage

Il te suffira de lancer le fichier automator et de sélectionner le fichier csv et le répertoire. Il exécutera tout seul le script shell.
Mais fait une sauvegarde du répertoire avant de lancer le script automator. On n'est jamais trop prudent.


----------



## Membre supprimé 1129907 (2 Janvier 2019)

N’hésite pas à ouvrir le fichier avec automator et éventuellement modifier le répertoire ouvert par défaut. Ce sera sans doute plus simple d’en utiliser un où tu as ton fichier et tes photos (moins de clic à faire)


----------



## Pickis (2 Janvier 2019)

Fichier bien récupérer merci. 
Pour lancer le process je vais dans le dossier MacOs et la je double clique sur "Application Stub"
Il me demande le Fichier CSV, je clique sur le fichier CSV, ensuite il me demande le dossier des images je clique sur le dossier de la classe et la il me met erreur.
	

		
			
		

		
	






voici peut être le détail pour que tu puisse détecter l'erreur :


----------



## Membre supprimé 1129907 (2 Janvier 2019)

Sans doute des droits nécessaires pour automator (dans accessibilité).
Je regarderai ça ce soir si une solution n’a pas été trouvée d’ici là


----------



## Membre supprimé 1129907 (2 Janvier 2019)

Trouvé 

Dans les "préférences système", "sécurité et confidentialité", va sur l'onglet "confidentialité".
Ensuite, sélectionne "accessibilité" et coche "automator".

Ensuite, le fichier d'automator devrait pouvoir fonctionner correctement (à confirmer)


----------



## Pickis (2 Janvier 2019)

ecatomb a dit:


> Trouvé
> 
> Dans les "préférences système", "sécurité et confidentialité", va sur l'onglet "confidentialité".
> Ensuite, sélectionne "accessibilité" et coche "automator".
> ...


Fait........mais ça marche pas.......en faite des le début quand tu regardes la petite fenêtre blanche il dit impossible d'ouvrir le fichier "Automator Lancher.app" y a un soucis la je pense, il doit me manqué quelques un truc que je fais pas.


----------



## Membre supprimé 1129907 (2 Janvier 2019)

C'est bien possible sauf que moi, je n'ai que Automator.app ...
Lance Automator et s'il s'ouvre bien, choisi "ouvrir un document" et sélectionne mon fichier


----------



## Pickis (3 Janvier 2019)

ecatomb a dit:


> C'est bien possible sauf que moi, je n'ai que Automator.app ...
> Lance Automator et s'il s'ouvre bien, choisi "ouvrir un document" et sélectionne mon fichier


Quand j'ouvre Automator j'ai cette fenêtre la : 





Photo1.

Ensuite ton document se présente comme ça :




Photo2

Le document "document.wflow" quand je clique dessus ne marche pas, et quand je passe par automator la Photo1 que tu vois je peu pas le sélectionner, je peu rien sélectionner d'ailleurs par automator.
Le seul moyen que j'ai trouver pour faire qq chose c'est ce que je fais depuis le début c'est de passer en direct en cliquant sur ce fichier la qui se trouve dans MacOs mais qui au final plante.....




Photo3

Voila les dernières news...desolé


----------



## Membre supprimé 1129907 (3 Janvier 2019)

Ah! Google drive ne partage pas le fichier en tant que fichier mais comme un répertoire 

Bon, je le compresse ce soir et je t’envoi le nouveau lien ...


----------



## Membre supprimé 1129907 (3 Janvier 2019)

Lien pour le fichier compressé en zip envoyé par mail.
Décompresse le zip, lance automator et ouvre le fichier "Renommer_images.app"
Cela te permettra de voir qu'il correspond bien au script que j'ai mis ici et tu pourras le lancer 

Simple habitude à avoir pour la sécurité


----------



## Pickis (4 Janvier 2019)

ecatomb a dit:


> Lien pour le fichier compressé en zip envoyé par mail.
> Décompresse le zip, lance automator et ouvre le fichier "Renommer_images.app"
> Cela te permettra de voir qu'il correspond bien au script que j'ai mis ici et tu pourras le lancer
> 
> Simple habitude à avoir pour la sécurité


OK bien reçu......mais ça ne marche tjrs pas, mais j'ai l'impression que l'on avance.
Si je le lance en direct il me dit Erreur Script Shell.
Par contre quand je lance dans Automator voila ce qu'il me met :




(Ne t'inquietes pas les noms sont bidons j'ai fais le test que sur 4 photos.)


----------



## Pickis (4 Janvier 2019)

Pickis a dit:


> OK bien reçu......mais ça ne marche tjrs pas, mais j'ai l'impression que l'on avance.
> Si je le lance en direct il me dit Erreur Script Shell.
> Par contre quand je lance dans Automator voila ce qu'il me met :
> Voir la pièce jointe 129121
> ...



Voila j'ai compris mais......
Mon tableau comporte 3 colonnes Nom, Prénom, Classe.
j'ai refais le même tableau en supprimant la 3eme colonne c'est a dire celle de la classe.
et la plus de message d'erreur, voici ce que me met l'ordi :
	

		
			
		

		
	





En passant en direct.

Et la c'est par Automator :




Mais....au final ça change rien mes fichiers photos n'ont pas changé de noms.....


----------



## Membre supprimé 1129907 (4 Janvier 2019)

Donc une erreur sur la lecture ou le nom du fichier ...
Peux-tu regarder dans le fichier csv quelle est la valeur dans la 3ème colonne pour l’un de tes exemples ?


----------



## Pickis (4 Janvier 2019)

ecatomb a dit:


> Donc une erreur sur la lecture ou le nom du fichier ...
> Peux-tu regarder dans le fichier csv quelle est la valeur dans la 3ème colonne pour l’un de tes exemples ?



Voila :




je me suis amuser a modifier le script en rajoutant la troisième colonne j'ai plus le message d'erreur mais ça modifie toujours pas. voila ce que j'ai fais :

#!/bin/bash

fichier_csv="$1"
repertoire_photo="$2"

if [ ! -d "${repertoire_photo}" ];then
echo "Répertoire incorrect";
exit 1
fi

cd "${repertoire_photo}"
(cat "${fichier_csv}" ; echo "") | while IFS=";" read -r nom prenom classe fichier
do
  if [ "${nom}" != "" ] && [ "${prenom}" != "" ] && [ "${classe}" != "" ] && [ "${fichier}" != "" ]
  then
    mv "${fichier}" "${nom}.${prenom}.${classe}.jpg"
  fi
done

Je te precise que j'ai simplement travailler par déduction car je ni connais rien. donc me gronde pas !  si j ai fais une bêtise.


----------



## Membre supprimé 1129907 (4 Janvier 2019)

Ta modification est correcte
Le « \r » doit correspondre au retour-chariot Windows. Bizarre que tu en ais un si tu le crées sur ton mac ...

Modifie cette ligne :

```
(cat "${fichier_csv}" ; echo "") | sed 's/\r//g' | while IFS=";" read -r nom prenom classe fichier
```

Après, la classe a-t-elle une influence sur le répertoire contenant les fichiers ?


----------



## Pickis (4 Janvier 2019)

ecatomb a dit:


> Ta modification est correcte
> Le « \r » doit correspondre au retour-chariot Windows. Bizarre que tu en ais un si tu le crées sur ton mac ...
> 
> Modifie cette ligne :
> ...



Voila ligne rectifié, mais toujours au meme point....desolé.
Pour la classe oui car sa sera la phase 2 de mon projet, car l'idée étant d'optimiser un maximum la tache, je veux pouvoir renommer l'école d'un coup sans le faire classe par classe. (chose que je faisais déjà sous windows via un logiciel que ma boite payais tout les ans via une licence). n'étant plus dans cette société il faut que je trouve des solutions pour devenir autonome.
Peut être qu'il faudrait que je t'envoies a mon tour mon tableau et qq fichiers photos pour que tu voies un peu l'idée.


----------



## Membre supprimé 1129907 (4 Janvier 2019)

Envoie moi juste ton tableau en remplaçant les noms,prénom etc... 
Met simplement « nom », etc ... à la place


----------



## Membre supprimé 1129907 (7 Janvier 2019)

Suite à nos échange en mp, voici une version qui devrait être fonctionnelle. Par contre, il faut :
• que le sous-répertoire avec le nom de classe existe bien
• que les photos soient bien dans l'ordre


```
#!/bin/bash

fichier_csv="$1"
repertoire_photo="$2"

if [ ! -d "${repertoire_photo}" ];then
echo "Répertoire incorrect";
exit 1
fi

cd "${repertoire_photo}"
classe_old=""

sed $'s/\r//g' "${fichier_csv}" | while IFS=";" read -r nom prenom classe
do
if [ "${nom}" != "" ] && [ "${prenom}" != "" ] && [ "${classe}" != "" ]
then
  if [ "${classe_old}" != "${classe}" ]
  then
    compteur_photo=0
  fi

  classe_old=${classe}
  compteur_photo=$((compteur_photo + 1))

  fichier=$(ls "${repertoire_photo}/${classe}" | head -${compteur_photo} | tail -1)
  mv "${repertoire_photo}/${classe}/${fichier}" "${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg"
fi
done
```


----------



## Pickis (8 Janvier 2019)

Alors Ca marche met un petit peu... on avance !!
J'ai remplacer ton script en lieu et place de l'ancien. Lorsque que j'arrive a la phase "Dossier des Images" je clique sur le dossier "Indiv". Il mouline et me renomme qu'une seule photo et pas avec le bon Numéro.
il me renomme a chaque fois la première photo de la classe 6°B avec le numéro de la seconde (photo a l'appui)




PS: J'ai renommé les photos 6°A 1A =01 2A=02, 6°B 1B=03 2B=04. (pour avoir des numéros plus simple)
Voila.....desolé ! mais tu est pas loin j'en suis sur...


----------



## Membre supprimé 1129907 (13 Janvier 2019)

Chez moi, cela fonctionne ...
"fichier_csv" était "/Users/***/Downloads/Ecole Trucmuche/Listing/Liste.csv"
"repertoire_photo" était "/Users/***/Downloads/Ecole Trucmuche/Indiv"

A noter que tu as un répertoire "6°A.jpg" dans ton fichier csv de test au lieu de "6°A" 

J'ai rajouté la ligne "echo mv..." dans la version ci-dessous pour qu'on ait un peu plus d'info sur ton erreur ...

```
#!/bin/bash

fichier_csv="$1"
repertoire_photo="$2"

if [ ! -d "${repertoire_photo}" ];then
echo "Répertoire incorrect";
exit 1
fi

cd "${repertoire_photo}"
classe_old=""

sed $'s/\r//g' "${fichier_csv}" | while IFS=";" read -r nom prenom classe
do
if [ "${nom}" != "" ] && [ "${prenom}" != "" ] && [ "${classe}" != "" ]
then
  if [ "${classe_old}" != "${classe}" ]
  then
    compteur_photo=0
  fi

  classe_old=${classe}
  compteur_photo=$((compteur_photo + 1))

  fichier=$(ls "${repertoire_photo}/${classe}" | head -${compteur_photo} | tail -1)
  echo mv "${repertoire_photo}/${classe}/${fichier}" "${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg"
  mv "${repertoire_photo}/${classe}/${fichier}" "${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg"
fi
done
```


----------



## Membre supprimé 1129907 (15 Janvier 2019)

J'ai oublié que la sortie du script ne sera pas visible ...
Donc voici une meilleure version permettant d'avoir un fichier de log 


```
#!/bin/bash

fichier_csv="$1"
repertoire_photo="$2"

if [ ! -d "${repertoire_photo}" ];then
echo "Répertoire incorrect";
exit 1
fi

cd "${repertoire_photo}"
classe_old=""

sed $'s/\r//g' "${fichier_csv}" | while IFS=";" read -r nom prenom classe
do
if [ "${nom}" != "" ] && [ "${prenom}" != "" ] && [ "${classe}" != "" ]
then
  if [ "${classe_old}" != "${classe}" ]
  then
    compteur_photo=0
  fi

  classe_old=${classe}
  compteur_photo=$((compteur_photo + 1))

  fichier=$(ls "${repertoire_photo}/${classe}" | head -${compteur_photo} | tail -1)
  echo -n "Renommer ${repertoire_photo}/${classe}/${fichier} en ${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg ... " >> "${fichier_csv}.log"
  mv "${repertoire_photo}/${classe}/${fichier}" "${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg"
  if [ $? -eq 0 ]
  then echo ok >> "${fichier_csv}.log"
  else echo ko >> "${fichier_csv}.log"
  fi
fi
done
```

Une fois le script lancé, tu auras un fichier de log au même endroit que le fichier csv.
Le contenu sera le suivant. ok ou ko à la fin de la ligne suivant le résultat du renommage

```
Renommer /Users/***/Downloads/Ecole Trucmuche/Indiv/6°A/IMGM9430 4.JPG en /Users/***/Downloads/Ecole Trucmuche/Indiv/6°A/A.1.6°A.jpg ... ok
Renommer /Users/***/Downloads/Ecole Trucmuche/Indiv/6°A/IMGM9430.JPG en /Users/***/Downloads/Ecole Trucmuche/Indiv/6°A/A.2.6°A.jpg ... ok
Renommer /Users/***/Downloads/Ecole Trucmuche/Indiv/6°B/IMGM9430 2.jpg en /Users/***/Downloads/Ecole Trucmuche/Indiv/6°B/B.1.6°B.jpg ... ok
Renommer /Users/***/Downloads/Ecole Trucmuche/Indiv/6°B/IMGM9430 3.JPG en /Users/***/Downloads/Ecole Trucmuche/Indiv/6°B/B.2.6°B.jpg ... ok
```


----------



## Pickis (22 Janvier 2019)

Voila mon fichier
j'ai toujours qu'un seul fichier qui change de non le B.2.6°B.jpg.
le B.1.6°B.jpg malgré que la ligne tu marque OK le non ne change pas.


----------



## Membre supprimé 1129907 (22 Janvier 2019)

Je récupérais la liste des fichiers présent dans le répertoire à chaque fois avant d'en renommer un, forcément ...
D'où le "03.jpg" renommé en "B.1.6°B.jpg" puis en "B.2.6°B.jpg"
La version suivante devrait résoudre ce bug.

Je stocke la liste des fichiers présents (jpg uniquement) dans ton répertoire dans un fichier temporaire "liste_image.tmp". Cela évitera de traiter des fichiers cachés ou autre.
Ce fichier tmp pourra être effacé et sera dans le répertoire des images.
En prime, les logs seront plus détaillées (et le fichier de log écrasé à chaque passage).


```
#!/bin/bash

fichier_csv="$1"
repertoire_photo="$2"

if [ ! -d "${repertoire_photo}" ];then
echo "Répertoire incorrect";
exit 1
fi

cd "${repertoire_photo}"
classe_old=""

echo "Fichier de log" > "${fichier_csv}.log"
sed $'s/\r//g' "${fichier_csv}" | while IFS=";" read -r nom prenom classe
do
if [ "${nom}" != "" ] && [ "${prenom}" != "" ] && [ "${classe}" != "" ]
then
  if [ "${classe_old}" != "${classe}" ]
  then
    compteur_photo=0
    ls "${repertoire_photo}/${classe}" | egrep -i "\.jpg$" > "${repertoire_photo}/liste_image.tmp"
    echo "" >> "${fichier_csv}.log"
    echo "Liste des fichiers du répertoire ${repertoire_photo}/${classe} :" >> "${fichier_csv}.log"
    cat "${repertoire_photo}/liste_image.tmp" >> "${fichier_csv}.log"
    echo "" >> "${fichier_csv}.log"
  fi

  classe_old=${classe}
  compteur_photo=$((compteur_photo + 1))

  fichier=$(head -${compteur_photo} "${repertoire_photo}/liste_image.tmp" | tail -1)
  echo -n "Renommer ${repertoire_photo}/${classe}/${fichier} en ${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg ... " >> "${fichier_csv}.log"
  mv "${repertoire_photo}/${classe}/${fichier}" "${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg"
  if [ $? -eq 0 ]
  then echo ok >> "${fichier_csv}.log"
  else echo ko >> "${fichier_csv}.log"
  fi
fi
done
```


----------



## iDanGener (23 Janvier 2019)

Pickis a dit:


> Voir la pièce jointe 129756
> 
> Voila mon fichier
> j'ai toujours qu'un seul fichier qui change de non le B.2.6°B.jpg.
> le B.1.6°B.jpg malgré que la ligne tu marque OK le non ne change pas.



Bonjour,

Et pourquoi ma solution proposée le 27 décembre ne vous convenait-elle pas?  D'après-moi, le 28 décembre tout aurait été fini.

Daniel


----------



## baron (23 Janvier 2019)

J'imagine que tu parles de ce message (chez moi, il s'affiche comme ayant été posté le 28) :
https://forums.macg.co/threads/reno...fichier-excel-sous-mac.1311308/#post-13368736


----------



## Pickis (23 Janvier 2019)

iDanGener a dit:


> Bonjour,
> 
> Et pourquoi ma solution proposée le 27 décembre ne vous convenait-elle pas?  D'après-moi, le 28 décembre tout aurait été fini.
> 
> Daniel


J'ai essayé également, mais j'ai pas réussi a l'époque.


----------



## zeltron54 (24 Janvier 2019)

@Pickis 
Bonjour,
Si le problème n'est toujours pas résolu...
Peux-tu nous dire ce que contiennent les cellules du fichiers excel. J'ai cru comprendre (à confirmer) :  Nom en colonne A, Prenom en colonne B, Le nom du dossier qui contient l'image en colonne C. ?
Tous les dossiers images sont dans un dossier (trombi) ?
Les images dans le dossier sont dans l'ordre de la liste excel. ?
Chaque dossier image d'une classe ne contient que des images et en nombre égal à la liste d' excel ?

Il faut renommer les fichiers image existant ou les copier-coller ailleurs en les renommant ?

Avec confirmation de ces données on peut envisager un petit applescript.


----------



## Membre supprimé 1129907 (24 Janvier 2019)

Nom;prénom;classe

La classe correspondant aussi au sous-dossier contenant les images. Par contre, aucune relation entre le nom de l’image et le nom/prénom de l’élève... Donc on se base sur l’ordre alphabétique.

J’ai un léger doute sur le contenu du répertoire, peut-être des fichiers parasites (d’où mes dernières modifications).

Perso, je les renomme dans le dossier. Mais effectivement les copier ailleurs est sans doute préférable par sécurité.

A voir si ma dernière version du script shell a résolu les derniers soucis ou non


----------



## zeltron54 (24 Janvier 2019)

Coucou ecatomb
Ok donc ma déduction à l'air correcte. J'attends donc la réponse de Pickis pour savoir si il à réussi avec ton script, sinon je lui ferais un petit applescript, si ça l'intéresse.


----------



## Pickis (24 Janvier 2019)

Donc petite avancé j'ai 2 images qui sont bien renommés dans la classe de 6°B. Pour la 6°A par contre non. Voici le résultats de ton fichier Log.


----------



## Membre supprimé 1129907 (24 Janvier 2019)

Qu'as-tu dans la 6°A ? A priori aucun fichier avec l'extension "jpg" ...


----------



## Pickis (24 Janvier 2019)

ecatomb a dit:


> Qu'as-tu dans la 6°A ? A priori aucun fichier avec l'extension "jpg" ...


J'ai mes fichiers d'origine soit 01.jpg et 02.jpg


----------



## Membre supprimé 1129907 (24 Janvier 2019)

Tu dois avoir un problème avec tes fichiers... Sinon ils seraient listés...

Va dans le répertoire 6°A via le terminal et teste les deux commandes :
ls
ls *.jpg

Affichent-elles les mêmes fichiers jpg ?


----------



## Pickis (1 Février 2019)

ecatomb a dit:


> Tu dois avoir un problème avec tes fichiers... Sinon ils seraient listés...
> 
> Va dans le répertoire 6°A via le terminal et teste les deux commandes :
> ls
> ...


Alors le répertoire 6°A il veut pas me le trouver via le terminale par contre celui de la 6°B oui.


----------



## Membre supprimé 1129907 (1 Février 2019)

Donc le problème vient du nom du répertoire 6°A ... Il doit y avoir quelque chose qui cloche (droits ou autre).
Je donne ma langue au chat


----------



## baron (1 Février 2019)

Ce serait peut-être plus simple avec un nom sans caractères spéciaux (6eA et 6eB) ?


----------



## zeltron54 (4 Février 2019)

@ Pickis  Bonjour,
Je peux tu proposer un applescript qui te demande de choisir le fichier EXCEL contenant la liste des noms, puis de choisir le dossier contenant les dossiers images.
Ce script vérifie que le nombre de nom par classe dans le script correspond au nombre de fichiers images dans le dossier correspondant s'il existe, si oui il renomme sinon il crée un fichier erreurs.txt sur le bureau mentionnant l'erreur trouvé (une erreur par ligne).
Tiens moi au courant.


```
tell application "Finder"
    set laliste to choose file with prompt "Sélectionnez le fichier liste"
    set chemin to laliste as string
    set votreChoix to choose folder with prompt "Sélectionnez le dossier Images"
    set votreChoix to votreChoix as string
end tell


tell application "Numbers" --Ouvre le fichier dans Numbers et compte les lignes
    open file chemin
  
    tell table 1 of sheet 1 of front document --"fichierxlsx"
        set lignedeb to 2
        set dern to row count
      
        repeat -- boucle si le dossier image est le même
            set i to lignedeb
            set lig to i as string
            set lacel to "c" & lig
            set ledossier to value of cell lacel as string
          
            repeat
                set i to i + 1
                if i > dern then
                    exit repeat
                end if
                set lig to i as string
                set lacel to "c" & lig
                set ledossier2 to value of cell lacel
              
                if ledossier2 = ledossier then
                else
                    exit repeat
                end if
            end repeat
            set nb to i - lignedeb
            set nombre to nb as string
            tell application "Finder" --recupère le nom dossier, les nom associés et la liste d'image
                set ledossierim to votreChoix & ledossier
              
              
                if exists ledossierim then
                    set liste_Fichiers to files of folder (ledossierim as alias)
                    set nbf to count liste_Fichiers
                  
                    set nnb to nb as string
                    set nnbf to nbf as string
                else
                    set lelog to open for access ((path to desktop folder as text) & "les erreurs.txt") as text with write permission
                    write "le dossier image " & ledossier & "  n'existe pas" & return to lelog starting at eof
                    close access lelog
                    set nbf to 0
                end if
              
              
            end tell
            if nb = nbf then
                set laligne to lignedeb as string
                set lefich to 1
                repeat nb times
                    set lacellule to "a" & laligne
                    set lenom to value of cell lacellule as string
                    set lacellule to "B" & laligne
                    set leprenom to value of cell lacellule as string
                    set arenom to item lefich of liste_Fichiers
                    set arenom to arenom as string
                    tell application "Finder"
                        set le1 to item lefich of liste_Fichiers
                        set lextension to name extension of le1
                      
                        set name of file arenom to lenom & "_" & leprenom & "_" & ledossier & "." & lextension
                        set laligne to laligne + 1
                        set lefich to lefich + 1
                    end tell
                end repeat
            else
                -- Ecrit un fichier erreur sur le bureau si nombre d'image différent du nombre de nom dans la liste
                set lelog to open for access ((path to desktop folder as text) & "les erreurs.txt") as text with write permission
                write "Le fichier Excel contient " & nb & " Nom et le dossier image " & ledossier & "  " & nbf & " fichiers" & return to lelog starting at eof
                close access lelog
            end if
            set lignedeb to i
            if lignedeb ≥ dern then
                exit repeat
            end if
          
        end repeat
      
    end tell
  
end tell
tell application "Numbers"
    quit
end tell
tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## Pickis (14 Mars 2019)

Bonjour, désolé pour cette absence.
Je reviens vers toi Zeltron54 concernant l'applescript.
Peut tu me dire la démarche a suivre pour installé ton code.
Merci.
Et surtout encore un grand merci a Ecatomb, qui a vraiment pris du temps pour moi.
Merci a vous tous.


----------



## zeltron54 (14 Mars 2019)

Bonjour,
Tu ouvres l'application Editeur de script qui est dans application=>utilitaires
Dans la fenêtre qui s'ouvre tu fais un copier, coller du script ci-dessus.
Tu cliques sur exécuter, un fenêtre s'ouvre te demandant de choisir le fichier de la liste (fichier excel), après validation une autre fenêtre s'ouvre te demandant de choisir le dossier des images.

Le script ouvre le fichier excel avec numbers, vérifie si le nombre de nom dans une classe est le même que le nombre de fichiers dans le dossier de cette classe, si oui renomme, si non il crée un fichier texte erreurs sur le bureau.
Lorsqu'il a terminé il te met un message de fin.

PS: Il est bien sur conseiller de travailler avec une  copie du dossier des images afin d'éviter tous problèmes.


----------

