VBA: Etendre le code d'une colonne à une plage.

ggeo

XLDnaute Nouveau
Bonjour,

Avec ce code je mets en couleur certaines cellules de la colonne C de la rangée 5 à 18.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 5 To 18 'rangées
'condition 1
If Range("C" & i) <> "" And Range("C" & i) = Range("B" & i) Then
Range("C" & i).Interior.ColorIndex = 6 'jaune
'condition 2
ElseIf Range("C" & i) <> "" And Range("C" & i) <> Range("B" & i) Then
Range("C" & i).Interior.ColorIndex = 3 'rouge
'Pour annuler la couleur des cellules vidées
ElseIf Range("C" & i) = "" Then
Range("C" & i).Interior.ColorIndex = xlNone
End If
Next i
End Sub

Je souhaiterais étendre cette possibilité à d'autres colonnes, par exemple pour la plage C5 à K18.
Pouvez-vous me préciser les modifications à apporter, hormis la MFC.

Avec mes remerciements anticipés,
Bonne journée.
 

kjin

XLDnaute Barbatruc
Re : VBA: Etendre le code d'une colonne à une plage.

Bonjour,
Pourquoi relancer la procédure à chaque sélection ?!
Pourquoi passer en revue toutes les cellules à chaque sélection ?!
Les cellule contiennent-elles des formules ?
Etendre la plage de fonctionnement soit, mais qu'advient-il de cette condition
Code:
Range("C" & i) = Range("B" & i)
Bref, une explication claire et un fichier exemple ne seraient pas superflus
A+
kjin
 

kjin

XLDnaute Barbatruc
Re : VBA: Etendre le code d'une colonne à une plage.

Re,
Dans le module de la feuille
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x$, i&
x = Cells(Target.Row, 2)
's'il on change une valeur de la colonne B
If Not Intersect(Target, Range("B5:B18")) Is Nothing And Target.Count = 1 Then
    For i = 3 To 12
        Cells(Target.Row, i).Value = Cells(Target.Row, i).Value
        If x = "" Then Cells(Target.Row, i).Interior.ColorIndex = xlNone
    Next
End If
's'il on change une valeur des colonnes C à L
If Not Intersect(Target, Range("C5:L18")) Is Nothing And Target.Count = 1 Then
    Select Case Target
        Case ""
        Target.Interior.ColorIndex = xlNone
        Case x
        Target.Interior.ColorIndex = 6
        Case Else
        Target.Interior.ColorIndex = 3
    End Select
End If
End Sub
A+
kjin
 

Discussions similaires

Réponses
14
Affichages
621
Réponses
12
Affichages
537

Statistiques des forums

Discussions
311 736
Messages
2 082 026
Membres
101 876
dernier inscrit
JULIEN21370