Détecter des séries (par ligne) dans un tableau

dionys0s

XLDnaute Impliqué
Bonjour le forum :)

je cherche une solution en VBA pour détecter des séries dans une tableau. Mon fichier exemple est parlant il me semble.

J'ai un peu cherché sur le Internet, mais mes mots-clé me renvoient vers des pages sans rapport.
J'imagine bien une solution avec une boucle, et 2 variables (l'une qui mémoriserait la meilleure série en cours, et l'autre qui testerait), mais j'ai le sentiment qu'il y a moins lourd :confused:

Merci d'avance pour votre aide.

dionys0s
 

Pièces jointes

  • Exemple.xlsm
    9.7 KB · Affichages: 47
  • Exemple.xlsm
    9.7 KB · Affichages: 51
  • Exemple.xlsm
    9.7 KB · Affichages: 50

ERIC S

XLDnaute Barbatruc
Re : Détecter des séries (par ligne) dans un tableau

Bonjour

moins lourd je ne sais pas, plus optimisé que mon premier jet sans doute

à tester

Code:
Sub e()
dercol = Cells(1, Columns.Count).End(xlToLeft).Column
derlig = Range("A" & Rows.Count).End(xlUp).Row
nomencours = 1
compteencours = 0
nommeilleur = 1
comptemeilleur = 0
For i = 2 To derlig
    actuel = 0
    For j = dercol To 2 Step -1
        If Cells(i, dercol).Value = "A" Or Cells(i, dercol).Value = "B" Then
            If Cells(i, j).Value = "A" Or Cells(i, j).Value = "B" Then
                actuel = actuel + 1
            Else
                j = 2
            End If
        End If
    Next
    If compteencours < actuel Then
        compteencours = actuel
        nomencours = i
    End If
    MsgBox (Cells(i, 1) & ":" & actuel & "----- meilleur actuel : " & Cells(nomencours, 1) & ":" & compteencours)
Next
For i = 2 To derlig
    actuel = 0
    maxactuel = 0
    For j = dercol To 2 Step -1
        If Cells(i, dercol).Value = "A" Or Cells(i, dercol).Value = "B" Then
            If Cells(i, j).Value = "A" Or Cells(i, j).Value = "B" Then
                actuel = actuel + 1
            Else
                If actuel > maxactuel Then
                    maxactuel = actuel
                    actuel = 0
                End If
            End If
        End If
    Next
    If actuel < maxactuel Then actuel = maxactuel
    If comptemeilleur < actuel Then
        comptemeilleur = actuel
        nommeilleur = i
    End If
    MsgBox (Cells(i, 1) & ":" & actuel & "----- meilleur actuel ou passé : " & Cells(nommeilleur, 1) & ":" & comptemeilleur)
Next
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 938
Messages
2 093 768
Membres
105 816
dernier inscrit
TASTET B