colorier cellule par macro

  • Initiateur de la discussion Initiateur de la discussion reve24
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

reve24

XLDnaute Occasionnel

Pièces jointes

Re : colorier cellule par macro

Bonjour reve24 et le forum,

Une solution de coloration de cellule à droite de la cellule active équivalent à la valeur de la cellule active.

Par un doubleclick dans l'une des cellules de la colonne A non vide, la macro évènementielle placée dans le module de la feuille colore le nombre souhaité de cellules.

Cordialement

Bernard
 

Pièces jointes

Re : colorier cellule par macro

Bonjour reve24 et le forum,

Une solution de coloration de cellule à droite de la cellule active équivalent à la valeur de la cellule active.

Par un doubleclick dans l'une des cellules de la colonne A non vide, la macro évènementielle placée dans le module de la feuille colore le nombre souhaité de cellules.

Cordialement

Bernard

super effectivement jolie solution
mais elle a un inconvenient c est de passer en revue toutes les lignes , imagine si tu as 6500 lignes 🙂D 😀 😀 😡 )
 
Re : colorier cellule par macro

Re,

Une petite modif afin de prendre en compte uniquement la cellule active :


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If ActiveCell.Column = 1 Then
Dim Valeur As Variant
Valeur = ActiveCell.Value
If Valeur > 0 Then
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, Valeur)).Interior.ColorIndex = 3
End If
End If
End Sub


Cordialement

Bernard
 
Re : colorier cellule par macro

Re,

Une petite modif afin de prendre en compte uniquement la cellule active :


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If ActiveCell.Column = 1 Then
Dim Valeur As Variant
Valeur = ActiveCell.Value
If Valeur > 0 Then
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, Valeur)).Interior.ColorIndex = 3
End If
End If
End Sub


Cordialement

Bernard


Merci pour cette solution mais elle ne correspond pas tout a fait a ce que je souhaite( bien qu excellent travail et je te remercie )
car j importe les données dans la colonne A ( ou qu importe d ailleurs) et apres il faut que je cliques pour activer et balayer l ensemble des lignes .
Ce la va de la ligne A1 à A 6500 et je ne peux pas cliquer sur une a une .
 
Re : colorier cellule par macro

Bonjour à toutes et tous,

Si j'ai bien compris la question, à voir:

Code:
Sub Colorier()
    Dim derlig As Long
    Dim lig As Long
    With ActiveSheet
        derlig = .Cells(.Rows.Count, 1).End(xlUp).Row
       'remonter de la dernière ligne vers la première pour la colonne A
        For lig = derlig To 1 Step -1
            'si la cellule contient une valeur supérieure à 0 et que sa voisine
            'de droite a une couleur différente de rouge
            If .Cells(lig, 1) And .Cells(lig, 2).Interior.ColorIndex <> 3 Then
                'colorier à partir de la colonne 2 jusqu'à la colonne x (valeur de la cellule)
                .Cells(lig, 2).Resize(, .Cells(lig, 1).Value).Interior.ColorIndex = 3
            End If
        Next lig
    End With
End Sub

Deuxième proposition:

Il faut que les cellules de la colonne A soient sélectionnées pour les lignes à colorier.
La couleur de fond est d'abord annulée (en cas de changement de nombre) puis éventuellement recoloriée.

Code:
Sub Colorier2()
    Dim c As Range
 
    With ActiveSheet
 
    'si la sélection ne contient pas la colonne A->sortir
    If Intersect(.Range("A:A"), Selection) Is Nothing Then Exit Sub
 
    'Pour toutes les cellules de la colonne A dans la sélection
    For Each c In Intersect(.Range("A:A"), Selection).Cells
 
        'Effacer la couleur de fond des cellules allant de B à la dernière colonne
        c.Offset(, 1).Resize(, .Columns.Count-1).Interior.ColorIndex = xlAutomatic
 
        'Si c contient une valeur >0 et inférieur au nombre de colonne de la feuille
        If c.Value > 0 And c.Value < .Columns.Count - 1 Then
 
           'colorier les cellules allant de B au nombre de colonne contenu en A
           c.Offset(, 1).Resize(, clng(c.Value)).Interior.ColorIndex = 3
 
        End If
    Next c
    End With
End Sub

A+
 
Dernière modification par un modérateur:
Re : colorier cellule par macro

Bonjour à toutes et tous,

Si j'ai bien compris la question, à voir:

Code:
Sub Colorier()
    Dim derlig As Long
    Dim lig As Long
    With ActiveSheet
        derlig = .Cells(.Rows.Count, 1).End(xlUp).Row
       'remonter de la dernière ligne vers la première pour la colonne A
        For lig = derlig To 1 Step -1
            'si la cellule contient une valeur supérieure à 0 et que sa voisine
            'de droite a une couleur différente de rouge
            If .Cells(lig, 1) And .Cells(lig, 2).Interior.ColorIndex <> 3 Then
                'colorier à partir de la colonne 2 jusqu'à la colonne x (valeur de la cellule)
                .Cells(lig, 2).Resize(, .Cells(lig, 1).Value).Interior.ColorIndex = 3
            End If
        Next lig
    End With
End Sub

Deuxième proposition:

Il faut que les cellules de la colonne A soient sélectionnées pour les lignes à colorier.
La couleur de fond est d'abord annulée (en cas de changement de nombre) puis éventuellement recoloriée.

Code:
Sub Colorier2()
    Dim c As Range
 
    With ActiveSheet
 
    'si la sélection ne contient pas la colonne A->sortir
    If Intersect(.Range("A:A"), Selection) Is Nothing Then Exit Sub
 
    'Pour toutes les cellules de la colonne A dans la sélection
    For Each c In Intersect(.Range("A:A"), Selection).Cells
 
        'Effacer la couleur de fond des cellules allant de B à la dernière colonne
        c.Offset(, 1).Resize(, .Columns.Count-1).Interior.ColorIndex = xlAutomatic
 
        'Si c contient une valeur >0 et inférieur au nombre de colonne de la feuille
        If c.Value > 0 And c.Value < .Columns.Count - 1 Then
 
           'colorier les cellules allant de B au nombre de colonne contenu en A
           c.Offset(, 1).Resize(, clng(c.Value)).Interior.ColorIndex = 3
 
        End If
    Next c
    End With
End Sub

A+

JOLI JOLI 🙂 🙂 🙂
seule la première solution fonctionne

ci joint le fichier
 

Pièces jointes

Re : colorier cellule par macro

Bonsoir à toutes et à tous,

Puisque notre Ami David à bien travaillé et que nous pouvons répondre,j'en profite pour te joindre un fichier avec une nouvelle version plus rapide sur 6500 lignes. Le classeur contient les deux versions.

A+ à tous
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

J
Réponses
7
Affichages
1 K
jerbur
J
C
Réponses
3
Affichages
2 K
claivier_58
C
C
Réponses
1
Affichages
2 K
claivier_58
C
C
Réponses
8
Affichages
2 K
Genii
G
B
Réponses
4
Affichages
2 K
benoitoleron
B
B
Réponses
0
Affichages
690
B
C
Réponses
2
Affichages
786
CBDORVAL
C
Réponses
6
Affichages
3 K
Retour