Mise en forme conditionnelle / valeur d'une cellule
3 réponses
PDRT
Bonjour,
Je suis nouveau sur ce NG, avant d'écrire ce post je suis allé faire des
recherches sur google group.
Cela m'a permis entre autres de découvrir l'EXCELLENT MFC-V24.xls de AV
(Merci Alain et tous les contributeurs)... mais sauf erreur de ma part je
n'ai pas trouvé la réponse à ma question.
Mon problème :
Dans les tournois de tennis on affiche les tableaux qui peuvent comporter
plusieurs dizaines ou centaines de joueurs. Pour en faciliter la lecture on
surligne sur l'impression papier le nom/prénom d'un joueur en fonction de
son classement (on a donc 6 ou 7 couleurs à sa disposition)
Ceci est assez gavant à faire et il serait idéal que EXCEL puisse
automatiquement attribuer la couleur de fond d'une cellule comportant le nom
d'un joueur en fonction de son classement.
En principe la valeur de la cellule est "nom prénom clsst" où clsst peut
prendre les valeurs suivantes (alphanumériques) séparée ici par des ";" (du
moins fort au plus fort)
30/5;30/4;30/3;30/2;30/1;30;15/5;15/4;15/3;15/2;15/1;15;5/6;4/6;3/6;2/6;1/6;
0;-2/6;-4/6;-15;-30 plus les "premières séries" mais là c'est moins grave
à mon niveau ;)
Je sais c'est abscons mais c'est comme ça ! (pour plus d'info :
http://www.fft.fr/competitions/classement.html#)
Ceci fait 22 niveaux de classement. Je ne demande pas qu'il y ait 22
couleurs ce qui serait illisible. 6 couleurs serait idéal.
Donc quelqu'un aurait-il une solution. J'ai essayé avec la fonction Mise en
forme conditionnelle... mais je me suis bien embourbé et comme je suis
vierge en VBA...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Ellimac
Bonjour,
Voilà un problème intéressant. Le code suivant est à mettre dans la feuille (clic droit sur l'onglet et visualiser le code) :
Sub Couleurs() For Each c In Selection e = Right(c, 1) a = Right(c, 2) b = Right(c, 3) d = Right(c, 4) If Left(b, 1) = "-" Or Left(d, 1) = "-" Then c.Interior.ColorIndex = 35 Else If Left(d, 1) <> "-" And (a = " 0") Or (b = "2/6") Or _ (b = "1/6") Then c.Interior.ColorIndex = 36 Else If a = "30" Or d = "30/2" Or d = "30/1" Then c.Interior.ColorIndex = 45 Else If a = "15" Or (Left(d, 2) = "15" And e < "3") Then c.Interior.ColorIndex = 37 Else If a = "/6" And Left(b, 1) > 2 Then c.Interior.ColorIndex = 38 Else If Left(d, 2) = 30 And e >= 3 Then c.Interior.ColorIndex = 39 Else If Left(d, 2) = 15 And e >= 3 Then c.Interior.ColorIndex = 43 End If End If End If End If End If End If End If Next End Sub
Attention aux passages à la ligne. N'hésites aps si tu veux que je t'envoie un exemple.
Camille
-----Message d'origine----- Bonjour, Je suis nouveau sur ce NG, avant d'écrire ce post je suis allé faire des
recherches sur google group. Cela m'a permis entre autres de découvrir l'EXCELLENT MFC- V24.xls de AV
(Merci Alain et tous les contributeurs)... mais sauf erreur de ma part je
n'ai pas trouvé la réponse à ma question.
Mon problème : Dans les tournois de tennis on affiche les tableaux qui peuvent comporter
plusieurs dizaines ou centaines de joueurs. Pour en faciliter la lecture on
surligne sur l'impression papier le nom/prénom d'un joueur en fonction de
son classement (on a donc 6 ou 7 couleurs à sa disposition)
Ceci est assez gavant à faire et il serait idéal que EXCEL puisse
automatiquement attribuer la couleur de fond d'une cellule comportant le nom
d'un joueur en fonction de son classement. En principe la valeur de la cellule est "nom prénom clsst" où clsst peut
prendre les valeurs suivantes (alphanumériques) séparée ici par des ";" (du
0;-2/6;-4/6;-15;-30 plus les "premières séries" mais là c'est moins grave
à mon niveau ;)
Je sais c'est abscons mais c'est comme ça ! (pour plus d'info :
http://www.fft.fr/competitions/classement.html#)
Ceci fait 22 niveaux de classement. Je ne demande pas qu'il y ait 22
couleurs ce qui serait illisible. 6 couleurs serait idéal.
Donc quelqu'un aurait-il une solution. J'ai essayé avec la fonction Mise en
forme conditionnelle... mais je me suis bien embourbé et comme je suis
vierge en VBA...
PS je dispose d'excel 2002 et Windows XP Pro
cordialement
Pascal Derathé
.
Bonjour,
Voilà un problème intéressant. Le code suivant est à
mettre dans la feuille (clic droit sur l'onglet et
visualiser le code) :
Sub Couleurs()
For Each c In Selection
e = Right(c, 1)
a = Right(c, 2)
b = Right(c, 3)
d = Right(c, 4)
If Left(b, 1) = "-" Or Left(d, 1) = "-" Then
c.Interior.ColorIndex = 35
Else
If Left(d, 1) <> "-" And (a = " 0") Or (b = "2/6")
Or _
(b = "1/6") Then
c.Interior.ColorIndex = 36
Else
If a = "30" Or d = "30/2" Or d = "30/1" Then
c.Interior.ColorIndex = 45
Else
If a = "15" Or (Left(d, 2) = "15" And e
< "3") Then
c.Interior.ColorIndex = 37
Else
If a = "/6" And Left(b, 1) > 2 Then
c.Interior.ColorIndex = 38
Else
If Left(d, 2) = 30 And e >= 3 Then
c.Interior.ColorIndex = 39
Else
If Left(d, 2) = 15 And e >= 3
Then
c.Interior.ColorIndex = 43
End If
End If
End If
End If
End If
End If
End If
Next
End Sub
Attention aux passages à la ligne.
N'hésites aps si tu veux que je t'envoie un exemple.
Camille
-----Message d'origine-----
Bonjour,
Je suis nouveau sur ce NG, avant d'écrire ce post je suis
allé faire des
recherches sur google group.
Cela m'a permis entre autres de découvrir l'EXCELLENT MFC-
V24.xls de AV
(Merci Alain et tous les contributeurs)... mais sauf
erreur de ma part je
n'ai pas trouvé la réponse à ma question.
Mon problème :
Dans les tournois de tennis on affiche les tableaux qui
peuvent comporter
plusieurs dizaines ou centaines de joueurs. Pour en
faciliter la lecture on
surligne sur l'impression papier le nom/prénom d'un
joueur en fonction de
son classement (on a donc 6 ou 7 couleurs à sa
disposition)
Ceci est assez gavant à faire et il serait idéal que
EXCEL puisse
automatiquement attribuer la couleur de fond d'une
cellule comportant le nom
d'un joueur en fonction de son classement.
En principe la valeur de la cellule est "nom prénom
clsst" où clsst peut
prendre les valeurs suivantes (alphanumériques) séparée
ici par des ";" (du
Voilà un problème intéressant. Le code suivant est à mettre dans la feuille (clic droit sur l'onglet et visualiser le code) :
Sub Couleurs() For Each c In Selection e = Right(c, 1) a = Right(c, 2) b = Right(c, 3) d = Right(c, 4) If Left(b, 1) = "-" Or Left(d, 1) = "-" Then c.Interior.ColorIndex = 35 Else If Left(d, 1) <> "-" And (a = " 0") Or (b = "2/6") Or _ (b = "1/6") Then c.Interior.ColorIndex = 36 Else If a = "30" Or d = "30/2" Or d = "30/1" Then c.Interior.ColorIndex = 45 Else If a = "15" Or (Left(d, 2) = "15" And e < "3") Then c.Interior.ColorIndex = 37 Else If a = "/6" And Left(b, 1) > 2 Then c.Interior.ColorIndex = 38 Else If Left(d, 2) = 30 And e >= 3 Then c.Interior.ColorIndex = 39 Else If Left(d, 2) = 15 And e >= 3 Then c.Interior.ColorIndex = 43 End If End If End If End If End If End If End If Next End Sub
Attention aux passages à la ligne. N'hésites aps si tu veux que je t'envoie un exemple.
Camille
-----Message d'origine----- Bonjour, Je suis nouveau sur ce NG, avant d'écrire ce post je suis allé faire des
recherches sur google group. Cela m'a permis entre autres de découvrir l'EXCELLENT MFC- V24.xls de AV
(Merci Alain et tous les contributeurs)... mais sauf erreur de ma part je
n'ai pas trouvé la réponse à ma question.
Mon problème : Dans les tournois de tennis on affiche les tableaux qui peuvent comporter
plusieurs dizaines ou centaines de joueurs. Pour en faciliter la lecture on
surligne sur l'impression papier le nom/prénom d'un joueur en fonction de
son classement (on a donc 6 ou 7 couleurs à sa disposition)
Ceci est assez gavant à faire et il serait idéal que EXCEL puisse
automatiquement attribuer la couleur de fond d'une cellule comportant le nom
d'un joueur en fonction de son classement. En principe la valeur de la cellule est "nom prénom clsst" où clsst peut
prendre les valeurs suivantes (alphanumériques) séparée ici par des ";" (du
Je regarde ça avec les nouvelles propositions de ELLIMAC et de Denis
"patrick lyon" a écrit dans le message de news:bjkjq4$
bonjour j'ai autant de mal que toi mais
a vu de nez
if c = "30/5" or c = "30" or c = "15" Then c.Interior.ColorIndex = 39 Else if c = "30/4" or c = "15/5" or c = "5/6" Then c.Interior.ColorIndex = 38
PDRT
Merci Denis ... ta solution fonctionne
Je vais faire des heureux
cordialement
"Denis" a écrit dans le message de news:h_o7b.6595$
Bonjour,
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim Classement As String
Application.ScreenUpdating = False For Each Cell In Range("A1:A" & Range("A1").End(xlDown).Row) Cell.Select
' Pour assigner à la variable Classement le classement du joueur Classement = ActiveCell.Value If Trim(Classement) <> "" Then Do Classement = Trim(Right(Classement, Len(Classement) - InStr(1, Classement,
" "))) Loop Until InStr(1, Classement, " ") = 0 End If
'Pour attribuer la couleur selon le classement du joueur Select Case Classement
Case Else ActiveCell.Interior.Color = RGB(255, 255, 255) End Select Next Cell Target.Select Application.ScreenUpdating = True End Sub
Merci Denis ... ta solution fonctionne
Je vais faire des heureux
cordialement
"Denis" <cemartin@cgocable.ca> a écrit dans le message de
news:h_o7b.6595$C92.1591@charlie.risq.qc.ca...
Bonjour,
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Classement As String
Application.ScreenUpdating = False
For Each Cell In Range("A1:A" & Range("A1").End(xlDown).Row)
Cell.Select
' Pour assigner à la variable Classement le classement du joueur
Classement = ActiveCell.Value
If Trim(Classement) <> "" Then
Do
Classement = Trim(Right(Classement, Len(Classement) -
InStr(1, Classement,
" ")))
Loop Until InStr(1, Classement, " ") = 0
End If
'Pour attribuer la couleur selon le classement du joueur
Select Case Classement
"Denis" a écrit dans le message de news:h_o7b.6595$
Bonjour,
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim Classement As String
Application.ScreenUpdating = False For Each Cell In Range("A1:A" & Range("A1").End(xlDown).Row) Cell.Select
' Pour assigner à la variable Classement le classement du joueur Classement = ActiveCell.Value If Trim(Classement) <> "" Then Do Classement = Trim(Right(Classement, Len(Classement) - InStr(1, Classement,
" "))) Loop Until InStr(1, Classement, " ") = 0 End If
'Pour attribuer la couleur selon le classement du joueur Select Case Classement