Condition et écart d'une ligne colorée

gogote

XLDnaute Nouveau
Bonjour tout le monde,


je bloque sur un procédé que j'aimerai développer dans le cadre d'une étude personnelle.

Je souhaiterai avoir l'information suivante sur un tableau :
Lorsqu'une ligne est colorée en vert, combien de fois faut-il attendre avant qu'elle ne le soit à nouveau.

Exemple : j'ai une ligne verte. La ligne suivante est à nouveau verte : --> 0
la ligne est verte, les deux suivantes sont blanches puis la troisième est à nouveau verte --> 2

Et ainsi de suite, cf le fichier.
Si vous pouviez me débloquer de cette galère, alléluia !!!

Merci à vous.
 
Dernière édition:

Paf

XLDnaute Barbatruc
Re : Condition et écart d'une ligne colorée

Bonjour,

un essai macro; l'indication est portée en colonne S

Code:
Sub ProchaineLigneVerte()
 Dim Derl As Long, i As Long, j As Long
 Derl = Feuil1.Range("A" & Feuil1.Rows.Count).End(xlUp).Row
 For i = 1 To Derl
    If Cells(i, 1).Interior.ColorIndex = 50 Then
        For j = i + 1 To Derl
            k = k + 1
            If Cells(j, 1).Interior.ColorIndex = 50 Then
                Cells(i, 19) = k - 1
                i = j - 1
                Exit For
            End If
        Next
        k = 0
    End If
 Next
End Sub

A+
 

gogote

XLDnaute Nouveau
Re : Condition et écart d'une ligne colorée

Salut paf et merci beaucoup pour ta réponse !

Tu as bien cerné l'idée et la macro m'a l'air correcte dans cette logique !

Cependant, j'aimerai que celle-ci soit inversée, à savoir que la première ligne verte affiche 4, la seconde 2, la troisième 4 et ainsi de suite ;)
 

Iznogood1

XLDnaute Impliqué
Re : Condition et écart d'une ligne colorée

Bonjour
une autre proposition ; renvoie -1 s'il n'y a pas de prochaine ligne verte
VB:
Option Explicit

Function prochaine_ligne_verte() As Integer
  Dim r As Range
  prochaine_ligne_verte = 0
  Dim nextRow As Range
  
  For Each r In Range("A" & Application.Caller.Row + 1 & ":A" & Cells(Rows.Count, "A").End(xlUp).Row)
    If r.Interior.Color = 7457838 Then
      Set nextRow = r
      Exit For
    End If
  Next r
  
  If nextRow Is Nothing Then
    prochaine_ligne_verte = -1
  Else
    prochaine_ligne_verte = nextRow.Row - Application.Caller.Row - 1
  End If
End Function
 

Paf

XLDnaute Barbatruc
Re : Condition et écart d'une ligne colorée

re et bonjour Iznogood1

en fait cela revient à indiquer en ligne verte le nombre de lignes blanches précédentes, et non plus sic:"Lorsqu'une ligne est colorée en vert, combien de fois faut-il attendre avant qu'elle ne le soit à nouveau."

Code:
Sub ProchaineLigneVerte()
 Dim Derl As Long, i As Long, j As Long
 Derl = Feuil1.Range("A" & Feuil1.Rows.Count).End(xlUp).Row
 For i = 2 To Derl
    k = k + 1
    If Cells(i, 1).Interior.ColorIndex = 50 Then
        Cells(i, 19) = k - 1
        k = 0
    End If
 Next
End Sub

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 446
Messages
2 088 491
Membres
103 870
dernier inscrit
didiexcel