suite au code que m'a gentillement fourni Philippe R et Michel Gaboly,
il subsiste un petit soucis!
est il possible que si l'on utilise pas tous les codes possibles donc
pas toutes les couleurs que la boucle For s'ajuste automatiquement
Merci
Sub Compare(c As Range)
Dim Mat, i As Integer
Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
For i = 0 To 33
If c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Mat(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FxM
Bonsoir,
Essaie for i = 0 to UBound(Mat) (non testé)
@+ FxM
Jdg74-le gaulois wrote:
Encore Moi :-X
suite au code que m'a gentillement fourni Philippe R et Michel Gaboly, il subsiste un petit soucis! est il possible que si l'on utilise pas tous les codes possibles donc pas toutes les couleurs que la boucle For s'ajuste automatiquement
Merci
Sub Compare(c As Range) Dim Mat, i As Integer Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) For i = 0 To 33 If c = Sheets("Code").Range("B4").Offset(0, i) Then c.Interior.ColorIndex = Mat(i) Exit For Else c.Interior.ColorIndex = xlNone End If Next i End Sub
Bonsoir,
Essaie for i = 0 to UBound(Mat) (non testé)
@+
FxM
Jdg74-le gaulois wrote:
Encore Moi :-X
suite au code que m'a gentillement fourni Philippe R et Michel Gaboly,
il subsiste un petit soucis!
est il possible que si l'on utilise pas tous les codes possibles donc
pas toutes les couleurs que la boucle For s'ajuste automatiquement
Merci
Sub Compare(c As Range)
Dim Mat, i As Integer
Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
For i = 0 To 33
If c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Mat(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub
suite au code que m'a gentillement fourni Philippe R et Michel Gaboly, il subsiste un petit soucis! est il possible que si l'on utilise pas tous les codes possibles donc pas toutes les couleurs que la boucle For s'ajuste automatiquement
Merci
Sub Compare(c As Range) Dim Mat, i As Integer Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) For i = 0 To 33 If c = Sheets("Code").Range("B4").Offset(0, i) Then c.Interior.ColorIndex = Mat(i) Exit For Else c.Interior.ColorIndex = xlNone End If Next i End Sub
Pourrais-tu préciser ce qui ne va pas ? J'ai fait l'essai depuis le 29 (et viens de le refaire)
Sub test() Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz=ubound(mat) For i = 0 To zz msgbox zz & "-" & Mat(i) Next i End Sub
renvoit bien 33 suivi de "-" et de chacune des valeurs de la liste.
@+ FxM
Jacquouille Le Gaulois wrote:
FxM avait écrit le 29/02/2004 :
for i = 0 to UBound(Mat) (non testé
Ca ne fonctionne pas :'(
Merci quand meme
Jacquouille Le Gaulois
FxM a exposé le 02/03/2004 :
Bonsoir,
Pourrais-tu préciser ce qui ne va pas ? J'ai fait l'essai depuis le 29 (et viens de le refaire)
Sub test() Mon problème est:
Lorsque je saisie un de mes sigles "Sy" par exemple dans le cellule H6, elle se colore en bleu, jus que la normal mais lorsque je suprime "Sy" au lieu de revenir sans aucun remplissage ma cellule se rempli de la premiere couleur de la cellule de code non renseignee dans ma feuille "code" car le code suivant est dans un module: Sub Compare(c As Range) Dim Sam, i As Integer Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz = UBound(Sam) For i = 0 To UBound(Sam) If c = Sheets("Code").Range("B4").Offset(0, i) Then c.Interior.ColorIndex = Sam(i) Exit For Else c.Interior.ColorIndex = xlNone End If Next i End Sub
et celui ci dans le code de cahque feuille de mois Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim c As Range, i As Integer If Not Intersect(Target, Range("C6:AG35")) Is Nothing Then ' MEFC For Each c In Intersect(Target, Range("C6:AG35")) Compare c Next c End If End Sub
Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz=ubound(mat) For i = 0 To zz msgbox zz & "-" & Mat(i) Next i End Sub
renvoit bien 33 suivi de "-" et de chacune des valeurs de la liste.
Pourrais-tu préciser ce qui ne va pas ? J'ai fait l'essai depuis le 29 (et
viens de le refaire)
Sub test()
Mon problème est:
Lorsque je saisie un de mes sigles "Sy" par exemple dans le cellule H6,
elle se colore en bleu, jus que la normal mais lorsque je suprime "Sy"
au lieu de revenir sans aucun remplissage ma cellule se rempli de la
premiere couleur de la cellule de code non renseignee dans ma feuille
"code"
car le code suivant est dans un module:
Sub Compare(c As Range)
Dim Sam, i As Integer
Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
zz = UBound(Sam)
For i = 0 To UBound(Sam)
If c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Sam(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub
et celui ci dans le code de cahque feuille de mois
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim c As Range, i As Integer
If Not Intersect(Target, Range("C6:AG35")) Is Nothing Then
' MEFC
For Each c In Intersect(Target, Range("C6:AG35"))
Compare c
Next c
End If
End Sub
Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31,
32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37)
zz=ubound(mat)
For i = 0 To zz
msgbox zz & "-" & Mat(i)
Next i
End Sub
renvoit bien 33 suivi de "-" et de chacune des valeurs de la liste.
Pourrais-tu préciser ce qui ne va pas ? J'ai fait l'essai depuis le 29 (et viens de le refaire)
Sub test() Mon problème est:
Lorsque je saisie un de mes sigles "Sy" par exemple dans le cellule H6, elle se colore en bleu, jus que la normal mais lorsque je suprime "Sy" au lieu de revenir sans aucun remplissage ma cellule se rempli de la premiere couleur de la cellule de code non renseignee dans ma feuille "code" car le code suivant est dans un module: Sub Compare(c As Range) Dim Sam, i As Integer Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz = UBound(Sam) For i = 0 To UBound(Sam) If c = Sheets("Code").Range("B4").Offset(0, i) Then c.Interior.ColorIndex = Sam(i) Exit For Else c.Interior.ColorIndex = xlNone End If Next i End Sub
et celui ci dans le code de cahque feuille de mois Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim c As Range, i As Integer If Not Intersect(Target, Range("C6:AG35")) Is Nothing Then ' MEFC For Each c In Intersect(Target, Range("C6:AG35")) Compare c Next c End If End Sub
Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz=ubound(mat) For i = 0 To zz msgbox zz & "-" & Mat(i) Next i End Sub
renvoit bien 33 suivi de "-" et de chacune des valeurs de la liste.
Merci beaucoup cela fonctionne a merveille et de plus j apprend toute les fois avec toi Michel Gaboly :D
Michel Gaboly a formulé ce mercredi :
Sub Compare(c As Range) Dim Sam, i As Integer Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz = UBound(Sam) For i = 0 To UBound(Sam) if c = "" Then c.Interior.ColorIndex = xlNone ElseIf c = Sheets("Code").Range("B4").Offset(0, i) Then c.Interior.ColorIndex = Sam(i) Exit For Else c.Interior.ColorIndex = xlNone End If Next i End Sub
Merci beaucoup cela fonctionne a merveille et de plus j apprend toute
les fois avec toi Michel Gaboly :D
Michel Gaboly a formulé ce mercredi :
Sub Compare(c As Range)
Dim Sam, i As Integer
Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
zz = UBound(Sam)
For i = 0 To UBound(Sam)
if c = "" Then
c.Interior.ColorIndex = xlNone
ElseIf c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Sam(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub
Merci beaucoup cela fonctionne a merveille et de plus j apprend toute les fois avec toi Michel Gaboly :D
Michel Gaboly a formulé ce mercredi :
Sub Compare(c As Range) Dim Sam, i As Integer Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz = UBound(Sam) For i = 0 To UBound(Sam) if c = "" Then c.Interior.ColorIndex = xlNone ElseIf c = Sheets("Code").Range("B4").Offset(0, i) Then c.Interior.ColorIndex = Sam(i) Exit For Else c.Interior.ColorIndex = xlNone End If Next i End Sub
Cela paraît normal : tu as une boucle dans laquel il y a une trentaine de passages. Lors de chacun d'eux, une comparaison est faite entre c (cellule modifiée appartenant à l'intersection entre Target et la plage "C6:AG35") et la cellule située n colonnes à droite de Code!B4, où n représente le numéro de passage dans la boucle moins 1 (car on commence à zéro et non à 1 : For i = 0 To ...).
Si l'une des cellules concernées sur la ligne 4 de la feuille Code n'est pas renseignée, quand tu effaces "Sy", la cellule correspondante correspond à cette cellule non renseignée, et récupère donc la couleur indiquée par le nième élément de Sam (le tableau ou Array).
Tu ne peux pas obtenir un résultat incolore pour les cellules vides, s'il y a aussi des cellules vides dans ta zone de comparaison (cellules B4 et suivantes de la feuille Code).
Une modif de ce genre devrait résoudre le problème (non testé) :
Sub Compare(c As Range) Dim Sam, i As Integer Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz = UBound(Sam) For i = 0 To UBound(Sam) if c = "" Then c.Interior.ColorIndex = xlNone ElseIf c = Sheets("Code").Range("B4").Offset(0, i) Then c.Interior.ColorIndex = Sam(i) Exit For Else c.Interior.ColorIndex = xlNone End If Next i End Sub
FxM a exposé le 02/03/2004 :
Bonsoir,
Pourrais-tu préciser ce qui ne va pas ? J'ai fait l'essai depuis le 29 (et viens de le refaire)
Sub test() Mon problème est:
Lorsque je saisie un de mes sigles "Sy" par exemple dans le cellule H6, elle se colore en bleu, jus que la normal mais lorsque je suprime "Sy" au lieu de revenir sans aucun remplissage ma cellule se remplit de la premiere couleur de la cellule de code non renseignee dans ma feuille "code" car le code suivant est dans un module: Sub Compare(c As Range) Dim Sam, i As Integer Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz = UBound(Sam) For i = 0 To UBound(Sam) If c = Sheets("Code").Range("B4").Offset(0, i) Then c.Interior.ColorIndex = Sam(i) Exit For Else c.Interior.ColorIndex = xlNone End If Next i End Sub
et celui ci dans le code de cahque feuille de mois Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim c As Range, i As Integer If Not Intersect(Target, Range("C6:AG35")) Is Nothing Then ' MEFC For Each c In Intersect(Target, Range("C6:AG35")) Compare c Next c End If End Sub
Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz=ubound(mat) For i = 0 To zz msgbox zz & "-" & Mat(i) Next i End Sub
renvoit bien 33 suivi de "-" et de chacune des valeurs de la liste.
Cela paraît normal : tu as une boucle dans laquel il y a une trentaine
de passages. Lors de chacun d'eux, une comparaison est faite entre c
(cellule modifiée appartenant à l'intersection entre Target et la plage
"C6:AG35") et la cellule située n colonnes à droite de Code!B4, où n
représente le numéro de passage dans la boucle moins 1 (car on
commence à zéro et non à 1 : For i = 0 To ...).
Si l'une des cellules concernées sur la ligne 4 de la feuille Code n'est pas
renseignée, quand tu effaces "Sy", la cellule correspondante correspond
à cette cellule non renseignée, et récupère donc la couleur indiquée par le
nième élément de Sam (le tableau ou Array).
Tu ne peux pas obtenir un résultat incolore pour les cellules vides, s'il
y a aussi des cellules vides dans ta zone de comparaison (cellules B4 et
suivantes de la feuille Code).
Une modif de ce genre devrait résoudre le problème (non testé) :
Sub Compare(c As Range)
Dim Sam, i As Integer
Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
zz = UBound(Sam)
For i = 0 To UBound(Sam)
if c = "" Then
c.Interior.ColorIndex = xlNone
ElseIf c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Sam(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub
FxM a exposé le 02/03/2004 :
Bonsoir,
Pourrais-tu préciser ce qui ne va pas ? J'ai fait l'essai depuis le 29 (et
viens de le refaire)
Sub test()
Mon problème est:
Lorsque je saisie un de mes sigles "Sy" par exemple dans le cellule H6,
elle se colore en bleu, jus que la normal mais lorsque je suprime "Sy"
au lieu de revenir sans aucun remplissage ma cellule se remplit de la
premiere couleur de la cellule de code non renseignee dans ma feuille
"code"
car le code suivant est dans un module:
Sub Compare(c As Range)
Dim Sam, i As Integer
Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
zz = UBound(Sam)
For i = 0 To UBound(Sam)
If c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Sam(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub
et celui ci dans le code de cahque feuille de mois
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim c As Range, i As Integer
If Not Intersect(Target, Range("C6:AG35")) Is Nothing Then
' MEFC
For Each c In Intersect(Target, Range("C6:AG35"))
Compare c
Next c
End If
End Sub
Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31,
32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37)
zz=ubound(mat)
For i = 0 To zz
msgbox zz & "-" & Mat(i)
Next i
End Sub
renvoit bien 33 suivi de "-" et de chacune des valeurs de la liste.
Cela paraît normal : tu as une boucle dans laquel il y a une trentaine de passages. Lors de chacun d'eux, une comparaison est faite entre c (cellule modifiée appartenant à l'intersection entre Target et la plage "C6:AG35") et la cellule située n colonnes à droite de Code!B4, où n représente le numéro de passage dans la boucle moins 1 (car on commence à zéro et non à 1 : For i = 0 To ...).
Si l'une des cellules concernées sur la ligne 4 de la feuille Code n'est pas renseignée, quand tu effaces "Sy", la cellule correspondante correspond à cette cellule non renseignée, et récupère donc la couleur indiquée par le nième élément de Sam (le tableau ou Array).
Tu ne peux pas obtenir un résultat incolore pour les cellules vides, s'il y a aussi des cellules vides dans ta zone de comparaison (cellules B4 et suivantes de la feuille Code).
Une modif de ce genre devrait résoudre le problème (non testé) :
Sub Compare(c As Range) Dim Sam, i As Integer Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz = UBound(Sam) For i = 0 To UBound(Sam) if c = "" Then c.Interior.ColorIndex = xlNone ElseIf c = Sheets("Code").Range("B4").Offset(0, i) Then c.Interior.ColorIndex = Sam(i) Exit For Else c.Interior.ColorIndex = xlNone End If Next i End Sub
FxM a exposé le 02/03/2004 :
Bonsoir,
Pourrais-tu préciser ce qui ne va pas ? J'ai fait l'essai depuis le 29 (et viens de le refaire)
Sub test() Mon problème est:
Lorsque je saisie un de mes sigles "Sy" par exemple dans le cellule H6, elle se colore en bleu, jus que la normal mais lorsque je suprime "Sy" au lieu de revenir sans aucun remplissage ma cellule se remplit de la premiere couleur de la cellule de code non renseignee dans ma feuille "code" car le code suivant est dans un module: Sub Compare(c As Range) Dim Sam, i As Integer Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz = UBound(Sam) For i = 0 To UBound(Sam) If c = Sheets("Code").Range("B4").Offset(0, i) Then c.Interior.ColorIndex = Sam(i) Exit For Else c.Interior.ColorIndex = xlNone End If Next i End Sub
et celui ci dans le code de cahque feuille de mois Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim c As Range, i As Integer If Not Intersect(Target, Range("C6:AG35")) Is Nothing Then ' MEFC For Each c In Intersect(Target, Range("C6:AG35")) Compare c Next c End If End Sub
Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz=ubound(mat) For i = 0 To zz msgbox zz & "-" & Mat(i) Next i End Sub
renvoit bien 33 suivi de "-" et de chacune des valeurs de la liste.
Merci beaucoup cela fonctionne a merveille et de plus j apprend toute les fois avec toi Michel Gaboly :D
Michel Gaboly a formulé ce mercredi :
Sub Compare(c As Range) Dim Sam, i As Integer Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz = UBound(Sam) For i = 0 To UBound(Sam) if c = "" Then c.Interior.ColorIndex = xlNone ElseIf c = Sheets("Code").Range("B4").Offset(0, i) Then c.Interior.ColorIndex = Sam(i) Exit For Else c.Interior.ColorIndex = xlNone End If Next i End Sub
Merci beaucoup cela fonctionne a merveille et de plus j apprend toute
les fois avec toi Michel Gaboly :D
Michel Gaboly a formulé ce mercredi :
Sub Compare(c As Range)
Dim Sam, i As Integer
Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
zz = UBound(Sam)
For i = 0 To UBound(Sam)
if c = "" Then
c.Interior.ColorIndex = xlNone
ElseIf c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Sam(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub
Merci beaucoup cela fonctionne a merveille et de plus j apprend toute les fois avec toi Michel Gaboly :D
Michel Gaboly a formulé ce mercredi :
Sub Compare(c As Range) Dim Sam, i As Integer Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37) zz = UBound(Sam) For i = 0 To UBound(Sam) if c = "" Then c.Interior.ColorIndex = xlNone ElseIf c = Sheets("Code").Range("B4").Offset(0, i) Then c.Interior.ColorIndex = Sam(i) Exit For Else c.Interior.ColorIndex = xlNone End If Next i End Sub