Applescript et Numbers

Beullèle

Membre confirmé
25 Octobre 2015
17
0
54
Bonjour à tous,

Je m'intéresse à Applescript et je souhaite créer mon premier script pour manipuler des tableaux.
Dans un premier temps, je souhaite mettre en sur brillance les cellules dont la valeur est intérieure à 55.
Voici ce que j'ai écrit:
[B]tell[/B] [I]application[/I] "Numbers" [B]activate[/B] [B]tell[/B] [B]the[/B] [B]first[/B] [I]table[/I] [B]of[/B] [B]the[/B] active sheet [B]of[/B] [I]document[/I] 1 [B]set[/B] SelectionRange [B]to[/B] [I]range[/I] "B5:D42" If value of SelectionRange < 55 then background color = {255,0,0} end if [B]end[/B] [B]tell end[/B] [B]tell[/B]


Et voici le résultat:

1705062476599.png

La sélection seule fonctionne bien (B5,42), mais le reste.....
J'ai fait des tas de recherche, je ne trouve pas la solution....
Quelqu'un peut il m'aiguiller, qu'est ce qui cloche???
Merci merci merci!!!!
 

Fichiers joints

  • 1705062710469.png
    1705062710469.png
    49,1 KB · Affichages: 1
Bonjour,
Beaucoup de choses qui cloche ! :D
La recherche de valeur se fait sur une cellule, pas sur une sélection, if faudra faire une boucle sur toutes les cellules pour lire la valeur de chacune et agir en conséquence... les valeurs de couleur dans numbers sont {65535,65535,65535} pas {255,255,255} ...

Voilà un lien qui devrait t'aider à démarrer .
 
Bonjour @zeltron54 et merci pour ta réponse.
Beaucoup de choses qui clochent en si peu de ligne... y'a du travail!!! :D
Dommage qu'on ne puisse pas faire une recherche sur une sélection.... je vais aller voir ton lien, j'ai bien envie d'en apprendre un peu plus sur AS, et j'ai des projets qui vont me faciliter la vie!!!
 
je souhaite mettre en sur brillance les cellules dont la valeur est intérieure à 55
Bonjour,
Bon courage, cela fait un moment que je veux bosser un peu AppleScript, mais n’ayant pas de réel projet en vue, je procrastine…
Accessoirement, la mise en forme recherchée peut se faire sans script, avec une mise en forme conditionnelle directement dans Numbers.
 
Oui bien sûr, mais j’ai régulièrement des tableaux à analyser, toujours de la même manière, ça me fait un projet
Une petite appli, je glisse mes tableaux dessus, et hop !!!
 
Ben c'est pas gagné, je ne suis même pas foutu de récupérer la valeur d'une cellule....
Y'a du boulot!!!
Je suis en train de parcourir le site qu'a mentionné @zeltron54 , j'y apprends plein de chose, mais pas ce que je veux!!! :D
 
Un petit script pour t'aider à comprendre la lecture d'une sélection et de cellules dans numbers.
Le script lit le fichier ouvert affiché...
En espérant que cela puisse t'aider un peu !

Bloc de code:
tell application "Numbers"
    activate
    tell the first table of the active sheet of front document
        set LaSelection to selection range
        set Lacellule to name of cell 1 of LaSelection -- nom de la cellule 1 de la selection
        display dialog "Nom de la première cellule : " & Lacellule

        set a to name of LaSelection
        set b to name of cell of LaSelection -- liste des cellule dans une variable liste
        display dialog "Nom de la sélection : " & a -- nom de la selection
        display dialog "Liste des cellules de la sélection : " & b as string -- affiche la liste en string
       
        set colonne to name of column of cell 1 of LaSelection -- obtient le nom de la première colonne de la sékection
        display dialog "colonne de la première cellule : " & colonne
       
        set ligne to address of first item of rows of selection range --obtient le numero de la première ligne de la selection
        display dialog "ligne de la première cellule : " & ligne
       
        set valeurCellule to value of cell Lacellule
        display dialog "valeur de la première cellule de la selection : " & valeurCellule
       
        --Pour trier
        set LaSelection to selection range --obtient le chemin de la sélection
        sort by column colonne direction descending in rows LaSelection -- descending pour un tri décroissant ou ascending (par défaut si pas renseigné) pour un tri croissant) de la colonne A
        display dialog "la sélection à été trié suivant la colonne " & colonne & " en décroissant"
       
    end tell
end tell
 
Dernière édition:
Bonjour,
Je te met un script qui fait ta demande du post #1
il met les cellules dont la valeur est inférieur à 55 en rouge. J'ai ajouter des commentaires pour chaque ligne...
Cela pour comprendre , car dans ce cas, comme dit par @Gerapp38, il est plus simple de mettre une mise en forme conditionnelle.

