[VBA] Condition + couleur

Fermé
macmat Messages postés 10 Date d'inscription jeudi 26 avril 2012 Statut Membre Dernière intervention 16 décembre 2012 - 14 déc. 2012 à 20:00
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 16 déc. 2012 à 19:23
Bonjour,
Je souhaiterais changer automatiquement la couleur d'un texte à partir d'une simple condition à partir du'un macros excel.
Voici mon code

Function victoire(val1 As Integer, val2 As Integer) As String
If val1 > val2 Then
t = "V"
ActiveCell.Font.ColorIndex = 3
ElseIf val1 < val2 Then
t = "D"
ActiveCell.Font.ColorIndex = 33
End If
victoire = t
End Function
Si je le fais cellule par cellule, la couleur rouge ou bleu est bien affichée, cependant lorsque je défile la case vers le bas, il y a un conflit. En effet toutes les lettres sont soit rouge, soit bleu, voir la feuille excel se ferme subitement à la suite d'un freeze.
Je suppose que le problème vient de la fonction qui comprend que toute la page de cellule sélectionnée est une seule cellule. J'ai essayer en passant en paramètre un "range", avec range("A1:F150").font.coloindex = 33. Il y a le même problème. Je ne trouve pas la solution.
Merci d'avance pour votre aide
Bien cordialement


1 réponse

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
14 déc. 2012 à 22:53
Bonsoir macmat,

Tu l'appelle avec quoi cette fonction ?
0
macmat Messages postés 10 Date d'inscription jeudi 26 avril 2012 Statut Membre Dernière intervention 16 décembre 2012
15 déc. 2012 à 16:22
Bonjour Heliotte,

Il me suffit de faire =victoire(B1;C2) par exemple dans une cellule de ma feuille excel et cela l'appel. La fonction fonctionne bien si je l'appel cellule par cellule, mais lorsque que je veux faire glisser la cellule vers le bas le code des lettres fonctionne, mais le code couleur ne fonctionne plus, soit tout est bleu, soit tout est rouge.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
15 déc. 2012 à 21:25
Bonsoir macmat,

Tu pourrais ne plus mettre ce fonction dans les cellules, mais plutôt penser à quelque chose comme .. Lorsque tu change la valeur d'une cellule, la fonction supervise et est enclenchée automatiquement .. mais attention, cela fonctionne très bien pour un nombre de cellules réduit, comme par exemple 2 colonne ou un millier de cellule. Au delà, cela devient lourd et il faut penser à une autre méthode.

C'est pour cela qu'il faut savoir si ces "calculs" ne concerne qu'une dizaine de cellules, un millier de cellules ou plus et comment les organisés, soit en ligne, soit en colonne ou soit un rectangle de 10 sur 100.
Mais tout cela, c'est à toi à me le dire.
Au plus j'ai des renseignements, au mieux je peux te donner un coup de pouce .. et vite.

J'aurais donc besoin, avec précision, de certain renseignements:
- "val1 > val2" et "val1 < val2" : pourquoi ? ces deux conditions sont-elles indispensable ? en plus, de cette façon, on oublie l'état d'égalité !
- on compare une colonne à un autre ? si oui, lesquelles ?
- "val1 > val2" : t="V", colorIndex = 3
- "val1 < val2" : t="D", colorIndex = 33
- "val1 = val2" : t="???", colorIndex = ???
plus d'autres précisions s'il y a lieu ...
0
macmat Messages postés 10 Date d'inscription jeudi 26 avril 2012 Statut Membre Dernière intervention 16 décembre 2012
16 déc. 2012 à 10:40
Salut Heliotte,
Je voulais réaliser un test qui fonctionne partout sur la feuille de calcul et en colonne plutôt qu'en ligne. C'est pour cela que je ne désirais pas préciser les colonnes sur lesquels le test va être effectué. C'est pour cela que je tiens à garder le test "val1>val2". Je n'ai pas pris en compte l'égalité des valeurs 1 et 2 car je n'en ai pas besoin, c'est pour comparer des résultats sportifs sur des sports qui ne comportent pratiquement jamais de match nul. Maintenant la fonction je ne pense pas avoir à la faire glisser sur plus de 100 cellules à la fois.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
16 déc. 2012 à 19:23
Bonsoir macmat,

Les résultats se trouvent sur une, deux, ou plus de colonnes ?
Quand tu dit "val1 .. val2", compares-tu deux lignes différentes ou deux colonnes différentes ?

Éventuellement, dépose ton classeur sur un site de stockage, tel que "www.cjoint.com", en supprimant les données sensibles !
Après quoi tu écrit le lien dans ton prochain message.
0