Je souhaiterais choisir la couleur de fond d'une cellule ,et lui affecter la valeur 1,en sélectionnant cette couleur parmi les 4 (Rouge,Vert,jaune ,bleu) qui seraient proposées par un UserForm apparaissant en cliquant sur cette cellule.
Tu crées un UserForm qui avec des OptionButton, qui ressemble à ceci :
Ensuite, en double cliquant sur un contrôle, tu rentres le code suivant :
VB:
Private Sub OptionButton1_Click()
ActiveCell = 1
ActiveCell.Interior.ColorIndex = 3
Me.Hide
End Sub
Private Sub OptionButton2_Click()
ActiveCell = 1
ActiveCell.Interior.ColorIndex = 4
Me.Hide
End Sub
Private Sub OptionButton3_Click()
ActiveCell = 1
ActiveCell.Interior.ColorIndex = 6
Me.Hide
End Sub
Private Sub OptionButton4_Click()
ActiveCell = 1
ActiveCell.Interior.ColorIndex = 5
Me.Hide
End Sub
Ensuite, dans le code de la feuille où tu veux avoir cette macro, tu colles ceci :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UserForm1.Show
End Sub
Et voilà. Si tu veux remplacer un simple click par un double click, la macro devient :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
UserForm1.Show
End Sub
Bonjour Katoch, salut Fred0o, avec mes meilleurs voeux pour 2012
Construire un UserForm vous fatigue ? Moi aussi.
Alors cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If [D5] <> 1 Then
[D5].Interior.ColorIndex = _
Switch([D5] = "Rouge", 3, [D5] = "Vert", 4, [D5] = "Jaune", 6, [D5] = "Bleu", 8, True, xlNone)
[D5] = 1
End If
End Sub
Plutôt qu'une pseudo ComboBox (compliqué), autant utiliser une palette de couleur standard :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$D$5" Then
Application.Dialogs(xlDialogPatterns).Show
[D5] = 1
End If
End Sub