Nom de couleur

L

laydie

Guest
Bonjour le Forum

Est-il possible de donner une couleur lors d'une saisie par une personne ?

Voilà j'ai une liste déroulante avec 10 noms de personne et il faudrait quand la personne une sélectionne son nom la cellule se colore en vert quand c'est le deuxième la cellule se colore en vert et ainsi de suite pour les dix personne en format conditionnel je met que trois personnes ?

Faut-il passer par une macro ?

Merci pour votre aide est bon dimanche.

Laydie
 

pascal21

XLDnaute Barbatruc
bonjour
vas voir ici
le même sujet à été traité hier et la solution donnée
si tu as besion d'aide n'hésites pas
pour faire court

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each c In Range('a1:a25')
If c = 'a' Then
c.Font.ColorIndex = 3
ElseIf c = 'b' Then
c.Font.ColorIndex = 5
ElseIf c = 'c' Then
c.Font.ColorIndex = 54

End If
Next
End Sub
('a1:a25') la plage concernée
'a' 'b' 'c' le mot concerné
en rouge, la portion à rajoutée pour chaque nouveau nom
Pascal

Message édité par: pascal21, à: 05/02/2006 09:33

Message édité par: pascal21, à: 05/02/2006 09:38
 

Jacques87

XLDnaute Accro
Bonjour Ladye, Bonjour Pascal,

Pascal, Ladye veut intervenir sur 10 noms donc doit imbriquer 10 boucles les unes dans les autres selon ta méthode, alors attention aux erreurs et d'autre part tu alourdies le code.
Je me permets donc de lui proposer t'utiliser la fonction 'Select Case' qui donnerait

For each C in Range('A1:A25')
nom = C.Value

Select Case nom
Case 'toto'
C.Font.ColorIndex = 3
Case 'dupont'
C.Font.ColorIndex = 5
etc.....
End Select

Next C

Je vous souhaite à tous les deux, ainsi qu'au Forum, un excellent dimanche

Message édité par: Jacques87, à: 05/02/2006 10:09

Message édité par: Jacques87, à: 05/02/2006 10:12
 

pascal21

XLDnaute Barbatruc
Pascal, Ladye veut intervenir sur 10 noms donc doit imbriquer 10 boucles les unes dans les autres selon ta méthode, alors attention aux erreurs et d'autre part tu alourdies le code.
bonjour
à tous
la plupart du temps je suis incapable de comprendre parfaitement ce que veut dire un code alors!!! les subtilités qui permettent de ne pas alourdir un code j'en suis loin lol!!!
je ne fait, le plus souvent que recopier ce que je trouve par ci et par là
quoi qu'il en soit merci pour la remarque je vais regarder la différence entre les 2 codes pour essayer de comprendre un peu
 

Jacques87

XLDnaute Accro
Bonjour Pascal,

Si je peux t'aider à comprendre ce sera avec plaisir.

Ton code, que tu me dis avoir recopié, est une suite de tests en cascade. C'est à dire :
si c'est toto alors bleu
sinon
si c'est tata alors rouge
sinon
si c'est roro alors jaune
sinon
si c'est lulu alors vert
fin du test

pour écrire ce type de test en VBA tu disposes de différentes fonctions :
1) la fonction classique If ... Then ... Else ... End IF (Si ... alors .... sinon .... fin de test)
2) la fonction Select Case ... End Select, selon la sélection je ferai cela .... fin de sélection

Toutes les 2 aboutissent au même résultat, mais la seconde sera plus rapide et moins 'lourde'.

En effet la première agit en cascade :
est-ce 'toto' si oui alors bleu
sinon
est-ce 'tata' si oui alors rouge
sinon
est-ce 'roro' si oui alors jaune
sinon
est-ce 'lulu' alors vert
dans le cas où c'est 'lulu' tu comprends qu'il doit vérifier les cas précédents avant d'y arriver et de traiter la condition (vert).
Donc si tu avais une centaine de noms ...

Par contre avec la seconde, une fois que tu as précisé sur quel paramètre tu fais ta sélection (ici le paramètre est 'nom'), il ira directement chercher la ligne adéquat :
Case 'lulu'
et traitera l'action
De plus cette méthode a un avantage, car elle met à ta disposition 'un sac fourre tout'. En effet pour tous les cas autres que ceux qui précèdent ('toto', 'tata', 'roro', 'lulu') si tu veux du noir, il suffit d'ajouter :
Case Else
mettre en noir

Dernière remarque, les 'If' en cascade nécessite beaucoup d'application et de rigueur : il ne faut pas oublier un 'End If' chaque fois que tu ouvres un 'If'. D'ailleurs c'est pour cela que l'on utilise les retraits gauche, chaque 'End If' subit le même retrait que son 'If' et que les 'If ... End If' de rang inférieur subissent eux mêmes un retrait plus important.

J'espère avoir été assez clair et surtout n'hésite pas à nous contacter chaque fois que tu désireras comprendre plus aisément un morceau de code. Ce sera avec plaisir que je te rendrai ce service ... entre autres c'est comme celà que dans le temps je procédais, car moi aussi je suis un autodidacte.

Bien amicalement et bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 502
Membres
103 563
dernier inscrit
samyezzehar