Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…