Changement du format d'un cellule ne marche pas [VBA Excel] - VB/VBA/VBS - Programmation
Marsh Posté le 21-01-2006 à 23:02:35
Bonjour,
N'est-ce pas un problème de casse. Il faut certainement tout convertir en minuscule ou majuscule pour que la comparaison de texte puisse se faire. Essaie :
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 LCase(Target)
Case "blé dur"
With Target.Interior
.ColorIndex = 10
.Pattern = xlSolid
End With
Case "prairie"
etc...
Par ailleurs, je ne comprend pas trop la fonction. Ne faut-il pas écrire :
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 LCase(Cellule) = LCase(culture) Then
'If ActiveSheet.Cells(Cellule.Row, Cellule.Column) = culture Then
total = total + 1 ' ActiveSheet.Cells(Cellule.Row, Cellule.Column)
'End If
End If
Next Cellule
ble_dur = total
End Function
Marsh Posté le 22-01-2006 à 12:09:02
Euh non ça ne marche pas, puisque la procedure s'execute comme il faut, et passe bien sur mon colorindex, mais ne le modifie pas.
Ma fonction, regarde si pour une ligne x, si elle contient "Blé dur", alors elle regarde la colone d'avant sur la même ligne, et si la cellule d'a coté contient la même valeur que le culture passait en paramétre, alors on ajoute au total la valeur de la cellule colone C de cette ligne. Et ainsi de suite pour chaque ligne.
Marsh Posté le 21-01-2006 à 16:20:52
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.
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