XL 2016 Foot : série de performance en dynamique

Phillip

XLDnaute Occasionnel
Bonjour,

Bon, on est dans la période du foot...Et je prépare la saison de ligue 1 21-22. J'aimerais, pour chaque équipe, aligner les séries VVV, ou VDN, ou NNN, etc...

J'ai un tableau où je saisirais tous les résultats. J'ai crée une formule qui marche très bien pour la 1° journée. Elle va chercher le résultat d'Angers par exemple, et si Angers a gagné, met un V dans la cellule...

Le problème, c'est dès la 2° journée, ma formule de la 1° journée ne garde pas le résultat de la 1°, mais évolue...Et le comportement de ma formule est normal, puisque je lui dis que si mon nombre de matches joués est différent de 1, mettre "D"...

Je ne m'en sors pas...

Un avis éclairé ?

merci

Cordialement

Phillip
 

Pièces jointes

  • test-serie-foot.xlsx
    28.5 KB · Affichages: 15

Phillip

XLDnaute Occasionnel
Il n'y a pas de dates...On rentre les résultats un par un...On écrit le résultat en I3 pour angers à la première journée, en J3 pour angers à la deuxième journée....En I4 pour le club suivant à la première journée, en J4 pour la 2° journée, etc...

Merci pour ton aide
 

Pièces jointes

  • test-serie-foot.xlsx
    28.5 KB · Affichages: 11

Phillip

XLDnaute Occasionnel
Hello,

Je ne désespère pas mais j'ai changé mon fusil d'épaule et décidé de partir en macro...J'ai remis un post car j'ai un problème de recherche avec 2 critères... J'ai mis un petit fichier exemple...Si tu jettes un oeil..

Merci

Cordialement
 

laurent950

XLDnaute Barbatruc
Bonsoir @Phillip ,

Si c'est la solution alors super :

VB:
Sub Test()
    Dim T0, T1, T2 As Variant
    T0 = Range(Cells(2, 1), Cells(Cells(65536, 1).End(xlUp).Row, 1))
    ReDim Preserve T0(LBound(T0, 1) To UBound(T0, 1), LBound(T0, 1) To 2)
    For i = LBound(T0, 1) To UBound(T0, 1)
        For j = i + 1 To UBound(T0, 1)
            If T0(i, 1) = T0(j, 1) Then
                T0(j, 2) = "D"
            End If
        Next j
    Next i
    ReDim T1(0)
    For i = LBound(T0, 1) To UBound(T0, 1)
        If T0(i, 2) <> "D" Then
            T1(UBound(T1)) = T0(i, 1)
            ReDim Preserve T1(UBound(T1) + 1)
        End If
    Next i
    ReDim Preserve T1(UBound(T1) - 1)
    '
    Cells(3, 8).Resize(UBound(T1) + 1) = Application.Transpose(T1)
    Erase T0
    T0 = Range(Cells(2, 1), Cells(Cells(65536, 1).End(xlUp).Row, 4))
    ReDim T2(0)
    For i = LBound(T1) To UBound(T1)
    T2(0) = T1(i)
        For j = LBound(T0, 1) To UBound(T0, 1)
            If T1(i) = T0(j, 1) And T0(j, 2) <> "" Then
                If T0(j, 2) > T0(j, 3) Then
                    ReDim Preserve T2(UBound(T2) + 1)
                    T2(UBound(T2)) = "V"
                ElseIf T0(j, 2) < T0(j, 3) Then
                    ReDim Preserve T2(UBound(T2) + 1)
                    T2(UBound(T2)) = "D"
                Else
                    ReDim Preserve T2(UBound(T2) + 1)
                    T2(UBound(T2)) = "N"
                End If
            End If
        Next j
    Cells(i + 3, 8).Resize(LBound(T2) + 1, UBound(T2) + 1) = T2
    Erase T2
    ReDim T2(0)
    Next i
End Sub
 

Phillip

XLDnaute Occasionnel
Bonjour,

Je dois avouer que je ne comprends pas ton code. Je suis faible en tableaux. Donc incapable d'adapter cela à mon vrai fichier. Mais à force de d'essais et d'échecs j'ai réussi à m'en sortir. Sans doute moins subtilement, mais je n'en suis pas à faire joli ou optimiser mes code...Ca marche et c'est tout ce que je veux...
VB:
Sub SeriesparEquipe()

Set equipes = Range("I5:I24")




For Each equipe In equipes
coljournee = Cells(5, 10).Column
    For zonejournees = 1 To 380 Step 10
        
    
    
    Set matches = Range(Cells(zonejournees + 1, i + 2), Cells(zonejournees + 10, i + 5))
    

    'Je trouve la ligne et la colonne de l'equipe a la premiere journee
    
    ligneequipe = matches.Find(what:=equipe).Row
        
    colonneEquipe = matches.Find(what:=equipe).Column
    
        If colonneEquipe = 2 Then
            If Cells(ligneequipe, colonneEquipe + 4) > Cells(ligneequipe, colonneEquipe + 5) Then
            Cells(equipe.Row, coljournee).Value = "V"
            ElseIf Cells(ligneequipe, colonneEquipe + 4) = Cells(ligneequipe, colonneEquipe + 5) Then
            Cells(equipe.Row, coljournee).Value = "N"
            Else: Cells(equipe.Row, coljournee).Value = "D"
            End If
        End If

         If colonneEquipe = 5 Then
             If Cells(ligneequipe, colonneEquipe + 2) > Cells(ligneequipe, colonneEquipe + 1) Then
            Cells(equipe.Row, coljournee).Value = "V"
            ElseIf Cells(ligneequipe, colonneEquipe + 2) = Cells(ligneequipe, colonneEquipe + 1) Then
            Cells(equipe.Row, coljournee).Value = "N"
            Else: Cells(equipe.Row, coljournee).Value = "D"
            End If
         End If
        
    coljournee = coljournee + 1
      
    Next zonejournees
    
    
Next equipe
    


End Sub

Merci de tout tes efforts de compréhension de problème et de développement !

Cordialement

Phillip
 

Statistiques des forums

Discussions
315 147
Messages
2 116 770
Membres
112 857
dernier inscrit
sanogo