Bonsoir, l'écriture du script a pris plus de temps que prévu. En effet, une première version s'est avérée trop lente (elle utilisait le mot clé AppleScript « offset » pour chercher un caractère dans une chaîne de caractère) ; ma version est encore lente sur de longs textes, mais quand-même bien plus rapide que la première version. Il serait sans doute possible d'encore accélérer le traitement, en traitant des chaînes de caractère bruts. J'ai toutefois fait le choix de traiter le texte dans Pages en conservant leurs attributs de polices, couleur, formatage. Cela ralentit le traitement, mais correspond sans doute plus à ce qui est recherché.
Venons-en à quelques prérequis logiciels avant d'installer le script sur l'ordinateur.
Dans les Préférences Système, cliquer sur la rubrique Accessibilité, et cocher au bas la case « Activer l'accès pour les périphériques d'aide ». En fait, cela permettra à AppleScript de simuler l'appui sur une combinaison de touches qui désélectionnera la sélection de texte sur laquelle on souhaite transformer les majuscules en minuscules. Il ne serait pas indispensable que le script désélectionne la sélection, mais c'est mieux esthétiquement (pour une raison dont j'ignore la cause, pour chaque caractère remplacé dans la sélection, la fin de la sélection est diminuée d'un caractère, ce qui donne l'impression que la sélection n'est pas complète. Or, une fois que le script a enregistré la sélection, ce qui est fait au début avant le remplacement des caractères, il n'est plus nécessaire que la sélection soit affichée).
Il s'agit maintenant d'activer le menu Script dans la barre des menus. Pour cela, aller dans /Applications/Utilitaires et lancer le logiciel « Éditeur AppleScript ». Aller dans le menu « Éditeur AppleScript » du logiciel et choisir « Préférences... ». Dans la rubrique « Général » des préférences, cocher au bas la case « Afficher le menu des scripts dans la barre des menus ». La case « Afficher les scripts de l'ordinateur » peut être laissée décochée, elle ne nous servira pas ici.
Une fois ceci fait, une icône supplémentaire (icône Script) apparait sur la partie droite de la barre des menus, en forme de S stylisé sous forme de parchemin.
Il reste encore une petite étape à réaliser. Ouvrez Pages, puis cliquez sur l'icône Script dans la barre des menus, et choisissez « Ouvrir le dossier Scripts > Ouvrir le dossier Scripts Pages ». Cela crée un dossier Pages dédié aux scripts accessibles depuis l'application Pages, et ouvre une fenêtre du Finder affichant un dossier Pages contenu dans un dossier Applications, contenu dans un dossier Scripts, contenu dans le dossier Bibliothèque de l'utilisateur (depuis Lion, ce dossier est par défaut masqué à l'utilisateur).
Il s'agira d'enregistrer le script qui va suivre dans ce dossier Pages de la Bibliothèque de l'utilisateur.
On retourne dans l'Éditeur AppleScript, et si une fenêtre blanche n'est pas présente, on va dans Fichier > Nouveau pour en créer une.
Dans cette fenêtre blanche, on colle le code qui suit (dans la zone blanche du haut) :
Bloc de code:
-- Ce script traite la sélection d'une ou plusieurs zones de texte dans Pages en transformant les majuscules en minuscules
set maj to "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÂÄÇÉÊÈËÎÏÔÖÙÛÜÆ" --(liste provenant en partie de : http://fr.wikipedia.org/wiki/Diacritiques_utilisés_en_français ; ä est utilisé pour Länder, ö pour angström)
set min to "abcdefghijklmnopqrstuvwxyzàâäçéêèëîïôöùûüÿæ"
-- On définit des variables globales afin qu'elles soient accessibles dans les fonctions MVm et MajVersMin définies plus loin.
global lmaj, lmin, L0
global off
-- liste des valeurs Unicode des chaines amj et min
set {lmaj, lmin} to {id of maj, id of min}
set L0 to count of lmaj -- nombre d'éléments des 2 listes
tell application "Pages"
set selec to selection -- on enregistre la sélection
end tell
-- On désélectionne la sélection
tell application "System Events"
tell application "Pages" to activate -- il faut que Pages soit au premier plan pour que l'appui simulé des touches lui soit adressé
keystroke "a" using {command down, shift down}
end tell
if class of selec is list then -- si la sélection contient plusieurs blocs séparés (dans ce cas, selec est sous forme de liste)
set cnt to count of selec -- le nombre d'élements discontinus sélectionnés
repeat with i from 1 to cnt -- pour chaque élément discontinu de la sélection
set select_i to item i of selec -- on nomme select_i l'élément i de la sélection
MajVersMin(select_i) -- on appelle la fonction de traitement des majuscules qui agira sur l'élément i de la sélection
end repeat
else -- sinon, si la sélection ne comporte qu'un élément (ou zéro)
MajVersMin(selec)
end if
beep -- signal sonore
display dialog "Traitement terminé." buttons {"OK"} default button {"OK"}
on MajVersMin(laSelect)
try -- On essaye. En cas d'erreur (une erreur survient si l'on ne sélectionne rien ou autre chose que du texte), la routine "on error" est exécutée
tell application "Pages"
set len to length of laSelect -- la longeur de la sélection (nombre de caractères)
set off to character offset of laSelect -- le numéro de position du premier caractère de la selection
set str to contents of laSelect -- la chaîne de caractères (string en anglais) sélectionée
end tell
repeat with j from 1 to len -- pour tous les caractères de la chaîne
set caract to character j of str -- le caractère particulier étudié
set cod to id of caract
MVm(cod, j)
end repeat
on error message number num --en cas d'erreur (sélection vide, sélection autre que texte)
--on ne fait rien (il n'y a pas de données à traiter)
end try
end MajVersMin
on MVm(nbre, jj)
if (nbre < 65) or (nbre > 90 and nbre < 192) then --("A" vaut 65 et "Z" vaut 90)
return
end if
repeat with k from 1 to L0
if (item k of lmaj) is equal to nbre then
set c to character id (item k of lmin)
tell application "Pages"
--on ne peut pas utiliser l'expression "character id" à l'intérieur du bloc « tell app "Pages" » car « id » et « character » sont des mots-clés du dictionnaire AppleScript de Pages.app ; c'est pourquoi on l'a mis en-dehors.
set character (off + jj - 1) of body text of document 1 to c
end tell
exit repeat
end if
end repeat
return
end MVm
Pour vérifier que le code est correct, l'appui sur le bouton « Compiler » va mettre le code syntaxiquement en couleurs. Normalement, il ne devrait pas y avoir de message d'erreur.
Il reste à enregistrer le script. Ceci se fait, non pas avec le bouton « Enregistrer » de l'Éditeur AppleScript (ce bouton sert en fait à enregistrer dans un script certaines actions réalisées dans l'interface graphique, ce qui ne nous est d'aucune utilité ici), mais avec le menu « Fichier > Enregistrer... ». Une fenêtre d'enregistrement apparait. Pour le nom, j'ai choisi « MAJUS vers minus », et pour l'extension, je garde le choix par défaut .scpt qui correspond au format de fichier « Script » affiché dans le menu plus bas. Si le dossier (par défaut masqué depuis Lion) Bibliothèque de l'utilisateur n'a pas été placé préalablement dans les favoris de la barre latérale du Finder, le mieux est d'enregistrer sur script sur le Bureau, puis de le déplacer avec le Finder à l'emplacement suivant : ~/Bibliothèque/Scripts/Applications/Pages (il s'agit de l'emplacement obtenu précédemment avec la commande « Ouvrir le dossier Scripts > Ouvrir le dossier Scripts Pages » du menu Script, lorsqu'on est dans l'application Pages).
Une fois le script placé dans le dossier mentionné plus haut, il suffira dans un document Pages de sélectionner une ou plusieurs parties de texte, puis dans le menu Script de choisir « MAJUS vers minus » si l'on a nommé ainsi le script.
À la fin du traitement, un bip retentit, et un message s'affiche.
Voilà, j'espère que ce script te sera utile

.