Mot en fonction d'une couleur

ryulair

XLDnaute Nouveau
Bonjour à tous, j'écris aujourd'hui car j'ai un petit problème.

Je sais que dans excel je peux changer la couleur d'une cellule en fonction du mot qui est inscrit.

Moi je veux faire le contraire.

Ex : Si la case est bleu le nom Michel apparaît, si elle est jaune le nom Paul apparaît, si elle est rouge le nom Maryse apparaît etc....

Je veux éviter d'utiliser VBA.

Merci et bonne journée!
 

job75

XLDnaute Barbatruc
Re : Mot en fonction d'une couleur

Bonjour ryulair,

Si l'on ne veut pas de VBA il faut utiliser la fonction macro Excel 4.0 LIRE.CELLULE.

Voyez le fichier joint et en A2 le nom défini CodeCouleur :

Code:
=LIRE.CELLULE(38;Feuil1!A2)+ENT(ALEA())
La fonction ALEA() rend la formule volatile pour son recalcul.

A+
 

Pièces jointes

  • Code couleur(1).xlsm
    9.9 KB · Affichages: 43
Dernière édition:

ryulair

XLDnaute Nouveau
Re : Mot en fonction d'une couleur

Merci de la réponse rapide job75. Par contre j'ai une question car je ne comprend pas tout de la formule.

Tu me dis que je dois définir le code couleur en A2, mais je ne comprend pas comment le définir. Peux tu me donner un exemple?
 

job75

XLDnaute Barbatruc
Re : Mot en fonction d'une couleur

Bonjour ryulair, le forum,

Avec VBA il n'y a plus besoin de formules.

Sauf pour une fonction volatile comme AUJOURDHUI() (en A2).

Et cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Calculate()
Dim B As Range, exclu As Range, base, i&, r As Range, v As Variant
'---préparation de la base---
Set B = [A4:B6] 'plage à adapter
Set exclu = Union([A1:A3], B) 'à adapter
base = B 'matrice
For i = 1 To UBound(base)
  base(i, 1) = B(i, 1).Interior.Color
Next
'---analyse des couleurs---
Application.EnableEvents = False 'désactive les événements
For Each r In Me.UsedRange
  If Intersect(r, exclu) Is Nothing Then
    v = Application.VLookup(r.Interior.Color, base, 2, 0)
    If Not IsError(v) Then If r <> v Then r = v
  End If
Next
Application.EnableEvents = True 'réactive les événements
End Sub
Fichier joint.

Bonne journée et A+
 

Pièces jointes

  • Code couleur VBA(1).xlsm
    17.6 KB · Affichages: 24

job75

XLDnaute Barbatruc
Re : Mot en fonction d'une couleur

Re,

Autre solution par VBA :

Code:
Private Sub Worksheet_Calculate()
Dim exclu As Range, B As Range, base, i As Variant, r As Range
'---préparation de la base---
Set exclu = [A1:A6,G2,G4,C9:H27] 'à adapter
Set B = [A4:A6] 'à adapter
base = B 'matrice
For i = 1 To UBound(base)
  base(i, 1) = B(i).Interior.Color
Next
'---analyse des couleurs---
Application.EnableEvents = False 'désactive les événements
For Each r In Me.UsedRange
  If Intersect(r, exclu) Is Nothing Then
    i = Application.Match(r.Interior.Color, base, 0)
    If IsNumeric(i) Then If r <> B(i) Then r = B(i)
  End If
Next
Application.EnableEvents = True 'réactive les événements
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Code couleur VBA(2).xlsm
    19 KB · Affichages: 29

Discussions similaires

Réponses
1
Affichages
187

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji