[VBA] Condition + couleur
macmat
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
Heliotte Messages postés 1491 Date d'inscription Statut Membre Dernière intervention -
Heliotte Messages postés 1491 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- [VBA] Condition + couleur
- Excel cellule couleur si condition texte - Guide
- Excel compter cellule couleur sans vba - Guide
- Boite a couleur - Télécharger - Divers Photo & Graphisme
- Pipette couleur word ✓ - Forum Powerpoint
- Récupérer une couleur précise dans 'trame de fond/remplissage' - Forum Word
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.
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 ...
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.
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.