Forme condition - Comment faire > 3 condition
Résolu/Fermé
anne-sof
Messages postés
5
Date d'inscription
mardi 15 juillet 2008
Statut
Membre
Dernière intervention
17 juillet 2008
-
15 juil. 2008 à 19:26
anne-sof Messages postés 5 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 - 17 juil. 2008 à 18:15
anne-sof Messages postés 5 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 - 17 juil. 2008 à 18:15
A voir également:
- Forme condition - Comment faire > 3 condition
- Excel cellule couleur si condition texte - Guide
- Condition et excel - Guide
- Picasa 3 - Télécharger - Albums photo
- Dans la présentation à télécharger, sarah avait encadré directement le titre de certaines diapositives avant d’automatiser cette mise en forme pour tout le document. sur quelles diapositives avait-elle encadré directement le titre ? ✓ - Forum Bureautique
- Google sheet mise en forme conditionnelle 2 conditions ✓ - Forum Bureautique
8 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
15 juil. 2008 à 21:06
15 juil. 2008 à 21:06
Bonjour,
ou bien tout mettre en fond orange et ne tester que A B C
eric
ou bien tout mettre en fond orange et ne tester que A B C
eric
g
Messages postés
1262
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
15 mai 2017
575
15 juil. 2008 à 19:32
15 juil. 2008 à 19:32
Bonjour,
Tu peux utiliiser le code VBA http://gerard.g.pagesperso-orange.fr/logexl_09.htm#mise_forme_cond
Bonne soirée.
Tu peux utiliiser le code VBA http://gerard.g.pagesperso-orange.fr/logexl_09.htm#mise_forme_cond
Bonne soirée.
anne-sof
Messages postés
5
Date d'inscription
mardi 15 juillet 2008
Statut
Membre
Dernière intervention
17 juillet 2008
16 juil. 2008 à 08:35
16 juil. 2008 à 08:35
merci pour votre aide! J'ai pas mal avancé.
Cependant, j'ai besoin de tester un tres grand tableau (180 colonnes et 50 lignes).
J'enchaine donc 2 boucles, ce qui donne un temps de réponse tres (trop!) long.
Une idée?
merci,
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For j = 7 To 200
For i = 15 To 75 'rangées de 15 à 75
If Cells(i, j) = "C" Then
Cells(i, j).Interior.ColorIndex = 4
Else
If Cells(i, j) = "Cp" Then
Cells(i, j).Interior.ColorIndex = 45
Else
If Cells(i, j) = "M" Then
Cells(i, j).Interior.ColorIndex = 3
Else
If Cells(i, j) = "Su" Then
Cells(i, j).Interior.ColorIndex = 8
Else
If Cells(i, j) = "Sc" Then
Cells(i, j).Interior.ColorIndex = 33
Else
If Cells(i, j) = "F" Then
Cells(i, j).Interior.ColorIndex = 5
Else
If Cells(i, j) = "" Then
Cells(i, j).Interior.ColorIndex = 2
End If
End If
End If
End If
End If
End If
End If
Next i
Next j
End Sub
Cependant, j'ai besoin de tester un tres grand tableau (180 colonnes et 50 lignes).
J'enchaine donc 2 boucles, ce qui donne un temps de réponse tres (trop!) long.
Une idée?
merci,
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For j = 7 To 200
For i = 15 To 75 'rangées de 15 à 75
If Cells(i, j) = "C" Then
Cells(i, j).Interior.ColorIndex = 4
Else
If Cells(i, j) = "Cp" Then
Cells(i, j).Interior.ColorIndex = 45
Else
If Cells(i, j) = "M" Then
Cells(i, j).Interior.ColorIndex = 3
Else
If Cells(i, j) = "Su" Then
Cells(i, j).Interior.ColorIndex = 8
Else
If Cells(i, j) = "Sc" Then
Cells(i, j).Interior.ColorIndex = 33
Else
If Cells(i, j) = "F" Then
Cells(i, j).Interior.ColorIndex = 5
Else
If Cells(i, j) = "" Then
Cells(i, j).Interior.ColorIndex = 2
End If
End If
End If
End If
End If
End If
End If
Next i
Next j
End Sub
Raymond PENTIER
Messages postés
58802
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
10 janvier 2025
17 264
16 juil. 2008 à 06:37
16 juil. 2008 à 06:37
Tu peux aussi passer à Excel 2007 ...
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
16 juil. 2008 à 10:45
16 juil. 2008 à 10:45
Bonjour,
Ce n'est pas 4 tests que tu as à faire mais plus, comme quoi il est important d'être précis dans une question...
Au passage tu as ElseIf qui existe et qui évite d'avoir 15 End If à la fin...
Ce qui est très long c'est de lire une cellule. Donc met cells(i,j) dans une variable au début et teste cette variable.
Ou mieux utilise la structure select case :
Select case cells(i,j)
case "A"
faire ceci
case "B"
faire celà
....etc
case else
'sinon faire ça
end select
Si ce n'est tjs pas assez rapide il faut lire d'un bloc toute la plage dans une variable tableau et tester sur ce tableau.
Maintenant tes C, Cp, M,... sont-ils le résultat d'une formule ou d'une saisie ?
Si c'est le résultat d'une saisie tu as la cellule concernée dans Target. Dans ce cas plus besoin de boucle sur toutes les cellules et remplacer Cells(i, j). par Target.
eric
Ce n'est pas 4 tests que tu as à faire mais plus, comme quoi il est important d'être précis dans une question...
Au passage tu as ElseIf qui existe et qui évite d'avoir 15 End If à la fin...
Ce qui est très long c'est de lire une cellule. Donc met cells(i,j) dans une variable au début et teste cette variable.
Ou mieux utilise la structure select case :
Select case cells(i,j)
case "A"
faire ceci
case "B"
faire celà
....etc
case else
'sinon faire ça
end select
Si ce n'est tjs pas assez rapide il faut lire d'un bloc toute la plage dans une variable tableau et tester sur ce tableau.
Maintenant tes C, Cp, M,... sont-ils le résultat d'une formule ou d'une saisie ?
Si c'est le résultat d'une saisie tu as la cellule concernée dans Target. Dans ce cas plus besoin de boucle sur toutes les cellules et remplacer Cells(i, j). par Target.
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
anne-sof
Messages postés
5
Date d'inscription
mardi 15 juillet 2008
Statut
Membre
Dernière intervention
17 juillet 2008
16 juil. 2008 à 12:17
16 juil. 2008 à 12:17
Bonjour eric,
Merci pour ton aide,
Ca marche nettement mieux et c'est plus lisible :
Par contre, voici cela necessite :
1. tu saisis ton code (ex : C)
2. tu fais entrer ou suivant
3. il faut revenir sur la cellule pour que celle-ci se colorie
Y-at-il un truc pour que cela se colorie en meme temps lorsque l'on change de cellule?
voici le script :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plage As Range
Set Plage = Range("G15:HZ75")
Select Case (Target.Value)
Case "C": Target.Interior.ColorIndex = 4
Case "Cp": Target.Interior.ColorIndex = 45
Case "M": Target.Interior.ColorIndex = 3
Case "Su": Target.Interior.ColorIndex = 8
Case "Sc": Target.Interior.ColorIndex = 33
Case "F": Target.Interior.ColorIndex = 5
Case "": Target.Interior.ColorIndex = 2
End Select
End Sub
Merci pour ton aide,
Ca marche nettement mieux et c'est plus lisible :
Par contre, voici cela necessite :
1. tu saisis ton code (ex : C)
2. tu fais entrer ou suivant
3. il faut revenir sur la cellule pour que celle-ci se colorie
Y-at-il un truc pour que cela se colorie en meme temps lorsque l'on change de cellule?
voici le script :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plage As Range
Set Plage = Range("G15:HZ75")
Select Case (Target.Value)
Case "C": Target.Interior.ColorIndex = 4
Case "Cp": Target.Interior.ColorIndex = 45
Case "M": Target.Interior.ColorIndex = 3
Case "Su": Target.Interior.ColorIndex = 8
Case "Sc": Target.Interior.ColorIndex = 33
Case "F": Target.Interior.ColorIndex = 5
Case "": Target.Interior.ColorIndex = 2
End Select
End Sub
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
16 juil. 2008 à 12:20
16 juil. 2008 à 12:20
et si tu répondais à la question Maintenant tes C, Cp, M,... sont-ils le résultat d'une formule ou d'une saisie ?
anne-sof
Messages postés
5
Date d'inscription
mardi 15 juillet 2008
Statut
Membre
Dernière intervention
17 juillet 2008
16 juil. 2008 à 17:32
16 juil. 2008 à 17:32
Ce sont le résultat d'une saisie dans le tableau
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
16 juil. 2008 à 19:15
16 juil. 2008 à 19:15
Utilise l'evenement Change plutôt que SelectionChange,
et si tu veux que la macro n'agisse que sur la plage G15:HZ75 ajoute If intersect....then...
eric
et si tu veux que la macro n'agisse que sur la plage G15:HZ75 ajoute If intersect....then...
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("G15:HZ75")) Is Nothing Then Exit Sub Select Case (Target.Value) Case "C": Target.Interior.ColorIndex = 4 Case "Cp": Target.Interior.ColorIndex = 45 Case "M": Target.Interior.ColorIndex = 3 Case "Su": Target.Interior.ColorIndex = 8 Case "Sc": Target.Interior.ColorIndex = 33 Case "F": Target.Interior.ColorIndex = 5 Case "": Target.Interior.ColorIndex = 2 End Select End Sub
eric
g
Messages postés
1262
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
15 mai 2017
575
17 juil. 2008 à 09:02
17 juil. 2008 à 09:02
Bonjour,
La solution d' eriiic est à conjuguer au "plus que parfait"....
Concernant la couleur "blanc" des cellules vidées, il est préférable d'utliser
Case "": Target.Interior.ColorIndex = xlNone
afin de conserver le quadrillage.
Bonne journée.
La solution d' eriiic est à conjuguer au "plus que parfait"....
Concernant la couleur "blanc" des cellules vidées, il est préférable d'utliser
Case "": Target.Interior.ColorIndex = xlNone
afin de conserver le quadrillage.
Bonne journée.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
17 juil. 2008 à 09:19
17 juil. 2008 à 09:19
Bonjour,
Tout à fait exact, merci pour le complément
eric
Tout à fait exact, merci pour le complément
eric
anne-sof
Messages postés
5
Date d'inscription
mardi 15 juillet 2008
Statut
Membre
Dernière intervention
17 juillet 2008
>
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
17 juil. 2008 à 18:15
17 juil. 2008 à 18:15
Et bien merci pour toute cette aide... comme quoi un PC + internet + des gens sympas et pas besoin de connaitre le VBA on copie/colle...
Merci à tous
Je passe la question au vert!
Bonne soirée à tous
Merci à tous
Je passe la question au vert!
Bonne soirée à tous