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

Signaler
Messages postés
36
Date d'inscription
dimanche 2 février 2003
Statut
Membre
Dernière intervention
4 juin 2009
-
Messages postés
36
Date d'inscription
dimanche 2 février 2003
Statut
Membre
Dernière intervention
4 juin 2009
-
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

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
48
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
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
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.
Messages postés
133
Date d'inscription
dimanche 23 juin 2002
Statut
Membre
Dernière intervention
3 janvier 2015
3
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
Messages postés
36
Date d'inscription
dimanche 2 février 2003
Statut
Membre
Dernière intervention
4 juin 2009

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 :-)