Il semblerait que plus personne ne soit actif dans cette discussion. Si vous souhaitez reprendre la conversation, posez simplement une nouvelle question.

AppleScript avec Numbers

Bonjour


suite aux commentaires de certains que nous devrions avoir la possibilité de remplacer une macro de LibreOffice avec applescript, voici ma question. Comment déterminer la rangée sur laquelle l'utilisateur à fait sa sélection ?


J'ai utilisé l'expression set this_Row to the row of selection range qui semble fonctionner car dans le résultat je vois bien le numéro de la rangée. Mais quand je veux utiliser cette variable pour afficher le résultat avec la commande Display par exemple, j'ai toujours une erreur, même si j'essais de la convertir as string. Par la suite je voudrais utiliser différente colonne de cette rangée par exemple set Nom to the value of cell "C" & thisRow et copier le contenu de cette variable dans un autre tableau.


Je suis nouveau avec Applescript alors soyez indulgent et m'aider à voir ce que je manque dans la compréhension.


Merci




<Titre Modifié par l’Hôte>

Publiée le 14 févr. 2018 à 18h28

Répondre
Question marquée comme Meilleure réponse

Publiée le 15 févr. 2018 à 15h41

Pour obtenir le tableau 1 de la feuille 1 dans Numbers:

tell application "Numbers" set tableau to table 1 of sheet 1 of document 1 tell tableau # le reste du code que je donnerai ira ici end tell end tell

Sélectionnons les cellules B8 à G10 dans ce tableau:

set selection range to range "B8:G10"

Si on veut, à l'inverse, récupérer la région sélectionnée:

set region_selectionnee to selection range

