XL 2016 coloration automatique

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 !

halecs93

XLDnaute Impliqué
Bonjour,

Dans le fichier exemple que je joins, je cherche à colorer uniquement les cellules précédées et suivies immédiatement de cellules déjà colorées.

Bon, un "dessin" vaut souvent mieux qu'une explication bancale 😉

Donc le fichier est joint.

Un grand merci à tout le monde

1707750424949.png
 

Pièces jointes

Solution
VB:
Sub Colore()
    For L = 2 To 1000 ' A adapter suivant besoin
        If Cells(L, "A").Interior.Color = vbWhite And _
            Cells(L, "A").Offset(-1, 0).Interior.Color <> vbWhite And _
            Cells(L, "A").Offset(1, 0).Interior.Color <> vbWhite Then
                Cells(L, "A").Interior.Color = vbYellow
                Cells(L, "A") = "TTT"
        End If
    Next L
End Sub
Bonjour Halecs,
En PJ un essai avec cette macro :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A1:A1000")) Is Nothing Then ' Plage à adapter
        If Target = "" Then Exit Sub
        Set Cell = Range(Target.Address)
        If Cell.Offset(-1, 0).Interior.Color <> vbWhite And _
            Cell.Offset(1, 0).Interior.Color <> vbWhite Then
                Cell.Interior.Color = vbYellow
        End If
    End If
Fin:
End Sub
La coloration éventuelle se fait quand on entre une valeur dans une cellule de la colonne A.
 

Pièces jointes

Bonjour Halecs,
En PJ un essai avec cette macro :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A1:A1000")) Is Nothing Then ' Plage à adapter
        If Target = "" Then Exit Sub
        Set Cell = Range(Target.Address)
        If Cell.Offset(-1, 0).Interior.Color <> vbWhite And _
            Cell.Offset(1, 0).Interior.Color <> vbWhite Then
                Cell.Interior.Color = vbYellow
        End If
    End If
Fin:
End Sub
La coloration éventuelle se fait quand on entre une valeur dans une cellule de la colonne A.
Tout d'abord merci.

Mais en effet, je souhaitais une macro (en module) que je puisse déclencher sans avoir à entrer une valeur dans la cellule pour la colorer. Simplement, une macro qui repère chaque cellule unique encadrées (en haut et en bas) par des cellules colorées. Et dans ce cas là, elle prend la couleur jaune.
 
Re,
Alors ceci peut être :
VB:
Sub Colore()
    For L = 2 To Range("A65500").End(xlUp).Row
        If Cells(L, "A") <> "" And _
            Cells(L, "A").Offset(-1, 0).Interior.Color <> vbWhite And _
            Cells(L, "A").Offset(1, 0).Interior.Color <> vbWhite Then
                Cells(L, "A").Interior.Color = vbYellow
        End If
    Next L
End Sub
 

Pièces jointes

Re,
Alors ceci peut être :
VB:
Sub Colore()
    For L = 2 To Range("A65500").End(xlUp).Row
        If Cells(L, "A") <> "" And _
            Cells(L, "A").Offset(-1, 0).Interior.Color <> vbWhite And _
            Cells(L, "A").Offset(1, 0).Interior.Color <> vbWhite Then
                Cells(L, "A").Interior.Color = vbYellow
        End If
    Next L
End Sub
Ca s'en rapproche... mais en fait, je souhaitais que la cellule se colore et inscrive "ttt", mais pas que l'inscription "ttt" permette la colorisation.

En gros, déclencher la macro colore la cellule et y inscrit "ttt"
 
VB:
Sub Colore()
    For L = 2 To 1000 ' A adapter suivant besoin
        If Cells(L, "A").Interior.Color = vbWhite And _
            Cells(L, "A").Offset(-1, 0).Interior.Color <> vbWhite And _
            Cells(L, "A").Offset(1, 0).Interior.Color <> vbWhite Then
                Cells(L, "A").Interior.Color = vbYellow
                Cells(L, "A") = "TTT"
        End If
    Next L
End Sub
 

Pièces jointes

Dernière édition:
VB:
Sub Colore()
    For L = 2 To 1000 ' A adapter suivant besoin
        If Cells(L, "A").Interior.Color = vbWhite And _
            Cells(L, "A").Offset(-1, 0).Interior.Color <> vbWhite And _
            Cells(L, "A").Offset(1, 0).Interior.Color <> vbWhite Then
                Cells(L, "A").Interior.Color = vbYellow
                Cells(L, "A") = "TTT"
        End If
    Next L
End Sub
Bonjour,

C'est tout à fait ce que je souhaitais.

Un grand grand merci.
 
- 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

  • Question Question
Microsoft 365 recherche idée
Réponses
6
Affichages
788
Réponses
17
Affichages
2 K
Retour