Couleur d'une cellule d'un tableau

Bonjour a tous, je ne trouve pas la syntaxe exacte pour vérifier la couleur d'une cellule d'un tableau qui contient une seul colonne. J'ai essayé:

If tablo1(i + X, 1) > 0 And tablo1(i + X, 1).Interior.ColorIndex <> 4 Then 's'il y a quelque chose et qu'il n'y a pas de couleur vert

Bonjour CAPUCIN,

Il faudrait joindre un fichier pour t'aider.

Par contre peu importe comment tu as défini ta variable tablo1, elle n'est pas associée à une cellule. Donc tester tablo1(X,Y).Interior.ColorIndex dessus n'a à priori aucun sens.

Je suppose que tu as fait quelquechose du genre

Dim tablo1() as Variant
tablo1 = Range("A1:C25")

EDIT:

Le fait d'écrire "tablo1()" va générer un tableau de valeurs uniquement. Il n'y a plus de lien avec les cellules

Je ne peux pas t'envoyer mon fichier, il est pas mal complexe.

Donc, ce que je veux faire serait de vérifier un élément du tableau, puisqu'on ne parle plus de cellules.

Alors, quel serait la syntaxe pour vérifier si la couleur d'un élément du tableau est vert (code 4)?

tablo1 = Sheets("ASS").Range("I3:I" & Sheets("ASS").Range("A" & 65536).End(xlUp).Row)

Voilà un code qui fonctionne.

Je te laisse l'adapter à ton besoin.

Sub test()
Dim tableau As Range
Set tableau = Range("A1")

'possibilité 1
If tableau.Range("A1").Interior.ColorIndex = 4 Then
    Debug.Print "Je suis green"
Else
    tableau.Range("A1").Interior.ColorIndex = 4
End If

'possibilité 2
If tableau.Cells(1, 1).Interior.ColorIndex = 4 Then
    Debug.Print "Je suis green"
Else
    tableau.Cells(1, 1).Interior.ColorIndex = 4
End If
End Sub

ATTENTION, si tu utilises la méthode Cells, la cellule Cells(1,1) correspondra normalement à la cellule I3

set tableau = Sheets("ASS").Range("I3:I" & Sheets("ASS").Range("A" & 65536).End(xlUp).Row)

Je vais utiliser cell. Merci, c'est la syntaxe que je cherchais!

As-tu une idee, j'ai un erreur d'objet requis dans mon instruction?

tablo1 est bien défini ainsi que la variable i

tablo1.Cells(i, 1).Interior.ColorIndex = 4

Tu as bien défini la variable comme un range?

Dim blabla as Range
Set blabla = Range("A1:Z26")

if blabla.Cells(.......)

