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.
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.
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.
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.
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
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
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 !
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
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
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.