1 pièce(s) jointe(s)
Problème déclenchement Evènement sur CommandButton
Bonjour,
J'ai un Userform contenant 50 CommandButton. Les CommandButton prennent une couleur suivant l'évènement : j'ai un planning, 50 bureaux, j'ai fait un Userform où j'ai mis 50 commandbutton représentant les bureaux, si les bureaux sont occupés, ils apparaissent en rouge, s'ils sont disponibles, ils sont en vert.
J'ai donc le code me permettant de boucler sur les bureaux et de les mettre en couleur suivant l'état (dispo ou non) :
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
| Private Sub UserForm_Initialize()
Dim MaPlage As Range
Dim DerligR2 As Integer
Dim ligne As Long
If Modification Then
'Déterminer la première ligne libre du tableau
ligne = 10 'ActiveCell.Row
'Créer la nouvelle ligne d'enregistrement
If Cells(ligne, 6) = "" Then
With Sheets("Planning")
DerligR2 = .Range("F" & .Rows.Count).End(xlUp).Row
Set MaPlage = .Range(.Cells(1, 6), .Cells(DerligR2, 6))
End With
Dim ctrl As Control
For Each ctrl In Me.Controls
With MaPlage
Set c = .Find(ctrl.Caption, LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
ctrl.BackColor = &HFF00&
Else
ctrl.BackColor = &HFF&
End If
End With
Next
End If
End If |
Jusque là, tout fonctionne, mais je souhaiterais cliquer sur le commandbutton d'un bureau disponible (=donc identifié en vert), afin de l'affecter, j'ai donc mis :
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
| Private Sub CommandButton1_Click()
Dim MaPlage As Range
Dim DerligR2 As Integer
With Sheets("Planning")
DerligR2 = .Range("F" & .Rows.Count).End(xlUp).Row
Set MaPlage = .Range(.Cells(1, 6), .Cells(DerligR2, 6))
End With
With MaPlage
Set c = .Find(CommandButton1.Caption, LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
CommandButton1.BackColor = &HFF00&
Else
CommandButton1.BackColor = &HFF&
End If
End With
End Sub |
Mais cela ne fonctionne pas et je comprends pas pourquoi….
J'ai appelé l'Userform par :
Code:
1 2 3 4
| Public Sub AfficheUSF()
Modification = False
UserForm1.Show
End Sub |
et dans la feuille "Planning", j'ai mis :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Option Explicit
Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Cells(ActiveCell.Row, 6) = "" Then
Cancel = True
'Modification d'une ligne
Modification = True
UserForm1.Show
End If
End Sub |
Mais idem, lorsque je clique sur une cellule de la colonne 6, cela ne déclenche pas l'USERFORM……
Dans la colonne 6, se trouvent les bureaux déjà utilisés…
Merci de m'indiquer ce qui ne va pas….et ou de m'expliquer pourquoi cela ne fonctionne pas…..
AU CAS OU, je mets le fichier en PJ….avec juste l'évènement Userform1 : lors de l'ouverture, identification des bureaux dispo en vert et en rouge, les bureaux déjà pris…..
merci pour votre aide,
A+
Eric