[Numbers] Colorer une ligne en fonction d'une case

  • Créateur du sujet Membre supprimé 1129907
  • Date de début
M

Membre supprimé 1129907

Invité
Bonjour,

J'aimerais colorer toute une ligne si la case d'une colonne spécifique est non vide.
A priori il faut passer via le "surlignage conditionnel" mais je n'ai rien trouvé de bien. J'ai juste trouvé comment colorer les cases non vide ...

Merci
 
Bonjour.
Après quelques essais (pas exhaustifs) j'en conclus que la colorisation d'une ligne n'est pas possible.
Aucune option ne permet de définir le champ où s'appliquera la mise en forme, et pour ajouter à la limite seuls sont pris en compte les nombres pour le sur lignage conditionnel.

Reste Excel…
 
Bonjour,

J'aimerais colorer toute une ligne si la case d'une colonne spécifique est non vide.
A priori il faut passer via le "surlignage conditionnel" mais je n'ai rien trouvé de bien. J'ai juste trouvé comment colorer les cases non vide ...

Merci
On peut aussi coloriser les cellules vides mais rien pour les lignes et encore moins si dépendant d'une autre cellule que la cellule colorisée.
Pas très "glop" Numbers ! Excel fait beaucoup mieux et libre office aussi.
;)
 
Pour colorier une ligne en fonction de la valeur d'une cellule, il faut passer par un script.
Le seul problème c'est qu'il faut lancer le script pour mettre le tableau à jour.
 
Pour exemple : le script ci-dessous
si la cellule C4 est égale à 25, la ligne 3 est mise en rouge sinon elle est mise en jaune

Ce script peut être enregistré dans le dossier script de Numbers il est alors disponible dans le barre de menu dans les scripts ou avec automator comme service il est alors disponible dans le menu numbers--> services

Bloc de code:
tell application "Numbers"
    activate
    tell the first table of the active sheet of document 1
        if value of cell "c4" is 25 then
            set the background color of the range "3:3" to {65535, 0, 0}
        else
            set the background color of the range "3:3" to {65535, 65535, 0}
        end if
    end tell
end tell
 
Bonjour ecatomb,
En effet avec "surlignage conditionnel" en ayant auparavant sélectionné ta ligne entière, tu peux ajouter la règle "le texte commence par" et au lieu de sélectionner un texte, il faut sélectionner la case souhaitée qui donne la condition (via la petite icone bleue à droite) en veillant à conserver le rang et la colonne.
 
Pour exemple : le script ci-dessous
si la cellule C4 est égale à 25, la ligne 3 est mise en rouge sinon elle est mise en jaune

Ce script peut être enregistré dans le dossier script de Numbers il est alors disponible dans le barre de menu dans les scripts ou avec automator comme service il est alors disponible dans le menu numbers--> services

Bloc de code:
tell application "Numbers"
    activate
    tell the first table of the active sheet of document 1
        if value of cell "c4" is 25 then
            set the background color of the range "3:3" to {65535, 0, 0}
        else
            set the background color of the range "3:3" to {65535, 65535, 0}
        end if
    end tell
end tell
Bonjour, je réactive ce vieux post. J'ai voulu copier/coller pour essayer un script en apportant quelques modifs mais problème de syntaxe. Je voudrais vérifier les valeurs d'une colonne (valeur ciblée : 3) et en fonction de ça appliquer la coloration à une plage de cellules. J'ai modifié comme suit mais je pense que la ligne "if value of column B..." n'est pas correcte.Capture d’écran 2022-11-21 à 16.55.01.png
 
Bonjour,

Le script original vérifie la valeur inscrite dans la cellule C4

Tu demandes de vérifier la valeur d'une colonne, cela n'a pas de sens, une colonne contient des cellules qui ont différentes valeurs !
Que veux-tu vérifier exactement ?
 
Oui, pardon, c'était pas très clair. Je veux vérifier les cellules de la colonne B. Si celles-ci contiennent la valeur 3, alors je veux colorer les lignes auxquelles appartiennent ces cellules.
 
Je ne comprend toujours pas !
La colonne B contient plusieurs cellules !
Tu veux vérifier
-si une cellule contient 3
-si plusieurs cellules contiennent 3
-si toutes les cellules contennent 3

Il faut que tu fasses ce test dans une cellule avec une formule "si...." dans ton tableau et ensuite tu vérifieras le résultat de cette cellule

Edit: je viens de comprendre, tu veux surligner toutes les lignes qui contiennent 3 dans leurs cellules de la colonne B !
Auquel cas il faut faire une boucle dans le script pour tester chaque cellules.
 
L'idée, c'est de faire un surlignage conditionnel, mais a priori, c'est pas possible avec numbers de colorer une plage de cellules à partir du contenu d'une seule cellule. D'où le script. Dans la colonne B (Niveau), il s'agit de voir quelles sont les cellules de la colonne qui contiennent 3, et à partir de là colorer toutes les lignes correspondantes.



Capture d’écran 2022-11-21 à 17.18.44.png
 