Pour récupérer la 2e cellule de la région sélectionnée (c'est la cellule C8, puisque la région va de B8 à G10):

set deuxieme_cellule_selectionnee to cell 2 of region_selectionnee

Pour afficher un message avec les coordonnées de cette cellule (c'est-à-dire C8):

display dialog name of deuxieme_cellule_selectionnee as string

Pour afficher un message avec le contenu (la valeur) de cette cellule:

display dialog value of deuxieme_cellule_selectionnee as string

Pour définir le nombre 34 comme contenu (valeur) de cette cellule:

set value of deuxieme_cellule_selectionnee to 34

7 réponses
Question marquée comme Meilleure réponse

Le 15 févr. 2018 à 15h41 en réponse à NormCar

Pour obtenir le tableau 1 de la feuille 1 dans Numbers:

tell application "Numbers" set tableau to table 1 of sheet 1 of document 1 tell tableau # le reste du code que je donnerai ira ici end tell end tell

Sélectionnons les cellules B8 à G10 dans ce tableau:

set selection range to range "B8:G10"

Si on veut, à l'inverse, récupérer la région sélectionnée:

set region_selectionnee to selection range

Pour récupérer la 2e cellule de la région sélectionnée (c'est la cellule C8, puisque la région va de B8 à G10):

set deuxieme_cellule_selectionnee to cell 2 of region_selectionnee

Pour afficher un message avec les coordonnées de cette cellule (c'est-à-dire C8):

display dialog name of deuxieme_cellule_selectionnee as string

Pour afficher un message avec le contenu (la valeur) de cette cellule:

display dialog value of deuxieme_cellule_selectionnee as string

Pour définir le nombre 34 comme contenu (valeur) de cette cellule:

set value of deuxieme_cellule_selectionnee to 34

Le 16 févr. 2018 à 03h32 en réponse à NormCar

Comme vous semblez vous intéresser sérieusement à AppleScript, je vous montre comment connaître toutes les commandes et tous les objets que vous pouvez utiliser pour contrôler une application:


  1. Ouvrir l'Éditeur de script.
  2. Aller dans le menu Fenêtre > Bibliothèque.
  3. Doubler-cliquer sur le nom de l’application dont vous voulez connaître les commandes et les objets (ici Numbers).


Essayez de trouver l'objet «cell» par exemple, qui représente une cellule. (Si vous n'y arrivez pas, la Bibliothèque a une fonction recherche.) Vous verrez que la description de «cell» c'est:


cell n [inh. range] : A cell in a table elements contained by ranges.

PROPERTIES

  • column (column, r/o) : The cell's column.
  • row (row, r/o) : The cell's row.
  • value (number, date, text, boolean, or missing value) : The actual value in the cell, or missing value if the cell is empty.
  • formatted value (text, r/o) : The formatted value in the cell, or missing value if the cell is empty.
  • formula (text, r/o) : The formula in the cell, as text, e.g. =SUM(40+2). If the cell does not contain a formula, returns missing value. To set the value of a cell to a formula as text, use the value property.


Maintenant, pour en revenir à votre code erroné:

set region_selectionne to cell 1 of selection range
display dialog region_selectionnee

Je vous conseille de nommer votre variable «cellule_selectionnee», et non «region_selectionnee», puisque vous lui attribuez un objet «cell», et non «range». (Techniquement, AppleScript s'en fout des noms des variables, mais faites-le pour vous, sinon vous allez vous emmêler.) Pour afficher les propriétés de «cellule_selectionnee» à l'aide de «display dialog»:

set cellule_selectionnee to cell 1 of selection range
display dialog "Colonne : " & name of column of cellule_selectionnee & "
Rangée : " & name of row of cellule_selectionnee & "
Valeur : " & value of cellule_selectionnee as string

Le 15 févr. 2018 à 18h08 en réponse à NormCar

Merci


si je suis votre raisonnement je pourrais écrire en une seule instruction


set region_selectionne to cell 1 of selection range


ce qui lors de l'exécution ferait que region_selectionne serait égale au coordonnée de la cellule sélectionnée par l'utilisateur.


Maintenant si region_selectionnee contient l'adresse de la cellule disons "C4", pour quelle raison si je fais


display dialog region_selectionnee j'ai une erreur ? le contenue n'est-il pas l'adresse aussi bien que si j'aurais dit


set region_selectionnee to "C4"

Le 16 févr. 2018 à 03h39 en réponse à Esquimau

Merci Esquimau


je me suis finalement procuré Applescript 1,2,3 espérant pouvoir découvrir les secrets d'Applescript, spécialement avec Numbers. J'ai effectivement consulté le dictionnaire de Numbers, mais on indique que row et column sont en read only et pas beaucoup d'information comment modifier leur valeur pour accéder à des cellules sans avoir à coder directement les coordonnées tel que "C4" ou "F10" mais d'utiliser des variables. Enfin j'aurai sans doute mes réponses en examinant ce volume.


Encore une merci

Le 19 févr. 2018 à 18h07 en réponse à Esquimau

Bonjour NormCar et Esquimau,


J’ai suivi avec intérêt votre discussion. Si j’ai bien compris, le besoin de NormaCar est de pouvoir accéder à des cellules sans avoir à les citer nommément. Le dernier post d’Esquimau propose une solution mettant en oeuvre 2 variables et je pense qu’effectivement cela répond à la question dans bien des cas.

Par contre, s’il est dans l’intention de NormCar d’effectuer un traitement sur toutes les cellules d’une sélection, je pense qu’il pourrait tirer avantage d’une précédente instruction d’Esquimau :


set region_selectionnee to selection range (on récupère la sélection)


Mais au lieu de référencer une seule cellule de cette sélection par :


set deuxieme_cellule_selectionnee to cell 2 of region_selectionnee


il serait possible en utilisant une variable n de coder :


set nieme_cellule_selectionnee to cell n of region_selectionnee


de telle sorte qu’avec une boucle du type repeat en faisant varier n de 1 au nombre de cellules de la sélection, on puisse balayer et traiter toutes les cellules de la sélection.


En espérant avoir fait avancer le smilblic.


Cordialement

Le 19 févr. 2018 à 18h12 en réponse à Rabuchon2

Merci pour le commentaire


effectivement la majorité des personnes avec de bonne intentions nous font des suggestions, c'est toujours avec un code directement dans le script, alors qu'un utilisateur peut utiliser n'importe qu'elle cellule dans le tableau. C'est donc la responsabilité du scripteur de faire en sorte que son script soit suffisamment flexible pour atteindre l'objectif recherché. Normalement cet objectif est atteint en utilisant des variables que nous pouvons manipuler pour rendre l'outil intelligent et non forcer un certaine utilisation avec des instructions hard coder.


Encore une fois merci

AppleScript avec Numbers

Bienvenue dans la Communauté d’assistance Apple
Un forum où les clients Apple s’entraident avec leurs produits. Faites vos premiers pas avec votre identifiant Apple.