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