Bonjour.
Sur une feuille excel, j'ai une fonction (placé dans un module "module1" ) et une procedure sur un évenement "change" (qui se trouve dans le module de la feuille "Feuil1" ), elle sert à colorer les cellule en fonction de leur contenu.
Voici la fonction et la procedure.
Code :
- Public Function ble_dur(intervale As Range, culture As String) As Single
- Dim total As Single
- Dim Cellule As Range
- total = 0
- For Each Cellule In intervale
- If Cellule = "Blé dur" Then
- If ActiveSheet.Cells(Cellule.Row, Cellule.Column - 1) = culture Then
- total = total + ActiveSheet.Cells(Cellule.Row, 3)
- End If
- End If
- Next Cellule
- ble_dur = total
- End Function
|
Code :
- Private Sub Worksheet_Change(ByVal Target As Range)
- If ((Target.Row >= 5 And Target.Row <= 24) Or (Target.Row >= 26 And Target.Row <= 48)) And (Target.Column >= 5 And Target.Column <= 10) Then
- Select Case Target
- Case "Blé dur"
- With Target.Interior
- .ColorIndex = 10
- .Pattern = xlSolid
- End With
- Case "Prairie"
- With Target.Interior
- .ColorIndex = 43
- .Pattern = xlSolid
- End With
- Case "Courges"
- With Target.Interior
- .ColorIndex = 46
- .Pattern = xlSolid
- End With
- Case "Gel"
- With Target.Interior
- .ColorIndex = 40
- .Pattern = xlSolid
- End With
- Case "Melons"
- With Target.Interior
- .ColorIndex = 6
- .Pattern = xlSolid
- End With
- Case "Luzerne"
- With Target.Interior
- .ColorIndex = 50
- .Pattern = xlSolid
- End With
- Case "P de terre"
- With Target.Interior
- .ColorIndex = 53
- .Pattern = xlSolid
- End With
- Case "Oliviers"
- With Target.Interior
- .ColorIndex = 12
- .Pattern = xlSolid
- End With
- Case Else
- With Target.Interior
- .ColorIndex = 0
- .Pattern = xlSolid
- End With
- End Select
- End If
- End Sub
|
Le problème que j'ai, et que si j'utilise ,dans une cellule, ma fonction ble_dur avec en parametre une plage de cellule sur laquelle j'applique ma coloration, et qu'ensuite je modifie une cellule dans cette plage de cellule (la plage passé en parametre de ma fonction), la coloration ne se fait pas.
Or si je modifie une cellule sur laquelle la coloration s'effectue, et qui ne fait pas parti de la plage passer en paramétre de ma fonction, la coloration marche.
Par exemple:
Ma coloration s'effectue sur les cellules E5 à J24 et E26 à J48.
Dans une cellule (disons B50), je tape '=ble_dur(F5:F24; "Blé dur" )'
Dans B50, j'aurais le résultat de ma fonction.
Maintenant si je modifie la cellule F6 (qui est dans la plage passé en paramétre, de la fonction en B50), ma coloration ne marche pas, pourtant elle est bien dans la plage de cellules aux quelles j'attribue une couleur.
Et si je modifie la case G6 (qui est en dehors de la plage passé en paramétre), la coloration marche.
J'ai tracé le code pas à pas, et dans les deux cas, excel passe dans ma procédure de coloration, mais dans le premier cas, c'est comme si le '.colorindex' était en lecture seule, je lui donne une valeur, mais il ne la prend pas en compte.
Quelqu'un à une idée d'où peut venir le problème ?
Merci d'avance.
Edit: j'ai tout modifié mon message, parce que le copier-coller depuis un autre forum sans avoir ce qu'il ya avant c'est pas top pour comprendre
Message édité par Bennoip le 21-01-2006 à 17:04:15