Traduire une couleur de fond d'une cellule en un chiffre

Jehan

XLDnaute Nouveau
Bonjour à vous tous.
Voila, si la cellule A1 est rouge, je souhaite qu'un 1 s'incrive dans la cellule B1( ou mème dans la cellule A1) Si cette mème cellule est orange, je souhaite qu'un 2 s'inscrive en B1
Si cette mème cellule est jaune, je souhaite qu'un 3 s'inscrive en B1.... etc pour A2 et B2......
j'ai essayé la fonction " rechercher et remplacer " mais cela ne fonctionne qu'une fois sur 20 et pour une couleur seulement.
je vous remercie pour votre aide.
 

Jehan

XLDnaute Nouveau
Re : Traduire une couleur de fond d'une cellule en un chiffre

Salut vbacrumble !
Oui pour les macros... concernant le VBA je sais modifier des petites choses dans le code comme une position de cellule... ou des sélections de plages ....sans plus...
Merci.
 

vbacrumble

XLDnaute Accro
Re : Traduire une couleur de fond d'une cellule en un chiffre

Re



Essaies cette fonction personnalisée

Code:
Function couleur(r As Range, Opt As String) As Long
Select Case Opt
Case "Police"
couleur = r.Font.ColorIndex
Case "Fond"
couleur = r.Interior.ColorIndex
End Select
End Function

Ex: si A1 = fond jaune
en B1=couleur(A1;"Fond") ---> renvoie 6

PS: en utilisant le moteur de recherche du forum, tu trouveras d'autres exemples.
 

Jehan

XLDnaute Nouveau
Re : Traduire une couleur de fond d'une cellule en un chiffre

Merci pour ta réponse vbacrumble.
Mais je ne sais pas comment utiliser cette réponse... d'autre part je pense qu'en reformulant ma question plus clairement j'aurai la réponse appropriée.
Considérons la plage de colonnes de M à T.
Ces cellules ne contiennent aucune infos en dehors de leur couleurs de fond.
Dans ces colonnes certaines cellules sont colorées en rouge (code 3),et je souhaite qu'un 1 s'inscrive dans ces cellules.
D'autres cellules sont en orange ( code 45) et je souhaite qu'un 2 s'inscrive dans ces cellules.
D'autres cellules sont en jaune ( code 27) et je souhaite qu'un 3 s'inscrive dans ces cellules.
J'ai cherché sur le forum et sur le net en vain...
Comment faire ?
Merci de m'aider.
 

soenda

XLDnaute Accro
Re : Traduire une couleur de fond d'une cellule en un chiffre

Bonjour le fil, vbacrumble, Jehan

Essayes avec le code suivant (la plage [M2:T10] est à adapter)
Code:
Sub essai()
    Dim c As Range
    
    For Each c In [M2:T10]

        Select Case c.Interior.ColorIndex
            
            Case 3: c.Value = 1
            
            Case 45: c.Value = 2
            
            Case 27: c.Value = 3
            
        End Select

    Next
    
End Sub
A plus
 

vbacrumble

XLDnaute Accro
Re : Traduire une couleur de fond d'une cellule en un chiffre

Re


Jehan:
La fonction servait à renvoyer l'index de la couleur (soit de la police, soit du motif de la cellule, selon l'option indiquée)

En espérant que cela te servira un jour ;)

Une variante au code de soenda (en guise d'excuse)
Code:
Sub essai()
Dim c As Range
For Each c In [M2:T10]
c.Value = _
Switch(c.Interior.ColorIndex = 3, 1, _
c.Interior.ColorIndex = 45, 2, _
c.Interior.ColorIndex = 27, 3)
Next
End Sub
 
Dernière édition:

Jehan

XLDnaute Nouveau
Re : Traduire une couleur de fond d'une cellule en un chiffre

Salut vbacrumble !
Il n'y a pas lieu de s'excuser....
Chacun de nous fait de son mieux.....
Celui qui ne fait rien ne commet pas d'erreur...
Merci à toi et bonne soirée !:)
 

pup1523

XLDnaute Nouveau
Re : Traduire une couleur de fond d'une cellule en un chiffre

bonjour à tous.
je viens de découvrir cette discussion que je trouve très intéressante.
je suis confronté au même problème ou plutot à sa suite.
ok pour l'attribution d'une couleur à une cellule.
mais là ou ça se gâte c'est qu'ensuite le "colorindex" n'est pas reconnu.
je veux parcourir aléatoirement un tableau de 10 x 10 cellules (table de pythagore) entièrement rouge au départ pour aider un petit enfant à apprendre les tables de multiplication.
or même si je demande que le programme s'arrête sur une case rouge (index 3) il peut très bien s'arrêter sur une case verte (index 4).
y a-t-il une erreur dans mon programme ou bien y a-t-il un problème connu dans la manipulation des "colorindex"
merci de vous pencher sur mon problème
bonne journée

j'allais oublier :

Private Sub suivant_Click()
c = 0 'réinitialisation de la variable
Randomize ' réinitialisation du générateur de nombres aléatoires
Do Until c = 3 ' tant que le cellule cible n'est pas rouge
Range("D7").Select ' initialisation du mouvement
x = Int(Rnd(1) * 9): ' remplacer 9 par le dépl horizontal max souhaité
y = Int(Rnd(1) * 9): ' remplacer 9 par le dépl vertical max souhaité
ActiveCell.Offset(y, x).Select 'saut à la cellule déterminée aléatoirement
c = Selection.Interior.colorindex 'récupération de la couleur

If c = 3 Then Exit Do
Loop
MsgBox c
End Sub
 
Dernière édition:

soenda

XLDnaute Accro
Re : Traduire une couleur de fond d'une cellule en un chiffre

Bonjour à tous, pup1523

Une correction possible de ta procédure (avec une variable globale et pour un tableau de 9x9):
Code:
Dim Compteur As Integer

Sub b()
    Dim x%, y As Integer
    
    If Compteur = 81 Then
        MsgBox "Tableau terminé"
        Exit Sub
    End If
    
    Randomize
    
    Do
        x = Int(Rnd(1) * 9) + 7
        y = Int(Rnd(1) * 9) + 4
    Loop While Cells(x, y).Interior.ColorIndex <> 3
    
    With Cells(x, y)
        .Interior.ColorIndex = 6    ' JAUNE
        .Select
    End With
    
    Compteur = Compteur + 1
    
End Sub
A plus
 

pup1523

XLDnaute Nouveau
Re : Traduire une couleur de fond d'une cellule en un chiffre

bonjour à tous
et merci à soenda
je te remercie mais mon problème n'était pas là.
après avoir fait différents essais de formatage des cellules avec des couleurs "manuelles" et des MFC, il y avait un vrai bazar et la couleur vue n'était pas la couleur comprise par vba.
j'ai refait au départ un format de tout le tableau à "pas de couleur".
et ensuite tout se passe bien.
les couleurs attribuées pas interior.colorindex sont bien relues.

encore merci
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia