# Script pour surligneur une cellule en fonction d'une autre



## Cristalline (26 Février 2020)

Bonjour,

J'aimerais changer le remplissage d'une cellule en fonction de la valeur de la cellule d'à côté et appliquer cela à tout mon document. J'ai commencé un script avec automator mais je suis bloquée...











D'avance merci


----------



## zeltron54 (26 Février 2020)

Bonjour,

Un exemple de script qui : si la valeur de la cellule A2 est >1 met la cellule B2 de couleur rose
sinon met la couleur à jaune
La couleur est défini en fonction des valeurs RVB : rose = (65535, 0, 65535)  jaune = (65535, 65535, 0)


```
tell application "Numbers"
    activate
    tell the first table of the active sheet of document 1
        set lavaleur to the value of cell "A2"
        if lavaleur > 1 then
            set the background color of the cell "b2" to {65535, 0, 65535}
        else
            set the background color of the cell "b2" to {65535, 65535, 0}
        end if
    end tell
end tell
```


----------



## daffyb (26 Février 2020)

ça s'appelle une mise en forme conditionnelle :





						Utiliser des conditions dans les cellules dans Numbers sur Mac
					

Dans Numbers sur votre Mac, ajoutez un surlignage automatique des cellules lorsque le contenu remplit une condition. Par exemple, vous pouvez faire en sorte que les cellules deviennent rouges lorsqu’elles contiennent un nombre négatif.



					support.apple.com


----------



## zeltron54 (26 Février 2020)

@daffyb 

Ok , mais pas de formules possibles dans numbers, la condition s'applique sur la cellule elle même (si la cellule contient xx alors on la met en couleur) à la différence d excel ou on peut mettre dans  B2    --> si a2 =  xx alors je met en couleur.


----------



## Cristalline (26 Février 2020)

Merci pour votre réponse !!
Cela fonctionne sauf que qd la valeur de B2 repasse à 0 les cellules restent surlignées…
Encore merci


----------



## zeltron54 (26 Février 2020)

Le script ne s'exécute pas automatiquement ! il faut le lancer à chaque fois que tu veux l'exécuter !

A chaque  fois que tu le lances il modifie la cellule en fonction de ce qu'il trouve ...


----------



## Cristalline (26 Février 2020)

ok mais une fois lancé pour mon doc je ne suis pas obligée de le lancer à chaque fois que j'ouvre le doc ?
Je veux que la valeur des cellules de la colonne B définissent la couleur des cellules de la colonne A, du coup je note quoi à la place de B2 et A2 ?


----------



## zeltron54 (26 Février 2020)

Malheureusement le script ne se lance pas tout seul, il n'est pas incorporé à Numbers, donc il faut le relancer chaque fois qu'une valeur de la colonne B change afin de mettre  à jour les couleurs de la colonne A. Je ne connaîs pas de manière de le faire automatiquement dans numbers.

Pour que le script s'occupe de toutes les cellules des colonnes A et B il faut faire une boucle pour appliquer la mise en couleur de toutes les cellules de la colonne. la boucle incrémentera la valeur de la ligne à traiter   (A2 et B2 puis A3 et B3  etc...)


----------



## daffyb (26 Février 2020)

zeltron54 a dit:


> @daffyb
> 
> Ok , mais pas de formules possibles dans numbers, la condition s'applique sur la cellule elle même (si la cellule contient xx alors on la met en couleur) à la différence d excel ou on peut mettre dans  B2    --> si a2 =  xx alors je met en couleur.


en effet. Je suis déçu !


----------



## zeltron54 (27 Février 2020)

Bonjour,

Je te met un script exemple commenté qui colore les cellules colonne A en rouge si colonne B est >3 sinon remet en blanc.
Ce script sera à lancer à chaque fois que tu voudras mettre les couleurs du tableau à jour.


```
tell application "Numbers"
    activate
    tell the first table of the active sheet of document 1
        set nblign to count row -- Nombre de lignes du tableau
        
        repeat with i from 2 to nblign --boucle de 2 a nombre de ligne
            set lacela to "A" & i --défini la cellule colonne A en cours
            set lacelb to "B" & i ----défini la cellule colonne B en cours
            set lavaleur to the value of cell lacelb -- obtient la valeur de la cellule B
            if lavaleur > 3 then -- si plus grand que 3
                set the background color of the cell lacela to {65535, 0, 65535} --si vrai color rouge
            else
                set the background color of the cell lacela to {65535, 65535, 65535} -- sinon color blanc
            end if
        end repeat
    end tell
end tell
```


----------

