Coloration des cellules selon le contenu des autres
59Bzik
Messages postés
13
Statut
Membre
-
59Bzik Messages postés 13 Statut Membre -
59Bzik Messages postés 13 Statut Membre -
Bonjour, j'ai un grand tableau: (A1:TF50).
J'ai créé un code VBA pour que:
lorsque une telle cellule d'une ligne donnée est non vide (G30="×" ,par exemple) je veux que toutes les cellules avant et après; à raison de 12, prennent la couleur rouge. Càd:
Si G30="×" Alors G(30+12 * i ) et G(30-12 *i ) prennent la couleur rouge. ( For i = 0 To 18 par exemple). Le problème c'est que pour le code:
- G(30+12 * i ), les cellules se colorent même après mon tableau.
- G(30 - 12 * i ) le code affiche erreur que les valeurs sont négatives avant la cellules G30 dans la même ligne.
Je veux que la boucle s'arrête avant et après de sortir du tableau (A1:TF50)
Please je cherche une solution.
Et si possible même question: Au lieu de colorier les celles de la même ligne je veux colorier les cellules de la même colonne.
Merci d'avance.
J'ai créé un code VBA pour que:
lorsque une telle cellule d'une ligne donnée est non vide (G30="×" ,par exemple) je veux que toutes les cellules avant et après; à raison de 12, prennent la couleur rouge. Càd:
Si G30="×" Alors G(30+12 * i ) et G(30-12 *i ) prennent la couleur rouge. ( For i = 0 To 18 par exemple). Le problème c'est que pour le code:
- G(30+12 * i ), les cellules se colorent même après mon tableau.
- G(30 - 12 * i ) le code affiche erreur que les valeurs sont négatives avant la cellules G30 dans la même ligne.
Je veux que la boucle s'arrête avant et après de sortir du tableau (A1:TF50)
Please je cherche une solution.
Et si possible même question: Au lieu de colorier les celles de la même ligne je veux colorier les cellules de la même colonne.
Merci d'avance.
A voir également:
- Coloration des cellules selon le contenu des autres
- Fusionner deux cellules excel en gardant le contenu - Guide
- Verrouiller des cellules excel - Guide
- Additionner des cellules excel - Guide
- Colorer des cellules excel sous condition - Guide
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule - Forum Excel
3 réponses
Bonjour
aA quoi sert le "i" ?
par exemple i=18
18*12= 216.... donc après G30:G246
avant: 30-216= -186 ---> erreur
aA quoi sert le "i" ?
par exemple i=18
18*12= 216.... donc après G30:G246
avant: 30-216= -186 ---> erreur
59Bzik
Messages postés
13
Statut
Membre
Oui cest ça
Bonjour,
Pas besoin de macro pour cela, avec une mise en forme conditionnelle (MFC) par formule en A1 :
Pas besoin de macro pour cela, avec une mise en forme conditionnelle (MFC) par formule en A1 :
=NB.SI(DECALER(A1;-MIN(11;LIGNE(A1)-1);0;MIN(12;LIGNE(A1)-1)+12);"x")>0s'applique à $A$1:$TF$50
Bjr .Patrice. Merci pour ton aide
Ce que je veux c'est que lorsque par exemple: F15 = "x" alors les cellules qui viennent après F(15+12) puis F( 15+24) puis F(15+36)c'est à dire la F27 et F39 et F51 etc... et celles qui sont avant çàd F(15-12) , (çàd F3) prennent la couleur rouge et non pas toutes les cellules avant et après la F15. Merci bcp
Ce que je veux c'est que lorsque par exemple: F15 = "x" alors les cellules qui viennent après F(15+12) puis F( 15+24) puis F(15+36)c'est à dire la F27 et F39 et F51 etc... et celles qui sont avant çàd F(15-12) , (çàd F3) prennent la couleur rouge et non pas toutes les cellules avant et après la F15. Merci bcp
J'ai utilisé le code vba suivant:
Sub ChangeColor()
Dim i As Integer
Dim j As Integer
Dim k As Integer
For i=9 To 85
For j=10 To 189
For k =1 To 26
If Cells( i , j )= "×" Then
Cells(i + 5 * k , j ).interior.IndexColor = 4
Elseif Cells( i , j )= " " Then
Cells(i + 5 * k , j ).interior.IndexColor = 0
End If
Next k
Next j
Next i
For i=9 To 85
For j=10 To 189
For k =1 To 26
If Cells( i , j )= "×" Then
Cells(i - 5 * k , j ).interior.IndexColor = 4
Elseif Cells( i , j )= " " Then
Cells(i - 5 * k , j ).interior.IndexColor = 0
End If
Next k
Next j
Next i
End Sup
Mais c'est lent pour l'exécution et des cellules qui se colore au delà de mon tableau (C10:KC144)je veux que la boucle s'arrête à la fin du tableau.
Et en plus lorsque Cells(i - 5 * k , j ) prend une valeur négative le code déclare erreur.
Sub ChangeColor()
Dim i As Integer
Dim j As Integer
Dim k As Integer
For i=9 To 85
For j=10 To 189
For k =1 To 26
If Cells( i , j )= "×" Then
Cells(i + 5 * k , j ).interior.IndexColor = 4
Elseif Cells( i , j )= " " Then
Cells(i + 5 * k , j ).interior.IndexColor = 0
End If
Next k
Next j
Next i
For i=9 To 85
For j=10 To 189
For k =1 To 26
If Cells( i , j )= "×" Then
Cells(i - 5 * k , j ).interior.IndexColor = 4
Elseif Cells( i , j )= " " Then
Cells(i - 5 * k , j ).interior.IndexColor = 0
End If
Next k
Next j
Next i
End Sup
Mais c'est lent pour l'exécution et des cellules qui se colore au delà de mon tableau (C10:KC144)je veux que la boucle s'arrête à la fin du tableau.
Et en plus lorsque Cells(i - 5 * k , j ) prend une valeur négative le code déclare erreur.
Re,
Essaies ce code :
Essaies ce code :
Option Explicit
Sub ChangeCouleur()
Const pas As Byte = 12
Const str As String = "x"
Dim rng As Range
Dim cel As Range
Dim adr As String
Dim nL As Long
Dim nC As Long
Set rng = Me.Range("C10:KC144")
rng.Interior.ColorIndex = xlNone
Set cel = rng.Find(str)
If cel Is Nothing Then Exit Sub
adr = cel.Address
Do
nC = cel.Column - rng.Column + 1
nL = ((cel.Row - rng.Row) Mod pas) + 1
Do
rng.Cells(nL, nC).Interior.ColorIndex = 4
nL = nL + pas
Loop While nL <= rng.Rows.Count
Set cel = rng.FindNext(cel)
Loop While cel.Address <> adr
End Sub