Bloc de code:
tell application "Numbers"
    activate
    tell the first table of the active sheet of front document
        set LaSelection to selection range -- obtient la selection
       
        set listcellule to name of cell of LaSelection -- liste des cellules dans une variable liste
       
        set nbcellule to count listcellule --nombre de cellules de la selection
       
        repeat with i from 1 to nbcellule --boucle sur toutes les cellules de la selection
            set Lacellule to item i of listcellule --obtient le nom de la cellule en cours
            set lavaleur to value of cell Lacellule --obtient la valeur de la cellule en cours
           
            try --bloc erreurs
                lavaleur as number --verifie si la valeur est un nombre sinon erreur et va à end try
               
                if lavaleur < 55 then -- si valeur inférieur à 55 --si la valeur est inférieure à 55
                    set background color of cell Lacellule to {65535, 0, 0} --cellule en rouge
                end if
               
            end try
        end repeat
    end tell
end tell
 
Bonjour @zeltron54 , et merci beaucoup d'avoir pris le temps d'écrire ces scripts.
J'ai un message d'erreur pour le second (je n'ai pas encore testé le premier) -- Il est impossible d'obtenir cell of missing value number -1728 from «class NmCl» of missing value.
Il a fonctionné une première fois, j'ai voulu recommencer, et j'ai eu ce message d'erreur. C'est ça la difficulté quand on débute, de comprendre les messages d'erreurs.... Je précise que les cellules sont au format nombres, et j'ai la même erreur en supprimant les lignes et les colonnes dans lesquelles il y a du texte. Le fichier est un fichier CSV à la base.
Je suis en train de chercher l'erreur...
Je sais qu'il est plus simple de faire un surlignage conditionnel, mais c'est le début de plusieurs actions que j'aimerais automatiser....
 
Quand tu as cette erreur , quelle ligne du script est surlignée ?
Pour faire tes essai, crées toi une nouvelle feuille Numbers et tu fais tes essai avec, ce sera plus facile à comprendre.
 
Je l'ai modifié, et il fonctionne comme ça:
[B]tell[/B] [I]application[/I] "Numbers" [B]activate[/B] [B]tell[/B] [B]the[/B] [B]first[/B] [I]table[/I] [B]of[/B] [B]the[/B] active sheet [B]of[/B] [B]front[/B] [I]document[/I] [B]set[/B] [B]the[/B] selection range [B]to[/B] [I]range[/I] "B5:D42" -- obtient la selection [B]set[/B] listcellule [B]to[/B] name [B]of[/B] [I]cell[/I] [B]of[/B] [B]the[/B] selection range -- liste des cellules dans une variable liste [B]set[/B] nbcellule [B]to[/B] [B]count[/B] listcellule --nombre de cellules de la selection [B]repeat[/B] [B]with[/B] i [B]from[/B] 1 [B]to[/B] nbcellule --boucle sur toutes les cellules de la selection [B]set[/B] Lacellule [B]to[/B] [I]item[/I] i [B]of[/B] listcellule --obtient le nom de la cellule en cours [B]set[/B] lavaleur [B]to[/B] value [B]of[/B] [I]cell[/I] Lacellule --obtient la valeur de la cellule en cours [B]try[/B] --bloc erreurs lavaleur [B]as[/B] [I]number[/I] --verifie si la valeur est un nombre sinon erreur et va à end try [B]if[/B] lavaleur < 55 [B]then[/B] -- si valeur inférieur à 55 --si la valeur est inférieure à 55 [B]set[/B] background color [B]of[/B] [I]cell[/I] Lacellule [B]to[/B] {65535, 0, 0} --cellule en rouge [B]end[/B] [B]if[/B] [B]end[/B] [B]try[/B] [B]end[/B] [B]repeat[/B] [B]end[/B] [B]tell[/B]
 
C'était name de cette ligne qui était surligné
set listcellule to name of cell of LaSelection -- liste des cellules dans une variable liste

Pourquoi mon code s'affiche de cette manière dans mes messages? J'utilise la fonction 'Bloc de code'
 
L' erreur voulait dire qu'il n'avait pas trouvé la cellule dans la sélection ou,pas la sélection !
Je n'arrive même pas à reproduire cela chez moi !

Pour le code utilise, le 3 points vertical (plus d'option) puis </> (bloc de code), et colle ton code dans la fenêtre qui s'ouvre !
 
je n'ai pas en cliquant sur les 3 points verticaux le symbole dont tu parles.... j'ai bien un bloc de code qui m'affiche les balises ICODE entre crochets.
Bon, j'avance grâce à toi, merci :merci:
Je traite maintenant 2 tableaux, avec des valeurs limites différentes, ça fonctionne, et je crée un nouveau tableau avec le nombre de lignes et de colonnes que je veux!!!
Le challenge maintenant et de remplir ce nouveau tableau avec la différence en valeurs absolues des nombres des deux premiers tableaux...
Je m'y attèle!!! .
 
Oups!
j'ai pas précisé, c'est les 3 points verticaux à l'extrémité de la ligne des icones ... (le 17ième icone)