Comparaison de couleur de cellules - VB/VBA/VBS - Programmation
Marsh Posté le 14-06-2012 à 10:14:30
Bonjour Tirets,
Dans Cells(A,i), A ne représente rien.
Je suppose que tu veux faire Range("A"&i) ?
Tu as bien aussi une feuille nommée "sheet1" ?
Marsh Posté le 14-06-2012 à 10:32:53
Bonjour Takama,
merci de ta réponse! Alors j'ai toujours une erreur mais le format Cells([indice colonne],[indice ligne]) existe bel et bien mais je pense que tu dois avoir raison je dois mettre des "" sur le A comme cela: Cells("A", i) le probleme c'est qu'il reste un problème dans le debogueur
l'utilisation de .Interior.ColorIndex est appropriée vous pensez?
Marsh Posté le 14-06-2012 à 11:04:33
Comme tu indiques, la propriété Cells a besoin d'un indice.
A ou "A" n'est pas un indice. Un indice doit être numérique.
Il faut donc utiliser :
If Worksheets("Sheet1" ).Range("A"&i).Interior.ColorIndex = Worksheets("Sheet1" ).Range("A12" ).Interior.ColorIndex Then
En étant sûr qu'une feuille porte bien le nom "sheet1".
Marsh Posté le 14-06-2012 à 11:19:02
Bon alors en fait la réponse c'est que ce n'est pas Cells([indice colonne],[indice ligne]) mais bien Cells([indice ligne]),[indice colonne])
Donc ce n'est pas Cells("A", i) mais Cells(i,"A" ).
La macro est longue a exécuter... Si qqun a un moyen de biaiser je suis preneur!
Marsh Posté le 14-06-2012 à 12:13:25
Autre question sur ma macro: With ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 100, 100, 60, 30)
c'est en reference absolu puisque le point de reference est le coin en haut a gauche quelqu'un sait il si c'est possible de se positionner par rapport au coin en haut a gauche de la Cellule en cours d'analyse?
Marsh Posté le 15-06-2012 à 09:01:59
Bon alors pour ceux qui seraient intéressés, le code est celui ci:
Sub Solution()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim W As Single
i = 0
j = 0
k = 0
For i = 12 To 20 'analyse les lignes de 1 a 20
If Worksheets("Gantt" ).Cells(i, "A" ).Interior.ColorIndex = Worksheets("Gantt" ).Range("A5" ).Interior.ColorIndex Then
'vérifie la concordance de couleur entre les 2 cellules
For j = 9 To 248 'si concordance il y a il analyse les 239 colonnes de cette ligne
If Cells(j, i).Interior.ColorIndex <> Range("A12" ).Interior.ColorIndex Then 'si la couleur de la cellule est differente de celle de reference alors
Do While Cells(j + 1, i).Interior.ColorIndex = Cells(j, i).Interior.ColorIndex
k = k + 1
Loop 'on compte le nombre de cellule différentes a la suite
W = Cells(j, i).Width * k
With ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, Cells(j, i).Left, Cells(j, i).Offset(1, 0).Top, W, Cells(j, i).Height)
With .Fill
.ForeColor.RGB = RGB(128, 128, 0)
.Transparency = 0.5
End With
With .Line.DashStyle = msoLineDashDot
End With
End With
On dessine ensuite dans la ligne du dessous de la cellule a la couleur différente de la couleur de référence un objet rectangle a bord ronds
k = 0
End If
Next j
End If
Next i
End Sub
En espérant que ça pourra aider certain d'entre vous, je teste en ce moment mon code... qui ne marche pas! gros problème avec ce fichu .Interior.ColorIndex, je sais pas pourquoi il plante
Marsh Posté le 14-06-2012 à 08:51:17
Bonjour a tous,
je bosse sur un petit projet et j'ai du mal a faire fonctionner une macro, tout est dans le titre je voudrais comparer la couleur d'une cellule de référence et d'une autre et selon si c'est différent créer une forme rectangulaire transparente au dessus (je m’entraîne un peu)
alors voila j'ai donc ca:
Sub Solution()
Dim i As Integer
Dim j As Integer
For i = 9 To 100
If Worksheets("Sheet1" ).Cells(A, i).Interior.ColorIndex = Worksheets("Sheet1" ).Range("A12" ).Interior.ColorIndex Then pour l'instant c'est la ligne qui me pose probleme mais je suppose que le probleme se representera deux lignes en dessous...
For j = 9 To 248
If Cells(i, j).Interior.ColorIndex <> Range("A12" ).Interior.ColorIndex Then
With ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 100, 100, 60, 30)
With .Fill
.ForeColor.RGB = RGB(128, 0, 0)
.BackColor.RGB = RGB(170, 170, 170)
.Transparency = 0.5
End With
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Orientation = xlHorizontal
End With
End If
Next j
End If
Next i
End Sub
Merci de votre avis eclaire