1 pièce(s) jointe(s)
Togglebutton colore les sélections
Bonjour,
Je cherche à créer un planning pour mon service. Il calcule les rotations de chaque agent du service pour chaque mois selon les sélections mise dans le userform de saisie. Jusque là je m'en sortait ^^,
Mais je bute sur une commande probablement très bête avec des ToggleButton. Mon but est que lorsque l'utilisateur clique sur un ToggleButton dans le userform "Saisie exceptions et congés", le pinceau (ou souris) applique une certaine mise en forme sur une sélection d'une ou plusieurs cellules sur la feuille excel.
Par exemple :
l'utilisateur clique sur le toggleButton"matin 1ère semaine" dans le userform1.
Le fond des cellules qu'il sélectionne ensuite sur la feuille excel devraient se colorer en vert.
Pièce jointe 324228
J'ai essayé avec ceci, mais rien ne se passe :
(Les togglebutton sont déclarer en temps que "Boolean" en "Public" du début de macro)
Code:
Public MATButton1 As Boolean, MATButton2 As Boolean, AMButton1 As Boolean, AMButton2 As Boolean, NUButton As Boolean, WEButton As Boolean, JOButton As Boolean, PRButton As Boolean, CPButton As Boolean, RTTButton As Boolean
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Sub clic_togglebutton()
With MATButton1 'matin 1
If .Value = True Then 'action quand bouton activé
While MATButton1 = True
Selection.Interior.ColorIndex = 43 'colore l'interieur des cases sélectionnées en vert
Wend
ElseIf .Value = False Then 'action quand bouton désactivé
'rien
End If
End With
End Sub |
1 pièce(s) jointe(s)
Pas de Togglebutton simplement des buttons qui pourraient être des label
bonjour,
dans un module : déclaration des variables
Code:
1 2 3 4 5
|
Public CouleurRGB As Long 'la couleur utilisée
Public CouleurACTIVE As Boolean ' si on utilise ou pas la couleur
Public CouleurANNULE As Boolean ' si on enleve la couleur
Public USF_ACTIF As Boolean 'si on utilise le form |
dans le code du form : sélection de la couleur et action sur les cellules
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
Private Sub UserForm_Initialize()
USF_ACTIF = True
End Sub
Private Sub UserForm_Terminate()
USF_ACTIF = False
End Sub
Private Sub CmdRouge_Click()
If Me.CmdRouge.BackColor = RGB(255, 0, 0) Then
'ferme
Call CouleurOFF
Me.CmdRouge.BackColor = &H8000000F 'normal
Else
'ouvre
Call CouleurOFF
Me.CmdRouge.BackColor = RGB(255, 0, 0) 'actif
CouleurRGB = Me.CmdRouge.BackColor
End If
End Sub
Private Sub CmdVert_Click()
If Me.CmdVert.BackColor = RGB(50, 131, 44) Then
'ferme
Call CouleurOFF
Me.CmdVert.BackColor = &H8000000F 'normal
Else
'ouvre
Call CouleurOFF
Me.CmdVert.BackColor = RGB(50, 131, 44) 'actif
CouleurRGB = Me.CmdVert.BackColor
End If
End Sub
Private Sub CouleurOFF()
'couleur blanc
CouleurRGB = -1
'couleur systeme "sommet du bouton"
Me.CmdRouge.BackColor = &H8000000F
Me.CmdVert.BackColor = &H8000000F
End Sub
Private Sub ChkCouleurANNULE_Click()
CouleurANNULE = ChkCouleurANNULE.Value
End Sub
Private Sub CmdOnOff_Click()
If Me.CmdOnOff.Caption = "ON" Then
'ferme
CouleurACTIVE = False
Me.CmdOnOff.Caption = "OFF" 'normal
Else
'ouvre
CouleurACTIVE = True
Me.CmdOnOff.Caption = "ON" 'actif
End If
End Sub |
dans le code de l'onglet / la feuille : on sélectionne la cellule , on ne fait rien OU on met OU on enlève la couleur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
Private Sub Worksheet_Activate()
CouleurACTIVE = False
CouleurANNULE = False
CouleurRGB = -1
USF.Show
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If USF_ACTIF Then
If CouleurACTIVE And CouleurRGB > -1 Then
Target.Interior.Color = CouleurRGB
ElseIf CouleurANNULE Then
With Target.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
End If
End Sub |
Pièce jointe 325151
@+JP