Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Conditions de couleurs sur une plage large

3 réponses
Avatar
Choko
Bonsoir,

Je me retrouve =E0 devoir colorier une plage de plus de 100 000 cellules
sans pouvoir utiliser le format conditionnel car j'ai plus de 3
conditions. J'ai pens=E9 =E0 cette boucle mais elle prend vraiment du
temps sur cette grande plage.
Y a t il un moyen plus rapide de lui faire colorier les cellules plus
rapidement?

Merci pour vos id=E9es

Cdt

Choko

For Each Cell In Selection

For Each Cell In Selection

Select Case Cell

Case Is < [STOP]
Cell.Interior.ColorIndex =3D 1

Case Is =3D [STOP]
Cell.Interior.ColorIndex =3D 3

Case Is < [STOP]
Cell.Interior.ColorIndex =3D 1

Case Is =3D "O"
Cell.Interior.ColorIndex =3D 4

Case Is =3D "F"
Cell.Interior.ColorIndex =3D 15

Case IsNull(Cell)
Cell.Interior.ColorIndex =3D xlNone
End Select
Next

3 réponses

Avatar
Daniel
Bonsoir.
De toutes façons :
Application.ScreenUpdatingúlse
Découpe la plage totale en plages plus petites que tu copies sur une feuille
provisoire et applique ta macro (ce process peut être intégré à ta macro)
Tu peux peut-être aussi gagner en définissant la plage à colorier (avec ta
boucle) et à appliquer la couleur en une seule fois (pas garanti, toutefois)
Bon courage.
Daniel
"Choko" a écrit dans le message de news:

Bonsoir,

Je me retrouve à devoir colorier une plage de plus de 100 000 cellules
sans pouvoir utiliser le format conditionnel car j'ai plus de 3
conditions. J'ai pensé à cette boucle mais elle prend vraiment du
temps sur cette grande plage.
Y a t il un moyen plus rapide de lui faire colorier les cellules plus
rapidement?

Merci pour vos idées

Cdt

Choko

For Each Cell In Selection

For Each Cell In Selection

Select Case Cell

Case Is < [STOP]
Cell.Interior.ColorIndex = 1

Case Is = [STOP]
Cell.Interior.ColorIndex = 3

Case Is < [STOP]
Cell.Interior.ColorIndex = 1

Case Is = "O"
Cell.Interior.ColorIndex = 4

Case Is = "F"
Cell.Interior.ColorIndex = 15

Case IsNull(Cell)
Cell.Interior.ColorIndex = xlNone
End Select
Next
Avatar
Choko
Merci pour l'idée

Cela va de soit
"De toutes façons :Application.ScreenUpdatingúlse"

Si je comprends bien, il serait intelligent de lui faire selectionner
dans ma plage nommée toutes les cellules répondant à un critère puis
de lui demander de colorier en une fois la condition.

Je ne me souviens plus de la methode pour une multi selection dans une
plage selon une valeur et je n'ai pas trouvé de fil à ce sujet...
j'ai en mémoire qu'il s'agit d'une boucle qui etend progressivement la
plage de cellules indépendantes.

Merci de votre aide

Choko


On 27 juin, 20:57, "Daniel" wrote:
Bonsoir.
De toutes façons :
Application.ScreenUpdatingúlse
Découpe la plage totale en plages plus petites que tu copies sur une fe uille
provisoire et applique ta macro (ce process peut être intégré à t a macro)
Tu peux peut-être aussi gagner en définissant la plage à colorier ( avec ta
boucle) et à appliquer la couleur en une seule fois (pas garanti, toute fois)
Bon courage.
Daniel
"Choko" a écrit dans le message de news:

Bonsoir,

Je me retrouve à devoir colorier une plage de plus de 100 000 cellules
sans pouvoir utiliser le format conditionnel car j'ai plus de 3
conditions. J'ai pensé à cette boucle mais elle prend vraiment du
temps sur cette grande plage.
Y a t il un moyen plus rapide de lui faire colorier les cellules plus
rapidement?

Merci pour vos idées

Cdt

Choko

For Each Cell In Selection

For Each Cell In Selection

Select Case Cell

Case Is < [STOP]
Cell.Interior.ColorIndex = 1

Case Is = [STOP]
Cell.Interior.ColorIndex = 3

Case Is < [STOP]
Cell.Interior.ColorIndex = 1

Case Is = "O"
Cell.Interior.ColorIndex = 4

Case Is = "F"
Cell.Interior.ColorIndex = 15

Case IsNull(Cell)
Cell.Interior.ColorIndex = xlNone
End Select
Next


Avatar
Daniel
Je ne sais pas si c'est plus rapide, dans le fond, parce que ça rajoute un
test :

For Each c In TaPlage
if tes tests ok then
If Plage Is Nothing Then
Set Plage = c
Else
Set Plage = Union(c, Plage)
End If
End If
Next c

Je pense que le découpage en plages plus petites est plus payant, car plus
on s'éloigne de A et de 1 et plus on est pénalisé.
Daniel
"Choko" a écrit dans le message de news:

Merci pour l'idée

Cela va de soit
"De toutes façons :Application.ScreenUpdatingúlse"

Si je comprends bien, il serait intelligent de lui faire selectionner
dans ma plage nommée toutes les cellules répondant à un critère puis
de lui demander de colorier en une fois la condition.

Je ne me souviens plus de la methode pour une multi selection dans une
plage selon une valeur et je n'ai pas trouvé de fil à ce sujet...
j'ai en mémoire qu'il s'agit d'une boucle qui etend progressivement la
plage de cellules indépendantes.

Merci de votre aide

Choko


On 27 juin, 20:57, "Daniel" wrote:
Bonsoir.
De toutes façons :
Application.ScreenUpdatingúlse
Découpe la plage totale en plages plus petites que tu copies sur une
feuille
provisoire et applique ta macro (ce process peut être intégré à ta macro)
Tu peux peut-être aussi gagner en définissant la plage à colorier (avec ta
boucle) et à appliquer la couleur en une seule fois (pas garanti,
toutefois)
Bon courage.
Daniel
"Choko" a écrit dans le message de news:

Bonsoir,

Je me retrouve à devoir colorier une plage de plus de 100 000 cellules
sans pouvoir utiliser le format conditionnel car j'ai plus de 3
conditions. J'ai pensé à cette boucle mais elle prend vraiment du
temps sur cette grande plage.
Y a t il un moyen plus rapide de lui faire colorier les cellules plus
rapidement?

Merci pour vos idées

Cdt

Choko

For Each Cell In Selection

For Each Cell In Selection

Select Case Cell

Case Is < [STOP]
Cell.Interior.ColorIndex = 1

Case Is = [STOP]
Cell.Interior.ColorIndex = 3

Case Is < [STOP]
Cell.Interior.ColorIndex = 1

Case Is = "O"
Cell.Interior.ColorIndex = 4

Case Is = "F"
Cell.Interior.ColorIndex = 15

Case IsNull(Cell)
Cell.Interior.ColorIndex = xlNone
End Select
Next