sablierdudesert | SuppotDeSaTante a écrit :
Hello
Déjà ton With cellule ne te sert a rien vu que tu utilise "cellule" juste en dessous.
Avec un With ca aurait donné : Code :
- With cellule
- .Interior.ColorIndex = couleur
- End With
|
Ensuite, que renvoit la variable cellule justement ? Un range, du type "A1" alros que toi tu renvoies du texte contenu dans une cellule.
Pour la seconde question, c'est normal. Voir au dessus.
valtmp = ColoreCellule(Sheets(1).Range("E2" ), 4) donc tu envoies comme parametre a ta fonction ColoreCellule : Sheets(1).Range("E2" ) (et accessoirement la couleur)
Mais Sheets(1).Range("E2" ) ne renvoit pas un Range, mais bien ce qu'il y a dans la cellule justement definie par le Range.
Pour renvoyer le range ca serait Sheets(1).Range("E2" ).Address donc : valtmp = ColoreCellule(Sheets(1).Range("E2" ).address, 4) Mais ca reste etrange comme maniere de proceder...
Moi j'aurais fait dans CalculePoint :
ColoreCellule "E2", 4
Et dans ColoreCellule :
Range(cellule).Interior.ColorIndex = couleur
|
Merci tout d'abord pour ta réponse, claire de surcroit. Effectivement ds le code que j'ai associé à mon post y'avait qqs incohérences. Je débute depuis hier donc méa culpa!
Pour autant j'ai suivi les remarques que tu m'as données et je reste tjs bloqué dans la même situation.
Ci dessous le code modifié. Lorsque sous excel dans une cellule je mets l'appel à la fonction (=CalculePoint("E" )) ca renvoie #VALEUR car au niveau du code cela plante tjs au niveau de Range(cellule).Interior.ColorIndex = couleur
N'hésite pas à m'en dire plus si tu vois qqchose qui te choque !!!! Merci d'avance !
Ouaouane
Function compareResultat(scoreJ1 As String, score As String) As Integer
Dim J1a As Integer
Dim J1b As Integer
Dim FinalA As Integer
Dim FinalB As Integer
Dim posTiretJ1 As Integer
Dim posTiretFinal As Integer
posTiretFinal = InStr(score, "-" )
FinalA = Mid(score, 1, posTiretFinal - 1)
FinalB = Mid(score, posTiretFinal + 1)
If scoreJ1 = score Then
'score et résultat exact
compareResultat = 2
Else
posTiretFinal = InStr(score, "-" )
FinalA = Mid(score, 1, posTiretFinal - 1)
FinalB = Mid(score, posTiretFinal + 1)
posTiretFinal = InStr(scoreJ1, "-" )
J1a = Mid(scoreJ1, 1, posTiretFinal - 1)
J1b = Mid(scoreJ1, posTiretFinal + 1)
If Val(FinalA) = Val(FinalB) And Val(J1a) = Val(J1b) Then
compareResultat = 1
Else
If ((Val(FinalA) < Val(FinalB)) And (Val(J1a) < Val(J1b))) Then
compareResultat = 1
Else
If ((Val(FinalA) > Val(FinalB)) And (Val(J1a) > Val(J1b))) Then
compareResultat = 1
Else
compareResultat = 0
End If
End If
End If
End If
End Function
Function ColoreCellule(cellule As String, couleur As Integer) As Integer
Range(cellule).Interior.ColorIndex = couleur
MsgBox "ColoreCellule"
ColoreCellule = 1
End Function
Function CalculePoint(colonne As String) As Integer
Dim i As Integer
Dim tempPoint As Integer
Dim resultatTour As Integer
Dim valtmp As Integer
tempPoint = 0
For i = 2 To 3
resultatTour = compareResultat(Sheets(1).Range(colonne & i).Value, Sheets(1).Range("H" & i).Value)
tempPoint = tempPoint + resultatTour
If resultatTour = 2 Then
valtmp = ColoreCellule(colonne & i, 4)
'valtmp = ColoreCellule(Sheets(1).Range("E2" ), 4)
'mybool = ColoreCellule(Sheets(1).Range(colonne & i), 4)
Else
If resultatTour = 1 Then
valtmp = ColoreCellule(colonne & i, 6)
'valtmp = ColoreCellule(Sheets(1).Range(colonne & i), 6)
End If
End If
Next i
CalculePoint = CInt(tempPoint)
End Function
Sub test()
'MsgBox compareResultat(Sheets(1).Range("E2" ).Value, Sheets(1).Range("H2" ).Value)
'MsgBox CalculePoint("E" )
'MsgBox ColoreCellule(Range("E2" ), 4)
MsgBox CalculePoint("E" )
End Sub
|