sur une case affection d'une couleur

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 !

roncevaux68

XLDnaute Junior
Bonjour a tous,
après des heures et des heures de recherche je m'en remets à vous pour résoudre mon problème

Comment affecter une couleur (en mémoire) à l'aide d'un clic droit de la souris dans une cellule.
Merci par avance de votre aide.
cordialement
Stéphane
 

Pièces jointes

Re : sur une case affection d'une couleur

Bonjour Roncevaux68,

Voici ci-dessous ta macro modifiée à placer sur l'onglet "Feuil1" comme précédemment (testé sur ton fichier, ça fonctionne).

VB:
Dim CouleurCellule As Long

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Macro réalisée par Excel-lent
    If Target.Row = 1 And Target.Column >= 4 And Target.Column <= 8 Then
        CouleurCellule = Cells(Target.Row, Target.Column).Interior.ColorIndex
    End If

End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'Macro réalisée par Roncevaux68, adapté par Excel-lent
    ActiveCell.Interior.ColorIndex = CouleurCellule
    Cancel = True
   
End Sub

Important, déclarer la variable "CouleurCellule" en public, c'est à dire commune à toutes les macros

Dans la première macro, lorsqu'on fait un clic gauche dans la plage de cellules : [D1:H1], il mémorise la couleur de cette cellule pour le cas où plus tard tu ferrais un clic droit.

Dans la seconde macro, lorsqu'on fait un clic droit dans une cellule, il récupère la couleur précédemment mémorisé (grâce à la variable public), et la met dans cette nouvelle cellule.

Si un point demeure obscure, n'hésite pas à demander plus d'explication.

Bonne fin d'après midi
 
Re : sur une case affection d'une couleur

Bonjour le fil, bonjour le forum,

Target étant une variable de type Range, on peut simplifier comme ça :
Code:
Private cc As Byte 'déclare la variable cc (Couleur Cellule)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("D1:H1")) Is Nothing Then
    cc = Target.Interior.ColorIndex
End If
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Target.Interior.ColorIndex = cc
End Sub
 
Re : sur une case affection d'une couleur

Bonjour le fil, bonjour le forum,

Essaie comme ça :
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Target.Value = Date 'ou Target.Value = Format(Date, "dd/mm/yyyy")
End Sub
Si tu veux limiter l'action à une plage d'application ça donne (ici limite l'action à la plage A1:E50, à adapter) :
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Application.Intersect(Target, Range("A1:E50")) Is Nothing Then Exit Sub
Cancel = True
Target.Value = Date 'ou Target.Value = Format(Date, "dd/mm/yyyy")
End Sub
 
Re : sur une case affection d'une couleur

re robert
j'ai deux questions:
1éré
je veux bien limiter l'action à 3 plages.
cette plage (E1,I200) (AE1,AH200) (BD1,BH200)

et 2eme
mais si la plage correspond à des colonnes par exemple les colonnes G ,X,AG,AP

cordialement
Stéphane
 
Dernière édition:
Re : sur une case affection d'une couleur

Bonjour le fil, bonjour le forum,

Utilise Application.Union(Range1, Range2, ..., Rangex) pour créer des plage discontinues.
Cela donne pour ton premier exemple :
Code:
If Application.Intersect(Target, Application.Union(Range("E1:I200"), Range("AE1:AH200"), Range("BD1:BH200"))) Is Nothing Then Exit Sub
et pour le second :
Code:
If Application.Intersect(Target, Application.Union(Columns("G"), Columns("X"), Columns("AG"), Columns("AP"))) Is Nothing Then Exit Sub
 
- 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

Retour