Ok donc une boucle qui balaye toutes les lignes.
la couleur est rouge : {65535, 0, 0} si égal a 3 sinon blanc : {65535, 65535, 65535}
les chiffres représente les couleurs dans l'ordre (rouge, vert, bleu)

Il affiche un dialogue "fin du fichier" lorsqu'il atteint la dernière ligne.
Bien sur si tu modifies les valeurs dans la colonne B, il faut relancer le script pour mettre à jour.

Bloc de code:
tell application "Numbers"
    activate
    tell the first table of the active sheet of document 1
        try
            set i to 1
            repeat
                set lig to (i & ":" & i) as string
                if value of cell ("b" & i) is 3 then
                    set the background color of the range lig to {65535, 0, 0}
                else
                    set the background color of the range lig to {65535, 65535, 65535}
                end if
                set i to i + 1
            end repeat
        on error
            display dialog "fin du fichier"
        end try
    end tell
end tell
 
Dernière édition:
Merci beaucoup pour la réponse... mais ça fonctionne pas complètement. Y'a pas de message d'erreur qui est retourné, on voit bien que toutes les lignes sont passées en revue les unes après les autres. Mais toutes les lignes restent blanches. Pour tester, j'ai modifié la couleur pour la condition "else", et ça met bien la couleur demandée. Un peu comme s'il ne trouvait pas ou ne reconnaissait pas le 3, et qu'il passe à la suite.
 
Oh !
Le script tel qu'il est chez moi fonctionne !
Qu as-tu modifié ?
Il y a bien un 3 dans la cellule sans espaces ni autres caractères ???
Comment ce 3 est il entré dans la cellule, à la main ou avec une formule ?

La colonne est peut être formatée en texte alors que le script cherche un nombre !
Si c'est la cas alors soit tu formates la colonne en nombre soit tu modifies le script pour qu'il cherche un texte en mettant le 3 entre guillemet comme ça
Bloc de code:
if value of cell ("b" & i) is "3" then
 
Dernière édition:
Ça fonctionne. Le 3 dans la cellule provient effectivement d'une formule. J'ai inséré une colonne supplémentaire et j'ai rentré à la main les chiffres. Et du coup la boucle fonctionne parfaitement. Est-ce qu'il y a une modification à faire dans le code pour pouvoir reconnaitre un chiffre, même s'il vient d'une formule. En tout cas merci.
 
Oui , regarde ma réponse , je l’ai éditée
 
  • J’aime
Réactions: Celedo
N.B. La réponse #7 offre une autre solution, interne à Numbers, aussi simple qu'efficace.

Il faut juste créer une colonne supplémentaire (que l'on pourra masquer) où les cellules doivent être vides ou pas. Ensuite, une règle de format conditionnel appliquée à toutes les cellules…

J'ai juste trouvé comment colorer les cases non vides ...
Bonjour ecatomb,
En effet avec "surlignage conditionnel" en ayant auparavant sélectionné ta ligne entière, tu peux ajouter la règle "le texte commence par" et au lieu de sélectionner un texte, il faut sélectionner la case [cellule] souhaitée qui donne la condition (via la petite icone bleue à droite) en veillant à conserver le rang et la colonne.

Capture d’écran 2022-11-22 à 02.46.58.png
Dans cet exemple, la colonne L détermine la mise en couleur des lignes, selon que les cellules y sont vides ou pas.
J'aurais pu remplir manuellement mais j'ai préféré illustrer comment une simple fonction SI peut faire le job avec une paire de guillemets en guise de réponse vide :​
=SI (condition ; "texte quelconque" ; "")

Ici, ma formule vérifie juste si les cases de la colonne N sont cochées ou pas mais n'importe quelle condition convient.​
Dans ton cas, pourvu que tu aies défini des rangs d'en-tête, tu pourrais simplement avoir :​
SI (Niveau=3 ; "xyz" ; "")
N.B.
— La mise en forme conditionnelle ne s'applique pas à la colonne de référence (L). Autant la masquer.
 
Dernière édition:
  • J’aime
Réactions: zeltron54
Tu demandes de vérifier la valeur d'une colonne, cela n'a pas de sens, une colonne contient des cellules qui ont différentes valeurs !
Je ne comprend toujours pas !
La colonne B contient plusieurs cellules !
Tu veux vérifier​
-si une cellule contient 3​
-si plusieurs cellules contiennent 3​
-si toutes les cellules contennent 3​

Il faut que tu fasses ce test dans une cellule avec une formule "si...." dans ton tableau et ensuite tu vérifieras le résultat de cette cellule
De manière peut-être surprenante, Numbers comprend très bien une formule dans laquelle on indique juste la colonne : il prend alors en compte la valeur de la cellule située dans le même rang.

Ainsi la formule SI (Niveau=3;"xyz";"") vérifiera pour chaque rang si la colonne intitulée Niveau contient un 3.​
(Selon le cas, elle affichera xyz ou restera vide.)​
 
Dernière édition:
@baron
Effectivement la solution avec une colonne supplémentaire (vide ou pas) permet de colorié la ligne et surtout évite d'avoir besoin d'actualiser après changement.
La mise en place n'est pas évidente, mais cela fonctionne...

@Celedo Tu as le choix ! ;)