VBA colorer cellule d'une colonne

Résolu/Fermé
Loriiiis Messages postés 20 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 1 mars 2017 - 27 févr. 2017 à 13:33
Loriiiis Messages postés 20 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 1 mars 2017 - 1 mars 2017 à 12:29
Bonjour à tous,
Il y a 2 mois, un utilisateur, que je remercie, m'avais donner un code pour qu'un même texte d'une cellule L et Q se mettent en couleur quand je double clique dessus.
Exemple : Quand je clique sur "Fabien" dans la col L ou Q tous les "Fabien" de Q et de L se colorent.
J'ai essayé de refaire pour les colonnes I et N en changeant les lettres du code, mais impossible de le faire marcher. Pouvez m'aidez a changer ce code en conservant tous sauf le nom des colonnes ? (je veux garder les numéros de lignes qui sont toujours identiques avec les colonnes I et N)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Count > 1 Then Exit Sub
derligL = Range("L" & Rows.Count).End(xlUp).Row
derligQ = Range("Q" & Rows.Count).End(xlUp).Row
If Not Application.Intersect(Target, Range("L2:L" & derligL, "Q47:Q" & derligQ)) Is Nothing Then
Cancel = True
col = Target.Column
If col = 12 Then
D1 = 2: D2 = 47: Plage1 = "L2:L" & derligL: Plage2 = "Q47:Q" & derligQ: col2 = 17
Else
D1 = 47: D2 = 2: Plage1 = "Q47:Q" & derligQ: Plage2 = "L2:L" & derligL: col2 = 12
End If
Application.ScreenUpdating = False
Cel = Target.Value
Range(Plage1).Interior.Pattern = xlNone
Nb = Application.CountIf(Columns(col), Cel)
If Nb > 0 Then
lig = D1 'ligne de depart
For N = 1 To Nb
lig = Columns(col).Find(Cel, Cells(lig, col), , xlWhole).Row
If Cells(lig, col).Interior.Color = vbGreen Then
Cells(lig, col).Interior.Pattern = xlNone
Else
Cells(lig, col).Interior.Color = vbGreen
End If
Next N
End If
Range(Plage2).Interior.Pattern = xlNone
Nb = Application.CountIf(Columns(col2), Cel)
If Nb > 0 Then
lig = D2 'ligne de depart
For N = 1 To Nb
lig = Columns(col2).Find(Cel, Cells(lig, col2), , xlWhole).Row
If Cells(lig, col2).Interior.Color = vbGreen Then
Cells(lig, col2).Interior.Pattern = xlNone
Else
Cells(lig, col2).Interior.Color = vbGreen
End If
Next N
End If
End If
Application.ScreenUpdating = True
End Sub

'clic droit sur cellules colonne Q et L pour enlever couleur
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Count > 1 Then Exit Sub
derligL = Range("L" & Rows.Count).End(xlUp).Row
derligQ = Range("Q" & Rows.Count).End(xlUp).Row
If Not Application.Intersect(Target, Range("L2:L" & derligL, "Q47:Q" & derligQ)) Is Nothing Then
Cancel = True
Range("L2:L" & derligL).Interior.Pattern = xlNone
Range("Q47:Q" & derligQ).Interior.Pattern = xlNone
End If
End Sub
A voir également:

1 réponse

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
27 févr. 2017 à 15:46
Bonjour,

Vous voulez I et N en plus des L et Q ou ????
0
Loriiiis Messages postés 20 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 1 mars 2017
27 févr. 2017 à 19:23
Bonsoir,
Non juste à la place car j'ai modifié mon tableur pour plus de simplicité.
Je pensais qu'ils fallait juste changer tous les L en I et les Q en N mais visiblement ça ne doit pas être aussi simple.
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709 > Loriiiis Messages postés 20 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 1 mars 2017
27 févr. 2017 à 19:52
Re,
Ben, normalement, juste à remplacer comme vous l'avez écrit . C'est moi qui vous ait donné ce code. Je regarde ça demain matin si personne ne prend la suite
À+
0
Loriiiis Messages postés 20 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 1 mars 2017 > f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024
27 févr. 2017 à 20:32
Re,
J'ai du raté quelques changements, j'avais juste réussi à changer Q en N. bizard... Je vais réessayer. Je remets un commentaire si j'y arrive pour ne pas vous déranger.
0
Loriiiis Messages postés 20 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 1 mars 2017
28 févr. 2017 à 20:54
Après avoir changer les lettres, la colonne I ne fonctionne toujours pas. Est-je raté une étape ? surement...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Count > 1 Then Exit Sub
derligI = Range("I" & Rows.Count).End(xlUp).Row
derligN = Range("N" & Rows.Count).End(xlUp).Row
If Not Application.Intersect(Target, Range("I2:I" & derligI, "N47:N" & derligN)) Is Nothing Then
Cancel = True
col = Target.Column
If col = 12 Then
D1 = 2: D2 = 47: Plage1 = "I2:I" & derligI: Plage2 = "N47:N" & derligN: col2 = 17
Else
D1 = 47: D2 = 2: Plage1 = "N47:N" & derligN: Plage2 = "I2:I" & derligI: col2 = 12
End If
Application.ScreenUpdating = False
Cel = Target.Value
Range(Plage1).Interior.Pattern = xlNone
Nb = Application.CountIf(Columns(col), Cel)
If Nb > 0 Then
lig = D1 'ligne de depart
For N = 1 To Nb
lig = Columns(col).Find(Cel, Cells(lig, col), , xlWhole).Row
If Cells(lig, col).Interior.Color = vbGreen Then
Cells(lig, col).Interior.Pattern = xlNone
Else
Cells(lig, col).Interior.Color = vbGreen
End If
Next N
End If
Range(Plage2).Interior.Pattern = xlNone
Nb = Application.CountIf(Columns(col2), Cel)
If Nb > 0 Then
lig = D2 'ligne de depart
For N = 1 To Nb
lig = Columns(col2).Find(Cel, Cells(lig, col2), , xlWhole).Row
If Cells(lig, col2).Interior.Color = vbGreen Then
Cells(lig, col2).Interior.Pattern = xlNone
Else
Cells(lig, col2).Interior.Color = vbGreen
End If
Next N
End If
End If
Application.ScreenUpdating = True
End Sub

'clic droit sur cellules colonne I et N pour enlever couleur
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Count > 1 Then Exit Sub
derligI = Range("I" & Rows.Count).End(xlUp).Row
derligN = Range("N" & Rows.Count).End(xlUp).Row
If Not Application.Intersect(Target, Range("I2:I" & derligI, "N47:N" & derligN)) Is Nothing Then
Cancel = True
Range("I2:I" & derligI).Interior.Pattern = xlNone
Range("N47:N" & derligN).Interior.Pattern = xlNone
End If
End Sub
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709 > Loriiiis Messages postés 20 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 1 mars 2017
1 mars 2017 à 07:57
Bonjour,

Est-je raté une étape ? surement...
Un leger detail:
If col = 12 Then     'colonne L, I c'est 9
0