[VBA excel] comment atteindre la valeur différente suivante ?

Résolu
outofbusiness Messages postés 36 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 4 juin 2009 - 16 avril 2007 à 10:12
outofbusiness Messages postés 36 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 4 juin 2009 - 16 avril 2007 à 12:02
bonjour,

j'ai une colonne qui se présente de cette façon : 1;1;1;1;2;2;2;2;2;2;3;3 etc... je voudrais parcourir cette colonne de haut en bas, mais après avoir "vu" une valeur, (par exemple 1) sauter à la prochaine valeur différente, soit passer à la ligne 5, ou on a le premier 2; puis pareil pour 3, etc...
j'ai pas d'idée comment faire....
pourriez vous m'aider svp ??

4 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 avril 2007 à 10:46
Salut,

Essaie ce petit bout de code qui colore les cellules en rouge
il colore le premier 1 le premier 2 etc.... (pour la colonne A)
A toi de l'adapter pour en faire ce que tu souhaites
Dim NumLigne As Long
Dim ValeurCourante As Integer
Dim Ancienne As Integer
NumLigne = 1
Call Range("A" & NumLigne).Activate
'Boucle jusqu'à ce qu'une cellule soit vide
While Not IsEmpty(ActiveCell)
   'récupère la valeur de la cellule
   ValeurCourante = ActiveCell.Value
   'Si les valeur sont différentes
   If Ancienne <> ValeurCourante Then
       'on colre l'intérieur en rouge
       ActiveCell.Interior.Color = vbRed
       'on mémorise la valeur
       Ancienne = ValeurCourante
   End If
   'on passe à la cellule suivante
   NumLigne = NumLigne + 1
   Call Range("A" & NumLigne).Activate
Wend, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
16 avril 2007 à 10:21
Bonjour, je ne sais pas s'il existe une instruction te permettant de faire cela directement, mais il te suffirait de parcourir ta colonne tant que la valeur n'est pas différente et que tu n'aies pas atteint la fin de la colonne.

Donc la seul chose que tu dois savoir pour cela est comment identifier la derniere ligne car je pense que tu dois savoir passer a la ligne suivante.
0
cs_akzo Messages postés 133 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 3 janvier 2015 3
16 avril 2007 à 10:59
essaye avec ceci aussi peut etre une autre idée

Sub teste()
Dim chaine, e
'donne la premiere position dans la chaine
y = 1
'dans chaine tu mets tes valeurs possible ici de 1 a 9
chaine = "123456789"
'creation boucle pour tester de 1 a 50 cellules
For x = 1 To 50 Step 1
'e donne la valeur que tu recherche
e = Mid(chaine, y, 1)
'teste la valeur de la cellule et la colorie en jauneIf Cells(x, 1) CInt(e) Then y y + 1: Cells(x, 1).Select: Selection.Interior.ColorIndex = 6
Next x 
End Sub
0
outofbusiness Messages postés 36 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 4 juin 2009
16 avril 2007 à 12:02
yes !!!
merci jrivet, ca s'intègre parfaitement dans le code que j'avais déjà :D
en attendant, j'avais déjà écrit un truc qui marchait mais moyen car il s'intégrait pas du tout au code :

while cells(i,3)<>cells(i-1,8)
i=i+1
Wend

je sais c'est pas terrible, mais je suis pas une star en programmation, je m'améliore toutefois petit à petit, notamment grace à vos contributions sur ce forum :-)
0
Rejoignez-nous