Rechercher les cellules contenant une meme valeur dans dans une feuille et les c [Résolu]

Messages postés
34
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
27 février 2009
- - Dernière réponse : cnt
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010
- 24 févr. 2009 à 16:13
Bonjour,

A l'aide de VBA, j'essaie de colorier de la même couleur des cellules qui ont une même valeur dans une base de données excel 2003. Voici le code que j'essaie et qui ne fonctionne pas. Où commets-je l'erreur ?
Merci beaucoup à celles ou ceux qui me mettront sur la voie.
Sub AP_met_couleur_cell_identique()
Application.ScreenUpdating = False
toto = 6
For Each cell In Range("B5:Z30")
If cell.Value = "" Then
cell.Interior.ColorIndex = xlNone
Else
v1 = cell.Value
For Each celll In Range("B5:Z30")
v2 = celll.Value
If v1 = v2 Then
cell.Interior.ColorIndex = toto
celll.Interior.ColorIndex = toto
End If
Next
End If
toto = toto + 8
Next
End Sub
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010
3
Merci
Bonjour
Au vue de l'erreur qui apparait chez toi, il me semble que tu n'appliques pas le Modulo des 56 couleurs du format des cellules de ta sélection.
Parce que 51 + 6 = 57, donc il y a dépassement de ColorIndex.
  Chez moi je colorie bien les 56 couleurs sur 56 cellules contenants des valeurs différentes.

Bonne journée
CNTJC

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cnt
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010
0
Merci
Bonsoir Nasilo
 Je te soumets la version corrigée

Sub AP_met_couleur_cell_identique()
Application.ScreenUpdating = False
toto = 6
For Each cell In Range("B5:Z30
")
    If cell.Value = "" Then
        cell.Interior.ColorIndex = xlNone
    Else
        v1 = cell.Value
        For Each celll In Range("B5:Z30
")
            If celll.Value = "" Then
                celll.Interior.ColorIndex = xlNone
            Else
                v2 = celll.Value
                If v1 = v2 Then
                    cell.Interior.ColorIndex =
toto


                    celll.Interior.ColorIndex =
toto


                End If
            End If
        Next
    End If
   
toto
=
toto
Mod 56  -----> il n'y a que 56 couleurs
   
toto
=
toto
+ 1
    If
toto
= 1 Then
toto
= 2
Next
Application.ScreenUpdating = True
End Sub



salut
CNTJC
Commenter la réponse de cnt
Messages postés
181
Date d'inscription
mardi 18 novembre 2008
Statut
Membre
Dernière intervention
4 février 2011
0
Merci
Hello,

Juste un avis à donner concernant les limites : si il n'existe que 56 couleurs, je pense que ton coloriage n'acceptera pas plus de 28 données différentes multiples (par exemple une plage de 60 cellule dont 4 ont des valeurs unique et dont 56 vont par paire).
Ton code va passer 2 fois sur les 2 cellules partageant la même valeur, 3 fois s'il s'agit de3 cellules, 4fois...

Lors de la sélection de ta variable v1, peut-être qu'un test sur la couleur de la cellule avant sélection pourrait être utile afin de ne pas recolorier ce qui l'est déjà.

BR

USERRRQI115
Simple user
Great brain
Commenter la réponse de userrrqi115
Messages postés
34
Date d'inscription
vendredi 18 avril 2008
Statut
Membre
Dernière intervention
27 février 2009
0
Merci
bonjour,
J'ai effectivement un problème...
La macro arrête son éxécution au bout de 51 cellules... et une erreur d'éxécution '1004' m'est signalée (impossible de définir la propriété colorindex de la classe interior). De plus je me retrouve néanmoins avec des cellules ne contenant pas la même valeur coloriée d'une même couleur parmi les cinquantes et une cellules...
Il va me falloir aborder le problème d'une autre manière je pense ou trouver une autre méthode qu'interior.colorindex pour ce projet ...
merci de votre aide et bonne après-midi .
Commenter la réponse de nasilo