Somme des couleurs différents existe dans un tableau

Bonjour à tous,

Je cherche un code qui permet de compter combien de couleur différent existe dans un tableau, j'ai utilisé le code en dessous mais il ne répond pas à mes besoins dans le cas où le couleur peut être trouver plusieurs fois dans le tableau.

Merci de m'aider si vous avez une autre solution plus efficace.

Merci d'avance,

code<

Dim i As Integer

Dim somme As Integer

somme = 0

For i = 1 To 1000

If Cells(i, 1).Interior.ColorIndex <> Cells(i + 1, 1).Interior.ColorIndex Then

somme = somme + 1

Else

'End If

Next

Cells(1, 8) = somme

End sub

Bonjour,

Ce n'est pas bien de stocker des informations sous forme de couleur uniquement, sinon pour ta solution un truc qui fera l'affaire:

Dim i As Integer
Dim colec As New Collection

 For i = 1 To 1000
   On Error Resume Next
   colec.Add Cells(i, 1).Interior.ColorIndex, CStr(Cells(i, 1).Interior.ColorIndex)
 Next i

 Cells(1, 8) = colec.Count

J'utilise une astuce qui est qu'une collection ne peut pas avoir 2 éléments qui possèdent la même clé d'indexation, et en clé j'utilise la couleur (qu'il faut convertir en texte), j'ajoute un on error resume next pour que si la clé est déjà utilisée, ça passe simplement à la ligne suivante. Ainsi, tu auras autant de valeurs dans ta collection que tu auras de couleurs différentes.

Je vous remercie beaucoup, le code ça fonctionne très bien, le problème est résolu.

Re,

De rien!

Bonjour à tous,

Dans le même principe, je cherche une fonction qui permet de compter la somme des couleurs différents d'une plage sélectionnée.

Mais le code en dessous ça donne toujours un zéro.

Merci d'avance,

<Public Function NB_Couleurs(Cell As Range) As Integer

Dim colec As New Collection

For Each Cell In Selection.Cells

On Error Resume Next

colec.Add Cell.Interior.ColorIndex, CStr(Cell.Interior.ColorIndex)

Next Cell

NB_Couleurs = colec.Count - 1

End Function>

Bonjour à tous,

Dans le même principe, je cherche une fonction qui permet de compter la somme des couleurs différents d'une plage sélectionnée.

Mais le code en dessous ça donne toujours un zéro.

Merci d'avance,

Bonjour, et quelle est la différence que tu souhaites par rapport à la première fonction que j'ai fait? avec la formule que je te proposais, tu comptais déjà le nombre de couleurs différentes d'une plage sélectionnée

Re,

Oui c'est ça le problème, ce code me donne toujours un zéro comme résultat par contre lorsque je l'ai essayé avec une bouton il a marché très bien!!! je sais pas, il manque quoi comme donnée pour qu'il fonctionne bien lorsque je sélectionne une plage,

Re,

Il faut changer 2-3 choses dans ton programme pour pouvoir faire ce que tu souhaites, c'est à dire une fonction personnalisée:

Function NB_Couleurs(plage As Range) As Integer
Application.Volatile
Dim colec As New Collection
Dim cel As Range

For Each cel In plage.Cells
    On Error Resume Next
    colec.Add cel.Interior.ColorIndex, CStr(cel.Interior.ColorIndex)
Next cel
NB_Couleurs = colec.Count - 1
End Function
Rechercher des sujets similaires à "somme couleurs differents existe tableau"