Moulinette Couleurs

malabarbe

XLDnaute Occasionnel
Bonjour,
ma feuille Excel contient dans la colonne A :
Classement (ligne 1)
101 (ligne 2) etc...
102
103
301
302
401
402
403
601
602
603
604
En fonction du changement du premier chiffre de la
colonne A c'est a dire 1 pour 101 ou 3 pour 301
(le premier chiffre de la cellule)
changer la couleur de la cellule
C'est a dire de 101 a 103 les cellules en bleu
de 301 a 302 les cellules en orange
etc...
Voici ma macro qui tourne en partie
Code:
Sub couleurs()
    Range("A1").Select
coul_1 = 34
coul_2 = 44
    
n_cour = Cells(2, 1)
    n_course = Left(n_cour, 1)
    aaa = n_course
    bbb = aaa
    
For i = 2 To 33
If bbb = aaa Then
       Cells(i - 1, 1).Select
    With Selection.Interior
        .ColorIndex = coul_1
        .Pattern = xlSolid
    End With
n_cour = Cells(i, 1)
    n_course = Left(n_cour, 1)
    aaa = n_course
Else
    Cells(i - 1, 1).Select
    With Selection.Interior
        .ColorIndex = coul_2
        .Pattern = xlSolid
    End With
    n_cour = Cells(i + 1, 1)
    n_course = Left(n_cour, 1)
bbb = aaa
End If
Next i
    Range("A1").Select
End Sub
Merci de m'aider
 

CBernardT

XLDnaute Barbatruc
Re : Moulinette Couleurs

Bonsoir malabarbe,

Viva Espagna :):):)

Essai de code :

Sub colorationCellules()
Dim Derlig As Long, i As Long, Color As Byte

With Sheets("Feuil1")
Derlig = .Range("A65536").End(xlUp).Row
Color = 3
For i = 1 To Derlig
If i = 1 Then
.Cells(i, 1).Interior.ColorIndex = Color
ElseIf Left(.Cells(i, 1), 1) <> Left(.Cells(i - 1, 1), 1) Then
Color = Color + 1
.Cells(i, 1).Interior.ColorIndex = Color
ElseIf Left(.Cells(i, 1), 1) = Left(.Cells(i - 1, 1), 1) Then
.Cells(i, 1).Interior.ColorIndex = Color
End If
Next i
End With
End Sub

Cordialement

Bernard
 

malabarbe

XLDnaute Occasionnel
Re : Moulinette Couleurs

Bonsoir,

En premier lieu, Bravo pour l'Espagne,
cela ne console pas mais cela réconforte

En deusième lieu, Bravo pour ta macro,
elle tourne super

Petite précision,
Je voudrais qu'a chaque changement de couleurs,
c'est d'avoir la première en bleu pale,
la deusième en jaune pale
et toujours alterner avec ces deux couleurs
(un peu comme un listing informatique...)
mais seulement a chaque changement
de la valeur du premier chiffre de la collone A

Question subsidiaire :
Comment étendre la colorisation des cellules de A à G
pour la ligne ?

PS :
Ormis que ton code tourne impec,
je n'ai pas encore tout compris de ta macro !
Je suis encore un Bébé en VBA, mais avec des
bons conseils, je vais certainement progresser.

A te lire
 

TooFatBoy

XLDnaute Barbatruc
Re : Moulinette Couleurs

Essaye ça :
Code:
Sub colorationCellules()
Dim Derlig As Long, i As Long, Color As Byte
Dim Fond As Integer, Bleu As Integer, Jaune As Integer

Bleu = 34
Jaune = 36

With Sheets("Feuil1")
    Derlig = .Range("A65536").End(xlUp).Row
    Fond = Bleu
    For i = 1 To Derlig
        If i = 1 Then
            .Cells(i, 1).Interior.ColorIndex = Fond
        ElseIf Left(.Cells(i, 1), 1) <> Left(.Cells(i - 1, 1), 1) Then
            If Fond = Bleu Then
                Fond = Jaune
            Else
                Fond = Bleu
            End If
            .Cells(i, 1).Interior.ColorIndex = Fond
        ElseIf Left(.Cells(i, 1), 1) = Left(.Cells(i - 1, 1), 1) Then
            .Cells(i, 1).Interior.ColorIndex = Fond
        End If
    Next i
End With
End Sub
 
Dernière édition:

malabarbe

XLDnaute Occasionnel
Re : Moulinette Couleurs

Viva Espagna !

Plus que mieux, c'est parfait

Reste a gérer :
Question subsidiaire :
Comment étendre la colorisation des cellules de A à G
pour la ligne ou la couleur est modifiée ?

En tout cas,
Merci a vous deux.
- Marcel32
- CBernardT

Pour vos bons codes

PS :
Merci au site (aux membres, ou visiteurs)
J'ai toujours résolu mes soucis a chaque post
 

Staple1600

