Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb avec TxtBox

2 réponses
Avatar
Philou36
Bonjour,

Je suis un eternellement débutant avec excel, et avec les UserForm en
particulier : J'ai créé donc un formulaire avec entre autre 2 TxtBox.

Voilà un extrait du code :
Private Sub TxtDebPeriode_Change()
' Formulaire Principale
' En cas de changement de la date de début de période
'
If TxtDebPeriode.Value <> "" Then
If TxtDebPeriode.Value < 0 Or TxtDebPeriode.Value > 30 Then
MsgBox "Saisir une date comprise entre 1 et 30", vbOKOnly,
"Simulateur de Paie"
Else
If TxtDebPeriode.Value > TxtFinPeriode.Value And TxtFinPeriode.Value
<> "" Then
MsgBox "La date de début doit être inférieure à la date de fin",
vbOKOnly, "Simulateur de Paie"
Else
mm = Array("janvier", "février", "mars", "avril", "mai", "juin",
"juillet", "août", "septembre", "octobre", "novembre", "décembre")
MoisLettre = Left(Me.CboPeriode, Len(Me.CboPeriode) - 5)
Année = Right(Me.CboPeriode, 4)
...
Je pense que mon souci provient de l'évenement lié à la TxtBox. En effet
quand je teste que la date de fin est bien supérieure à la date de début
dans la ligne suivante :
If TxtDebPeriode.Value > TxtFinPeriode.Value And TxtFinPeriode.Value <> ""
Then
MsgBox "La date de début doit être inférieure à la date de fin",
vbOKOnly, "Simulateur de Paie"
il me renvoit le message de la MsgBox avant meme la fin de la saisie, il
faudrait faire le test quand je perd le focus, (j'avais un souvenir de
LostFocus mais je ne retrouve rien de tel dans excel)

N'hésitez pas à me détailler votre réponse.

Un grand merci à vous par avance pour vos réponses.

Bonne soirée.

Philippe

2 réponses

Avatar
Garnote
Bonsoir,

Est-ce mieux ainsi ?

Private Sub TxtDebPeriode_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TxtDebPeriode.Value <> "" Then
If TxtDebPeriode.Value <= 0 Or TxtDebPeriode.Value > 30 Then
Cancel = True
MsgBox "Saisir une date comprise entre 1 et 30", _
vbOKOnly, "Simulateur de Paie"
ElseIf TxtDebPeriode.Value > TxtFinPeriode.Value And _
TxtFinPeriode.Value <> "" Then
Cancel = True
MsgBox "La date de début doit être inférieure à la date de fin", _
vbOKOnly, "Simulateur de Paie"
End If
End If
End Sub

Serge


"Philou36" a écrit dans le message de news:
%23EUCr%
Bonjour,

Je suis un eternellement débutant avec excel, et avec les UserForm en
particulier : J'ai créé donc un formulaire avec entre autre 2 TxtBox.

Voilà un extrait du code :
Private Sub TxtDebPeriode_Change()
' Formulaire Principale
' En cas de changement de la date de début de période
'
If TxtDebPeriode.Value <> "" Then
If TxtDebPeriode.Value < 0 Or TxtDebPeriode.Value > 30 Then
MsgBox "Saisir une date comprise entre 1 et 30", vbOKOnly,
"Simulateur de Paie"
Else
If TxtDebPeriode.Value > TxtFinPeriode.Value And
TxtFinPeriode.Value <> "" Then
MsgBox "La date de début doit être inférieure à la date de
fin", vbOKOnly, "Simulateur de Paie"
Else
mm = Array("janvier", "février", "mars", "avril", "mai",
"juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")
MoisLettre = Left(Me.CboPeriode, Len(Me.CboPeriode) - 5)
Année = Right(Me.CboPeriode, 4)
...
Je pense que mon souci provient de l'évenement lié à la TxtBox. En effet
quand je teste que la date de fin est bien supérieure à la date de début
dans la ligne suivante :
If TxtDebPeriode.Value > TxtFinPeriode.Value And TxtFinPeriode.Value <> ""
Then
MsgBox "La date de début doit être inférieure à la date de
fin", vbOKOnly, "Simulateur de Paie"
il me renvoit le message de la MsgBox avant meme la fin de la saisie, il
faudrait faire le test quand je perd le focus, (j'avais un souvenir de
LostFocus mais je ne retrouve rien de tel dans excel)

N'hésitez pas à me détailler votre réponse.

Un grand merci à vous par avance pour vos réponses.

Bonne soirée.

Philippe




Avatar
LE TROLL
Bonjour,

Je pense que c'est la conception qui n'est pas adaptée au mieux, car
pour choisir deux dates, ce serait plus rapide, plus logique et plus simple
avec deux calendriers (en les positionnant préalablement (Value)), puis une
validation par bouton <ok> (philosophie Microsoft : choix + validation),
puis dans la procédure de validation du bouton tu fais tes tests (date2 >=
date1) + (mois identique) + (année identique) = ok, sinon rejet...

Pour le choix du nom des objets, pour ma part je pense qu'il ne faut pas
les changer, mais mettre un commentaire dans le code pour dire ce qu'il
fait, car ça permet une plus grande portabilité, par exemple si une autre
personne veux tester ton code, elle n'aura pas à mettre des noms aux objets,
d'autant que selon le nom on ne sait même plus ce que c'est parfois ; idem
pour les propriétés, dans la masure du possible les mettre dans le code
(multiline = true, par exemple), de cette façon tu connais immédiatement les
propriétés de l'objet, ce qui évite d'aller voir dans l'explorateur de
propriétés.

Cordialement ;o)

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Philou36" a écrit dans le message de
news:%23EUCr%
Bonjour,

Je suis un eternellement débutant avec excel, et avec les UserForm en
particulier : J'ai créé donc un formulaire avec entre autre 2 TxtBox.

Voilà un extrait du code :
Private Sub TxtDebPeriode_Change()
' Formulaire Principale
' En cas de changement de la date de début de période
'
If TxtDebPeriode.Value <> "" Then
If TxtDebPeriode.Value < 0 Or TxtDebPeriode.Value > 30 Then
MsgBox "Saisir une date comprise entre 1 et 30", vbOKOnly,
"Simulateur de Paie"
Else
If TxtDebPeriode.Value > TxtFinPeriode.Value And
TxtFinPeriode.Value <> "" Then
MsgBox "La date de début doit être inférieure à la date de
fin", vbOKOnly, "Simulateur de Paie"
Else
mm = Array("janvier", "février", "mars", "avril", "mai",
"juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")
MoisLettre = Left(Me.CboPeriode, Len(Me.CboPeriode) - 5)
Année = Right(Me.CboPeriode, 4)
...
Je pense que mon souci provient de l'évenement lié à la TxtBox. En effet
quand je teste que la date de fin est bien supérieure à la date de début
dans la ligne suivante :
If TxtDebPeriode.Value > TxtFinPeriode.Value And TxtFinPeriode.Value <> ""
Then
MsgBox "La date de début doit être inférieure à la date de
fin", vbOKOnly, "Simulateur de Paie"
il me renvoit le message de la MsgBox avant meme la fin de la saisie, il
faudrait faire le test quand je perd le focus, (j'avais un souvenir de
LostFocus mais je ne retrouve rien de tel dans excel)

N'hésitez pas à me détailler votre réponse.

Un grand merci à vous par avance pour vos réponses.

Bonne soirée.

Philippe