Si j'ai une colonne de numéros référencés et que je voudrais colorer la cellule référencée automatiquement après un clic droit, comment puis-je vous référer à la cellule de référence dans VBA. Dans l'exmaple, j'ai les valeurs référencées dans la colonne [O]. À [O4] J'ai la valeur [= $ G $ 12]. Si je clique sur [O4], je veux la coller avec la cellule de référence G12. Ce serait une étape supplémentaire que j'aimerais colorer la cellule au-dessus de [G12] aussi. J'ai essayé d'insérer ceci dans la formule:
Select Case Target.Address
Case "$O$4" '<~ if cell A1 is clicked, highlight cells C5-C9 yellow
Cancel = True
If .Range("O4,G11:G12").Interior.Color = RGB(255, 153, 0) Then
.Range("O4,G11:G12").Interior.Color = RGB(255, 255, 255)
.Range("O4,G11:G12").Font.Bold = False
Else: .Range("O4,G11:G12").Interior.Color = RGB(255, 153, 0)
.Range("O4,G11:G12").Font.Bold = True
End If
End Select
3 Réponses :
Essayez cette approche, veuillez:
Dim strForm As String, newRng As Range
Select Case Target.Address
Case "$O$4" '<~ if cell A1 is clicked, highlight cells C5-C9 yellow
Cancel = True
strForm = Target.Formula
'split string formula on "$" character and use the array obtained elements, to build the new address
Set newRng = Range(Range(Split(strForm, "$")(1) & Split(strForm, "$")(2) - 1).Address & ":" & _
Range(Split(strForm, "$")(1) & Split(strForm, "$")(2)).Address)
If Range(Target.Address(0, 0) & "," & newRng.Address).Interior.Color = RGB(255, 153, 0) Then
Range(Target.Address(0, 0) & "," & newRng.Address).Interior.Color = RGB(255, 255, 255)
Range(Target.Address(0, 0) & "," & newRng.Address).Font.Bold = False
Else: Range(Target.Address(0, 0) & "," & newRng.Address).Interior.Color = RGB(255, 153, 0)
Range(Target.Address(0, 0) & "," & newRng.Address).Font.Bold = True
End If
End Select
Vous pouvez utiliser précédents Code> Propriété de Plage Code> OBEJCT: Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Address
Case "$O$4"
Cancel = True
Dim rng As Range
Set rng = Target.Precedents
If rng Is Nothing Then
Set rng = Target
Else
Set rng = Union(Target, rng, rng.Offset(-1))
End If
If rng.Interior.Color = RGB(255, 153, 0) Then
rng.Interior.Color = RGB(255, 255, 255)
rng.Font.Bold = False
Else
rng.Interior.Color = RGB(255, 153, 0)
rng.Font.Bold = True
End If
End Select
End Sub
Merci beaucoup pour vous deux. Finement ça marche. J'ai une année supplémentaire afin de réduire la longueur du code. P>
Permet de le considérer comme un bloc pour colorier des cellules si je CLCIK sur la cellule [O4]. Si je ne veux pas répéter ce bloc plusieurs fois, mais je veux la même fonctionnalité pour la gamme de [O4: O45] avec le contenu de référence correspondant Comment je peux le faire? Désolé je ne suis pas si expérimenté dans le codage, mais je suis très satisfait du résultat jusqu'à présent. Merci beaucoup! P>
Vos formules sont-elles toutes les formules "= A1" ou sont-elles plus compliquées?
A1 dans le commentaire est vieux mais j'ai eu la solution, merci :)