Effectuer une recherche dans un tableau

Bonjour à tous,

Je dispose d'un tableau de données, comprenant seulement deux types de données à savoir, des 0 et des 1 répartis aléatoirement.

Mon objectif est de créer une fonction qui va repérer des séries de 10 zéros d'affilée, et par colonne (pas par ligne). Une fois cette série repérée, j'aimerais changer la couleur de toutes les cellules de la série en rouge.

Par exemple, si j'ai dans une colonne la série suivante : 1 1 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 1 1 (pas de série détectée)

1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 (série de 10 zéros détectée)

Pour le moment j'ai écrit ce bout de code là, mais rien ne se passe. Auriez-vous des suggestions ou une autre façon de le faire fonctionner ?

Public Sub Detecter_Bad_Serie()

Dim VarCol As Integer, VarLig As Integer

Dim j As Integer, x As Integer

x = 9

j = 0

For VarCol = 5 To 12

    For VarLig = 2 To 1000

        If Cells(VarLig, VarCol).Value = "0"
        j = j + 1
        End If

        If j > 9 Then

            For x = 9 To 0
            Cells((VarLig - x), VarCol).Interior.Color = RGB(255, 0, 0)
            Next
        j = 0
        End If

    Next

Next

End Sub

Merci d'avance pour toutes suggestions

Paul

Bonjour,

Voici en pièce jointe le fichier exemple

Bonjour

voici une proposition

fred

Sub detect()
Dim i As Long
Dim col As Byte
Dim debut As Long
For col = 5 To 6
    For i = 1 To Cells(Rows.Count, col).End(xlUp).Row
        If Cells(i, col) = "0" And Cells(i, col).Interior.Color <> RGB(255, 0, 0) Then
        For j = i To i + 9
            If Cells(j, col) <> "0" Then Exit For
            If j = i + 9 Then Range(Cells(i, col), Cells(j, col)).Interior.Color = RGB(255, 0, 0)
        Next j
        End If
    Next i
Next col

End Sub

Re,

Essaye le code suivant en l'adaptant si besoin est, car le code suivant teste la colonne E uniquement :

Sub detecterSerie()
    For i = 1 To Sheets("Feuil1").Range("E" & Rows.Count).End(xlUp).Row - 9
        If WorksheetFunction.Sum(Range(Cells(i, 5), Cells(i + 9, 5))) = 0 Then
            Range(Cells(i, 5), Cells(i + 9, 5)).Interior.Color = RGB(255, 0, 0)
        End If
    Next i
End Sub

Édit : Salut Fred. Tu a été plus rapide

Re :

Hello Raja...

Voici le code de Raja, plus simple, mais qui corrige le même problème que le mien sur la colonne F qui mettait en évidence les 14 zéro de suite, au lieu des 10 premiers...

a+

fred

Sub detecterSerie()

For col = 5 To 6
    For i = 1 To Sheets("Feuil1").Cells(Rows.Count, col).End(xlUp).Row - 9
        If Cells(i, col).Interior.Color <> RGB(255, 0, 0) And WorksheetFunction.Sum(Range(Cells(i, col), Cells(i + 9, col))) = 0 Then
            Range(Cells(i, col), Cells(i + 9, col)).Interior.Color = RGB(255, 0, 0)
        End If
    Next i
Next col
End Sub

Super ça fonctionne très bien, merci les gars

A bientôt

Rechercher des sujets similaires à "effectuer recherche tableau"