Bonjour le forum,
Je bute sur un truc (sûrement) tout bête.... J'ai créé un USF pour que l'utilisateur puisse entrer un horaire, avec deux TextBox (Heures et Minutes), un bouton "Confirmer" et un bouton "Annuler".
J'ai mis un contrôle de saisie sur les horaires, mon souci est que si je clique sur le bouton "Annuler", le programme va directement sur le contrôle de saisie sans passer par le code du bouton "Annulation"..... De même, si je clique sur la croix de fermeture, il passe par le contrôle de saisie, qui renvoie une erreur bien sûr, puisque le champ est vide !
J'ai tenté de passer par un booléen, mais vu que je ne passe pas par le code du bouton "Annulation"... ben ça marche pas !
Voici mon code :
Si une âme charitable passe dans le coin et m'explique comment on gère ce genre de truc, je lui en serais éternellement (ou presque...) reconnaissant !
Merci d'avance !
Je bute sur un truc (sûrement) tout bête.... J'ai créé un USF pour que l'utilisateur puisse entrer un horaire, avec deux TextBox (Heures et Minutes), un bouton "Confirmer" et un bouton "Annuler".
J'ai mis un contrôle de saisie sur les horaires, mon souci est que si je clique sur le bouton "Annuler", le programme va directement sur le contrôle de saisie sans passer par le code du bouton "Annulation"..... De même, si je clique sur la croix de fermeture, il passe par le contrôle de saisie, qui renvoie une erreur bien sûr, puisque le champ est vide !
J'ai tenté de passer par un booléen, mais vu que je ne passe pas par le code du bouton "Annulation"... ben ça marche pas !
Voici mon code :
VB:
Option Explicit
Public Annulation As Boolean
Private Sub CB_Annul_Click()
Annulation = True
TB_Heures.Text = ""
TB_Minutes.Text = ""
CB_Motif = ""
Me.Hide
End Sub
Private Sub CB_OK_Click()
If IsEmpty(Me.CB_Motif) Then
MsgBox "La saisie d'un motif est obligatoire."
Me.CB_Motif.SetFocus
End If
With Feuil1
.Unprotect Range("Securite")
With ActiveCell
.value = TB_Heures.Text & ":" & TB_Minutes
If .Comment Is Nothing Then
.AddComment Text:="Modifié le : " & Date & " par " & Utilisateur & vbCrLf & _
"Motif : " & Me.CB_Motif
.Comment.Shape.TextFrame.AutoSize = True
.Comment.Shape.OLEFormat.Object.Font.Name = "Arial"
.Comment.Shape.OLEFormat.Object.Font.Size = 9
Else
.Comment.Text Text:="Modifié le : " & Date & " par " & Utilisateur & vbCrLf & .Comment.Text
End If
End With
.Protect Range("Securite")
End With
TB_Heures.Text = ""
TB_Minutes.Text = ""
CB_Motif = ""
Me.Hide
End Sub
Private Sub TB_Heures_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Annulation Then Annulation = False: GoTo fin
If TB_Heures = "" Then MsgBox "Vous n'avez pas entré d'heure, veuillez corriger.": Cancel = True: GoTo fin
If Not IsNumeric(TB_Heures) Then TB_Heures.Text = "": MsgBox "Saisie incorrecte": Cancel = True
fin:
End Sub
Private Sub TB_Minutes_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Annulation Then Annulation = False: GoTo fin
If TB_Minutes = "" Then MsgBox "Vous n'avez pas entré de minutes, veuillez corriger": Cancel = True: GoTo fin
If Not IsNumeric(TB_Minutes) Then TB_Minutes.Text = "": MsgBox "Saisie incorrecte": Cancel = True
fin:
End Sub
Private Sub UserForm_Activate()
TB_Heures.SetFocus
End Sub
Private Sub UserForm_Initialize()
Dim Plage As Range
Me.Left = Application.Left + Application.Width / 2 - Me.Width / 2
Me.Top = Application.Top + Application.Height / 2 - Me.Height / 2
Set Plage = Feuil2.Range(Range("Motifs").Address)
Me.CB_Motif.List = Plage.value
End Sub
Si une âme charitable passe dans le coin et m'explique comment on gère ce genre de truc, je lui en serais éternellement (ou presque...) reconnaissant !
Merci d'avance !