XL 2019 Calcul d'une sequence

Mopire

XLDnaute Junior
Bonjour à tous,

Dans mon fichier je voudrais connaitre les séquences de nombre de buts qu'une équipe a fait.
Dans mon exemple je voudrai savoir combien de fois une équipe a fait de match a un but (but total du match) à la suite.


Merci d'avance de me donner des pistes.
 

Pièces jointes

  • sequence.xlsx
    30.5 KB · Affichages: 9
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Mopire,

Voyez le fichier joint et cette formule en K5 à tirer sur la plage K5:O24 :
Code:
=SOMMEPROD(((INDEX(calendrier_ligue_1_2010_2011;;3)=$J5)+(INDEX(calendrier_ligue_1_2010_2011;;4)=$J5))*(INDEX(calendrier_ligue_1_2010_2011;;7)=--GAUCHE(K$4)))
Pour chaque colonne P Q R la formule est adaptée.

A+
 

Pièces jointes

  • sequence(1).xlsx
    32.7 KB · Affichages: 5

job75

XLDnaute Barbatruc
Si vous voulez obtenir autre chose que des zéros pour Arles AC écrivez Arles_AC en J5.

Edit : pareil pour St. Etienne.

Le respect de l'orthographe est ici essentiel.
 

Pièces jointes

  • sequence(2).xlsx
    32.7 KB · Affichages: 3
Dernière édition:

Mopire

XLDnaute Junior
Bonjour,
Merci de ta réponse mais c'est pas ce que je recherche a faire. Je recherche a savoir le nombre de fois qu'une équipe a fait par exemple 1 but consécutif. Si au maximum il y a eu 2 fois de suite des matchs a 1 buts donc on affiche 2.
J'espère que c'est plus claire comme ca !!
 

Mopire

XLDnaute Junior
Dans ce fichier je vous ai mis un exemple de ce que cela doit donner !!
Dans l'exemple il y a 2 fois de suite auxerre qui a fait deux fois 1 buts au maximum donc on affiche 2. Ils ont fait 3 fois de suite au maximum 2 buts donc on affiche 3...
J'espère que c'est plus clair ainsi !!
 

Pièces jointes

  • sequence_2.xlsx
    12.8 KB · Affichages: 5

Mopire

XLDnaute Junior
C'est juste pour l'exemple, pour vous montrez le concept. Dans le dernier fichier j'ai allongé Auxerre sur toutes les lignes et il y avait donc Auxerre - Auxerre donc j'ai mis lens. C'était pour avoir les résultats d'une équipe seulement pour être plus clair et pourvoir les compter.
 

Mopire

XLDnaute Junior
J'ai fais cette formule qui me dit le nombre de 1 but consécutif mais c'est de toutes les équipes, comment mettre en condition seulement une équipe en particulier (HOME + AWAY)?

formule matricielle
VB:
=MAX(FREQUENCE(SI(calendrier_ligue_1_2010_2011[Total_but]=1;LIGNE(calendrier_ligue_1_2010_2011[Total_but]));(calendrier_ligue_1_2010_2011[Total_but]<>1)*LIGNE(calendrier_ligue_1_2010_2011[Total_but])))
 

JHA

XLDnaute Barbatruc
Bonjour à tous,
Bonjour Job75,

Sans refaire un gros travail pour regrouper les données par équipe je ne vois pas.
Ci joint un exemple à vérifier concernant le fichier exemple.

JHA
 

Pièces jointes

  • sequence(2).xlsx
    76.2 KB · Affichages: 10
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Mopire, JHA, le forum,

Bon j'ai pris mon courage à 2 mains, voyez le fichier joint et cette macro :
VB:
Sub MAJ()
Dim S As Range, nlig&, D As Range, dest, i&, nom$, source, j&, but As Byte, maxi&, compte&
Set S = [A1].CurrentRegion
nlig = S.Rows.Count
If nlig = 1 Then Exit Sub
Set D = [sequence_2010_2011] 'tableau structuré
dest = D 'matrice, plus rapide
Application.ScreenUpdating = False
S.Columns(2).Insert xlToRight 'insère une colonne auxiliaire
For i = 1 To UBound(dest)
    nom = dest(i, 1)
    S.Columns(2).ClearContents 'RAZ de la colonne auxiliaire
    source = S.Value2 'matrice, plus rapide
    For j = 2 To nlig
        If source(j, 4) = nom Or source(j, 5) = nom Then source(j, 2) = source(j, 3) 'copie la date
    Next j
    S.Columns(2) = Application.Index(source, , 2) 'restitue les dates
    S.Sort S(1, 2), xlAscending, Header:=xlYes 'tri sur la colonne auxiliaire
    source = S.Value2 'matrice, plus rapide
    '---colonnes 2 à 6---
    For but = 1 To 5
        maxi = 0
        For j = 1 To nlig
            If source(j, 2) = "" Then Exit For
            If source(j, 8) <> but Then compte = 0 Else _
                compte = compte + 1: If compte > maxi Then maxi = compte
        Next j
        dest(i, but + 1) = maxi
    Next but
    '---colonne 7---
    maxi = 0
    For j = 1 To nlig
        If source(j, 2) = "" Then Exit For
        If source(j, 8) <> 0 And source(j, 8) <> 1 Then compte = 0 Else _
            compte = compte + 1: If compte > maxi Then maxi = compte
    Next j
    dest(i, 7) = maxi
    '---colonne 8---
    maxi = 0
    For j = 1 To nlig
        If source(j, 2) = "" Then Exit For
        If source(j, 8) <> 2 And source(j, 8) <> 3 Then compte = 0 Else _
            compte = compte + 1: If compte > maxi Then maxi = compte
    Next j
    dest(i, 8) = maxi
    '---colonne 9---
    maxi = 0
    For j = 1 To nlig
        If source(j, 2) = "" Then Exit For
        If Val(source(j, 8)) < 4 Then compte = 0 Else _
            compte = compte + 1: If compte > maxi Then maxi = compte
    Next j
    dest(i, 9) = maxi
Next i
'---restitution---
S.Columns(2).Delete xlToLeft 'supprime la colonne auxiliaire
S.Sort S(1, 2), xlAscending, Header:=xlYes 'ordre initial
D = dest
End Sub
Edit : If nlig = 1 Then Exit Sub

Les résultats sont exactement les mêmes que ceux de JHA.

A+
 

Pièces jointes

  • sequence VBA(1).xlsm
    40.6 KB · Affichages: 6
Dernière édition:

Mopire

XLDnaute Junior
Merci beaucoup Job75 aussi. Tu as du passé bon moment aussi pour avoir ce résultat. Franchement vous êtres trop fort.
Comme je veux le faire pour plusieurs saison, je vais partir sur la méthode de Job75, peu être je reviendrais vers toi si jamais j'ai un soucis.
Encore merci a vous deux.
 

Discussions similaires

Statistiques des forums

Discussions
312 799
Messages
2 092 241
Membres
105 305
dernier inscrit
Momone59