Alors la, je crois que tu as trouvé le probleme. La variable i est utiliser dans une boucle for next. C'est la boucle for next qui scan toute les positions dans mon tableau. Y a t-il une autre syntaxe qui me permettrait d'utiliser i pour verifier la couleur dans mon tableau?

            'la comparaison s'effectue sur une fenetre de 10 mnémoniques (5 au dessus et 5 en dessous) de chaque coté lorsqu'on a trouvé 2 mnémoniques identique
              'il faut trouvé  3 mnémoniques identiques dans la fenetre de recherche de chaque tableau pour assumer qu'il sagit bien de la meme mnémonique
              'la fenetre de gauche représente la version actuel (feuille ASS) (tableau 1)
    Dim plage1 As Integer
    Dim plage2 As Integer
    Dim nombre As Integer  'nbre de cellules identiques trouvées
    tablo1 = Sheets("ASS").Range("I3:I" & Sheets("ASS").Range("A" & 65536).End(xlUp).Row) 'la version actuelle (fenetre de gauche)
    tablo2 = Sheets("ASS2").Range("I3:I" & Sheets("ASS2").Range("A" & 65536).End(xlUp).Row) 'la version ancienne (fenetre de droite)
    limit1 = UBound(tablo1, 1) 'derniere cellule du tableau
    limit2 = UBound(tablo2, 1) 'derniere cellule du tableau

   'on cherche les mnémoniques du tableau 1 qui ne sont pas présentes dans le tableau 2:
    nombre = 0
    For i = 1 To limit1 'pour chacune des mnémonique du tableau 1
    nombre = 0
    If tablo1(i, 1) > 0 Then 's'il y a une mnémonique
        For i2 = 1 To limit2
            If tablo1(i, 1) = tablo2(i2, 1) Then  'on a trouver une mnémonique identique quelque part dans tableau 2
                  nombre = 0
                  plage1 = 5
                  plage2 = 5
                 'on vérifie pour chacune des 5 cellules suivante du tableau 1, si on trouve dans l'une des 5 cellules suivante du tableau 2
                  For X = 1 To plage1 'pour chacune des 5 cellules suivante du tableau 1
                       If (i + X) <= limit1 Then 'si on ne déborde pas du tableau
                            If tablo1(i + X, 1) > 0 Then  's'il y a une mnémonique
                                 For Y = 1 To plage2 'pour chacune des 5 cellules suivantes du tableau 2
                                      If (i2 + Y) <= limit2 Then 'si on ne déborde pas du tableau
                                          If tablo2(i2 + Y, 1) > 0 Then  's'il y a une mnémonique
                                             If tablo1(i + X, 1) = tablo2(i2 + Y, 1) Then
                                                 nombre = nombre + 1  'on cumule les cellules identiques trouvées
                                             End If
                                          Else: plage2 = plage2 + 1
                                          End If
                                       End If
                                 Next Y
                            Else: plage1 = plage1 + 1
                            End If
                       End If
                       If nombre > 2 Then: GoTo 1  'la recherche est suffisante pour confirmer
                  Next X
                 'on vérifie pour chacune des 5 cellules précédente du tableau 1, si elle se trouve dans l'une des 5 cellules prédedentes dans le tableau 2
                  plage1 = 5
                  plage2 = 5
                  For X = 1 To plage1 ''pour chacune des 5 cellules précedentes, du tableau 1
                       If (i - X) > 0 Then 'si on ne déborde pas du tableau
                            If tablo1(i - X, 1) > 0 Then  's'il y a une mnémonique
                                 For Y = 1 To plage2 'pour chacune des 5 cellules précedente du tableau 2
                                      If (i2 - Y) > 0 Then ''si on ne déborde pas du tableau
                                          If tablo2(i2 - Y, 1) > 0 Then 's'il y a une mnémonique
                                              If tablo1(i - X, 1) = tablo2(i2 - Y, 1) Then
                                                  nombre = nombre + 1 'on cumule les cellules identiques trouvées
                                              End If
                                          Else: plage2 = plage2 + 1
                                          End If
                                      End If
                                  Next Y
                            Else: plage1 = plage1 + 1
                            End If
                        End If
                        If nombre > 2 Then GoTo 1 'la recherche est suffisante pour confirmer
                   Next X
             End If
             If nombre > 2 Then 'on suppose que la mnémonique dans le tableau 2 est la bonne, donc on recherche la cellule suivante dans tableau 1
                GoTo 1
             End If
        Next i2 'on vérifie la cellule suivante du tableau 2
        tablo1.Cells(i, 1).Interior.ColorIndex = 4 'la mnémonique n'a pas été trouvé dans tableau 2:, donc on colore en vert
       'Sheets("ASS2").Rows(i + 2).Insert 'on ajoute une ligne vide au meme endroit dans tableau 2
       'Sheets("ASS2").Range("i" & i + 2).Interior.ColorIndex = 4 'on colore également du coté tableau 2
    End If
1   Next i 'on vérifie mnémonique suivante en tableau 1

Je viens d'essayer sans variable i et j'ai encore l'erreur "objet requis. Donc, il n'aime pas tablo1? pourtant tablo1 fonctionne bien dans mon sub.

set tablo1 = Sheets("ASS").Range("I3:I" & Sheets("ASS").Range("A" & 65536).End(xlUp).Row)
tablo1.Cells(2, 1).Interior.ColorIndex = 4

'la mnémonique n'a pas été trouvé dans tableau 2:, donc on colore en vert

Rechercher des sujets similaires à "couleur tableau"