Bonjour à tous,
j'ai un fichier de gestion de pronostics de foot : une trentaine de joueurs, 38 journées de 10 matchs chacune.
Dès qu'un vote (sous forme de score) ou un résultat est entré, je souhaite qu'une foultitude de calculs se fassent : nombre de fois où le joueur a pronostiqué ce score, nombre de fois où le joueur a trouvé ce score, nombre de joueurs ayant participé, nombre de joueurs ayant le bon score, le bon vainqueur, nombre de points gagnés par un joueur sur une équipe, etc etc.
A l'heure actuelle, se font automatiquement les calculs de points, les classements et c'est tout... J'ai voulu rajouté le nombre de fois où un joueur a pronostiqué tel score, mais dès que je rentre un nouveau résultat, mes formules recalculent pour TOUS les joueurs sur TOUTES les journées (alors que nous n'en sommes qu'à la 4ème).
Voilà la gueule de la formule :
J'ai donc voulu essayer des procédures événementielles (Workshett_Change), mais j'ai rencontré deux problèmes : quand je copie-colle un vote (changement de DEUX cellules voire plus, jusqu'à 20), ma procédure événemtielle ne tient compte que de la cellule "activée", de plus, mes calculs se font plus lentement.... et encore, je m'en tiens là juste au calcul des points (pas les classements).
Ca donne ça :
Du coup, j'ai remis le calcul automatique, et "provisoirement" laissé de côté mes calculs de stats...
Comment faire pour optimiser mes calculs ? Dois-je utiliser uniquement des procédures événementielles ? Dois-je tout bêtement lancé mes calculs de stats à l'aide d'un bouton (pour pas que ça recalcule dès que je rentre un score) ?
Euh... A vos suggestions!
Kioups
j'ai un fichier de gestion de pronostics de foot : une trentaine de joueurs, 38 journées de 10 matchs chacune.
Dès qu'un vote (sous forme de score) ou un résultat est entré, je souhaite qu'une foultitude de calculs se fassent : nombre de fois où le joueur a pronostiqué ce score, nombre de fois où le joueur a trouvé ce score, nombre de joueurs ayant participé, nombre de joueurs ayant le bon score, le bon vainqueur, nombre de points gagnés par un joueur sur une équipe, etc etc.
A l'heure actuelle, se font automatiquement les calculs de points, les classements et c'est tout... J'ai voulu rajouté le nombre de fois où un joueur a pronostiqué tel score, mais dès que je rentre un nouveau résultat, mes formules recalculent pour TOUS les joueurs sur TOUTES les journées (alors que nous n'en sommes qu'à la 4ème).
Voilà la gueule de la formule :
Code:
Public Function Scorespronostiques(Joueur, Colonne, ScoreDom, ScoreExt)
Application.Volatile
If Joueur = "-" Then
Scorespronostiques = "-"
End If
For i = 0 To 37
For j = 0 To 9
If Sheets("Journées").Cells(18 * i + 6 + j, Colonne + 6) = ScoreDom And Sheets("Journées").Cells(18 * i + 6 + j, Colonne + 7) = ScoreExt Then
If Sheets("Journées").Cells(18 * i + 6 + j, Colonne + 6) <> "" And Sheets("Journées").Cells(18 * i + 6 + j, Colonne + 7) <> "" Then
Scorespronostiques = Scorespronostiques + 1
End If
End If
Next j
Next i
End Function
J'ai donc voulu essayer des procédures événementielles (Workshett_Change), mais j'ai rencontré deux problèmes : quand je copie-colle un vote (changement de DEUX cellules voire plus, jusqu'à 20), ma procédure événemtielle ne tient compte que de la cellule "activée", de plus, mes calculs se font plus lentement.... et encore, je m'en tiens là juste au calcul des points (pas les classements).
Ca donne ça :
Code:
Private Sub Worksheet_Change(ByVal target As Range)
Dim i As Integer
Dim ligne As Integer
Dim Colonne As Integer
Colonne = target.Column
ligne = target.Row
If ligne > 5 Mod 18 And ligne < 16 Mod 18 Then
If Colonne Mod 4 = 3 And Colonne < 143 Then
Cells(ligne, Colonne + 2).Calculate
For i = 143 To 149
Cells(ligne, i).Calculate
Next i
Cells(ligne, Colonne + 3).Calculate
ElseIf Colonne Mod 4 = 0 And Colonne < 143 Then
Cells(ligne, Colonne + 1).Calculate
For i = 143 To 149
Cells(ligne, i).Calculate
Next i
Cells(ligne, Colonne + 2).Calculate
End If
End If
End Sub
Du coup, j'ai remis le calcul automatique, et "provisoirement" laissé de côté mes calculs de stats...
Comment faire pour optimiser mes calculs ? Dois-je utiliser uniquement des procédures événementielles ? Dois-je tout bêtement lancé mes calculs de stats à l'aide d'un bouton (pour pas que ça recalcule dès que je rentre un score) ?
Euh... A vos suggestions!
Kioups