XLDnaute Barbatruc
Re : Moulinette Couleurs

Bonsoir


Question subsidiaire :
Comment étendre la colorisation des cellules de A à G
pour la ligne ou la couleur est modifiée ?
En modifiant ainsi (modifs en rouge)

Code:
Sub colorationCellules_ii()
[COLOR=SeaGreen]'code initial:CBernardT [/COLOR] [B](edition : Houps désolé) [/B]
[COLOR=SeaGreen]'code adapté: Marcel32[/COLOR]
Dim Derlig As Long, i As Long, Color As Byte
Dim Fond As Integer, Bleu As Integer, Jaune As Integer

Bleu = 34
Jaune = 36

With Sheets("Feuil1")
    Derlig = .Range("A65536").End(xlUp).Row
    Fond = Bleu
    For i = 1 To Derlig
        If i = 1 Then
            .Cells(i, 1)[B][COLOR=Red].Resize(1, 7)[/COLOR][/B].Interior.ColorIndex = Fond
        ElseIf Left(.Cells(i, 1), 1) <> Left(.Cells(i - 1, 1), 1) Then
            If Fond = Bleu Then
                Fond = Jaune
            Else
                Fond = Bleu
            End If
            .Cells(i, 1)[COLOR=Red][B].Resize(1, 7)[/B][/COLOR].Interior.ColorIndex = Fond
        ElseIf Left(.Cells(i, 1), 1) = Left(.Cells(i - 1, 1), 1) Then
           .Cells(i, 1)[B][COLOR=Red].Resize(1, 7)[/COLOR][/B].Interior.ColorIndex = Fond
        End If
    Next i
End With
End Sub
 
Dernière édition:

malabarbe

XLDnaute Occasionnel
Re : Moulinette Couleurs

Bonjour aux Bretons (et aux autres...),

Impec,

Merci a vous trois
- Marcel32
- Staple1600
- CBernardT

pour vos bons conseils
c'est sur, je vais mieux dormir !

M'enfin pour ce qu'il reste de la nuit !!!

Soucis Résolu
Encore merci à tous
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Re : Moulinette Couleurs

Désolé, j'avais édité mon post pour prendre en compte ta demande de coloriage des colonnes A à G, mais apparemment l'édition n'a pas fonctionné. J'ai dû faire une fausse manip. :(

J'avais remplacé tous les Cells(i, 1).Interior.ColorIndex
par Range(Cells(i, 1),Cells(i, 7)).Interior.ColorIndex
et ça fonctionnait chez moi.

Je ne connaissais pas le Resize, ça semble pas mal. Je vais regarder ça de plus prés. ;)


PS : le code initial n'est pas de moi mais de CBernardT. Je n'ai fait que l'adapter.
 
Dernière édition:

CBernardT

XLDnaute Barbatruc
Re : Moulinette Couleurs

Bonjour à tous,

Je remercie Marcel32 de rendre à Cézar ce qui est à César :rolleyes:

"J'avais remplacé tous les Cells(i, 1).Interior.ColorIndex
par Range(Cells(i, 1),Cells(i, 7)).Interior.ColorIndex
et ça fonctionnait chez moi."

Cependant est pour aller au bout des choses, le code serait mieux avec des points devant les Cells :

Range(.Cells(i, 1),.Cells(i, 7)).Interior.ColorIndex

Ceci afin d'attribuer cette zone à la feuille "Feuil1" de l'exemple.

Cordialement

Bernard
 

TooFatBoy

XLDnaute Barbatruc
Re : Moulinette Couleurs

Comme je l'ai dit plus haut, j'avais juste remplacé les "cells" par des "Range".
Donc de même qu'il y avait un point devant les "Cells", il y avait un point devant le "Range", d'où l'inutilité, à mon avis, de mettre un point devant chaque "Cells" du "Range".
 
Dernière édition:

CBernardT

XLDnaute Barbatruc
Re : Moulinette Couleurs

Re Marcel32,

Tu parles de l'inutilité de mettre des . devant les Cells.

Je te propose de lancer la macro avec une autre feuille à l'écran, "Feuil2" par exemple. Tu verras que l'inutilité devient indispensable pour que la macro travaille sur la zone de la feuille "Feuil1".

Le point devant Range est parfaitement inutile dans ce cas.

A+

Bernard
 

TooFatBoy

XLDnaute Barbatruc
Re : Moulinette Couleurs

Je pensais qu'en général on utilisait la syntaxe
feuille.Range(Cells(row1,col1),Cells(row2,col2))
plutôt que la syntaxe
Range(feuille.Cells(row1,col1),feuille.Cells(row2,col2))
qui me semblait alourdir inutilement la lecture.

Il est vrai que quand j'ai testé j'étais biensûr sur la feuille "Feuil1" et donc ça fonctionnait.
Merci pour l'information.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 096
Messages
2 085 254
Membres
102 839
dernier inscrit
Tougtoug