Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1540 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comparaison de couleur de cellules

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comparaison de couleur de cellules

n°2145767
Tiret2
Posté le 14-06-2012 à 08:51:17  profilanswer
 

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

mood
Publicité
Posté le 14-06-2012 à 08:51:17  profilanswer
 

n°2145775
Takama13
Posté le 14-06-2012 à 10:14:30  profilanswer
 

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" ?

n°2145778
Tiret2
Posté le 14-06-2012 à 10:32:53  profilanswer
 

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?

n°2145786
Takama13
Posté le 14-06-2012 à 11:04:33  profilanswer
 

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


Message édité par Takama13 le 14-06-2012 à 11:04:52
n°2145791
Tiret2
Posté le 14-06-2012 à 11:19:02  profilanswer
 

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!

n°2145796
Tiret2
Posté le 14-06-2012 à 12:13:25  profilanswer
 

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?

n°2145909
Tiret2
Posté le 15-06-2012 à 09:01:59  profilanswer
 

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


Message édité par Tiret2 le 15-06-2012 à 11:47:45

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comparaison de couleur de cellules

 

Sujets relatifs
[Edition] Modifier la couleur de fond de SAIListFillrange de ComboBox = nom de plage de cellules
Remplir une cellule td avec une couleur et un paddingProbleme couleur de fond newsletter
couleur de cellule tableau automatique fichier odt phpHelp comparaison de deux fichier perl
CSS couleur texte + position texteLister cellules identiques
code couleur de fond[RESOLU] Couleur de fond
Plus de sujets relatifs à : Comparaison de couleur de cellules


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR