Rechercher les cellules contenant une meme valeur dans dans une feuille et les c

Résolu
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009 - 23 févr. 2009 à 14:10
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

4 réponses

cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 1
24 févr. 2009 à 16:13
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
3
cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 1
23 févr. 2009 à 22:06
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
0
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
24 févr. 2009 à 13:37
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
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
24 févr. 2009 à 13:51
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 .
0
Rejoignez-nous