Je suis nouveau à VBA, donc toute aide est grandement appréciée. Pour une gamme spécifique de cellules, j'ai si des déclarations. Donc, pour Cellules.Value = 1 code>, je veux des cellules If cell.Value = "1" Then cell.Offset(0, 1 & 4 & 7 & 10).Cells.Interior.Color = Range("B12").Interior.Color
3 Réponses :
Vous pouvez essayer ceci:
Option Explicit
Sub Test()
Dim C As Range
With ThisWorkbook.Sheets(1) 'change this for the name of your sheet
For Each C In .Range("A25:A31")
If C = 1 Then
Union(C, .Cells(C.Row, 4), .Cells(C.Row, 7), .Cells(C.Row, 10), .Cells(C.Row, 13)).Interior.Color = 2 'whatever colour you need
End If
Next C
End With
End Sub
Heureux de l'aide. Marquez-le comme réponse afin que les autres puissent le trouver.
Dim v
Set Rng1 = Range("A25:A31")
Set Rng2 = Range("B25:B31")
For Each cell In Rng1.Cells
v = cell.Value
Select Case v
Case 1,2,3,4,5:
cell.EntireRow.Range("D1,G1,J1,M1").Interior.Color = _
Range("B11").Offset(v, 0).Interior.Color
End Select
Next Cell
Note the Range() is relative to EntireRow, so as written it will always operate on that row.
Je suis d'accord avec ce que @johncoleman a commenté, mais si vous voulez VBA, je pense que c'est ce que vous recherchez. Mais @timwilliams est plus avancé.
Sub ColorCells()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
For Each cel In ws.Range("A25:A31")
If cel.Value = 1 Then
cel.Resize(, 2).Interior.Color = Range("B12").Interior.Color
cel.Offset(, 3).Interior.Color = Range("B12").Interior.Color
cel.Offset(, 6).Interior.Color = Range("B12").Interior.Color
cel.Offset(, 9).Interior.Color = Range("B12").Interior.Color
ElseIf cel.Value = 2 Then
cel.Resize(, 2).Interior.Color = Range("B13").Interior.Color
cel.Offset(, 3).Interior.Color = Range("B13").Interior.Color
cel.Offset(, 4).Interior.Color = Range("B13").Interior.Color
cel.Offset(, 9).Interior.Color = Range("B13").Interior.Color
ElseIf cel.Value = 3 Then
cel.Resize(, 2).Interior.Color = Range("B14").Interior.Color
cel.Offset(, 3).Interior.Color = Range("B14").Interior.Color
cel.Offset(, 6).Interior.Color = Range("B14").Interior.Color
cel.Offset(, 9).Interior.Color = Range("B14").Interior.Color
ElseIf cel.Value = 4 Then
cel.Resize(, 2).Interior.Color = Range("B15").Interior.Color
cel.Offset(, 3).Interior.Color = Range("B15").Interior.Color
cel.Offset(, 6).Interior.Color = Range("B15").Interior.Color
cel.Offset(, 9).Interior.Color = Range("B15").Interior.Color
ElseIf cel.Value = 5 Then
cel.Resize(, 2).Interior.Color = Range("B16").Interior.Color
cel.Offset(, 3).Interior.Color = Range("B16").Interior.Color
cel.Offset(, 6).Interior.Color = Range("B16").Interior.Color
cel.Offset(, 9).Interior.Color = Range("B16").Interior.Color
End If
Next cel
End Sub
Basé sur votre description de votre problème, vous pouvez utiliser le formatage conditionnel plutôt que VBA.