Problème fonction Excel
chris17
-
chris17 -
chris17 -
Bonjour,
Je ne comprend pas pourquoi ma fonction renvoie un message d'erreur. Quand je teste la sous routine pas à pas j'obtiens le bon chiffre. En fait j'attribue un rating a chaque match de foot donné. Je cherche juste à faire affiché le rating obtenu pour une équipe donné à une journée donné.
Code (moche je le reconnais :) )
Function rating_germany(Team, N)
Dim R, Val As Integer
Dim i As Integer
Sheets("Germany 0809").Select
i = 1
R = 0
For k = 1 To N
Range("D" & i + 1).Select
Cells.Find(What:=Team, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
i = Selection.Row
If Cells(i, 4).Value = Team Then
Val = Range("BX" & i).Value
R = R + Val
ElseIf Cells(i, 5).Value = Team Then
Val = Range("BY" & i).Value
R = R + Val
End If
Next k
rating_germany = R / N
'MsgBox ("Rating de" & R / N)
End Function
Je ne comprend pas pourquoi ma fonction renvoie un message d'erreur. Quand je teste la sous routine pas à pas j'obtiens le bon chiffre. En fait j'attribue un rating a chaque match de foot donné. Je cherche juste à faire affiché le rating obtenu pour une équipe donné à une journée donné.
Code (moche je le reconnais :) )
Function rating_germany(Team, N)
Dim R, Val As Integer
Dim i As Integer
Sheets("Germany 0809").Select
i = 1
R = 0
For k = 1 To N
Range("D" & i + 1).Select
Cells.Find(What:=Team, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
i = Selection.Row
If Cells(i, 4).Value = Team Then
Val = Range("BX" & i).Value
R = R + Val
ElseIf Cells(i, 5).Value = Team Then
Val = Range("BY" & i).Value
R = R + Val
End If
Next k
rating_germany = R / N
'MsgBox ("Rating de" & R / N)
End Function
A voir également:
- Problème fonction Excel
- Fonction si et excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Fonction moyenne excel - Guide
- Déplacer colonne excel - Guide
2 réponses
Bonjour,
En fait quand on utilise une fonction comme fonction personnalisée on ne peut pas modifier d'autres cellules que celle dans laquelle se calcule la fonction donc dans ce code il faut chercher à enlever tous les "activate" et les "select".
Par exemple ce code :
fonctionne correctement car il ne touche pas à l'environnement.
Par contre je ne sais pas exactement ce que qu'est le "rating". L'exemple calcule la somme en colonne BX et BY pour une équipe et divise par N.
Ce n'est pas exactement ce que faisait la fonction initiale.
A+
En fait quand on utilise une fonction comme fonction personnalisée on ne peut pas modifier d'autres cellules que celle dans laquelle se calcule la fonction donc dans ce code il faut chercher à enlever tous les "activate" et les "select".
Par exemple ce code :
Function rating_germany(Team, N)
Dim R As Integer, Val As Integer
R = 0
For k = 2 To N + 1
If Cells(k, 4).Value = Team Then
Val = Range("BX" & k).Value
R = R + Val
ElseIf Cells(k, 5).Value = Team Then
Val = Range("BY" & k).Value
R = R + Val
End If
Next k
rating_germany = R / N
End Function
fonctionne correctement car il ne touche pas à l'environnement.
Par contre je ne sais pas exactement ce que qu'est le "rating". L'exemple calcule la somme en colonne BX et BY pour une équipe et divise par N.
Ce n'est pas exactement ce que faisait la fonction initiale.
A+