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

[VBA] pb avec un do ..loop until

3 réponses
Avatar
penelope
Bonjour
J'ai écrit le bout de code suivant
La macro Recherche entre 2 dates ouvre un UserForm n°1 constitué de
deux TextBox
Lorsque l'on passe la souris sur l'un des deux Textbox, on ouvre un
autre UserForm (n°2 ou n°3) qui est un calendrier
Ce que je voudrais ( et que je n'arrive pas à faire) c'est que la date
sélectionnée soit supérieure à une certaine date ( là en l'occurence
28/02/2007 ) d'où ma boucle Loop
Mais ca marche pas
en fait ca boucle quelle que soit la date sélectionnée
Pourquoi ?

Merci

Sub Recherche_entre_2_dates()
UserForm1.Show
End Sub

Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
Do
UserForm2.Show
Loop Until UserForm2.Calendar1.Value > "28/02/2007"
TextBox1.Value = UserForm2.Calendar1.Value
End
End Sub


Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
UserForm3.Show
TextBox2.Value = UserForm3.Calendar1.Value
End Sub

3 réponses

Avatar
tissot.emmanuel
Bonjour,

Pour passer un parametre entre deux Userform tu peux utiliser une variable
Public, ce qui donnerait le code suivant (non testé):

Dans un module standard:

Public UserDate As Date
Public Const DateMini As Date = #2/28/2007#

Sub Recherche_entre_2_dates()
UserForm1.Show
End Sub

Dans UserForm1:

Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
UserDateÚteMini
UserForm2.Show 'Userform2 prend la main et ne la rendra pas de sitot
TextBox1.Value = UserDate 'Récupération d'une date valide
End Sub

Dans UserForm2:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If Calendar1.Value <= DateMini Then 'Controle de la validite
Cancel = True 'Empeche de sortir du formulaire
MsgBox "Veuillez selectionner une date supérieure au " &
CStr(DateMini), vbInformation
Else
UserDate = Calendar1.Value 'Affectation de la date a la variable
publique
End If
End Sub

Cordialement,

Manu/

<penelope> a écrit dans le message de news:

Bonjour
J'ai écrit le bout de code suivant
La macro Recherche entre 2 dates ouvre un UserForm n°1 constitué de
deux TextBox
Lorsque l'on passe la souris sur l'un des deux Textbox, on ouvre un
autre UserForm (n°2 ou n°3) qui est un calendrier
Ce que je voudrais ( et que je n'arrive pas à faire) c'est que la date
sélectionnée soit supérieure à une certaine date ( là en l'occurence
28/02/2007 ) d'où ma boucle Loop
Mais ca marche pas
en fait ca boucle quelle que soit la date sélectionnée
Pourquoi ?

Merci

Sub Recherche_entre_2_dates()
UserForm1.Show
End Sub

Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
Do
UserForm2.Show
Loop Until UserForm2.Calendar1.Value > "28/02/2007"
TextBox1.Value = UserForm2.Calendar1.Value
End
End Sub


Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
UserForm3.Show
TextBox2.Value = UserForm3.Calendar1.Value
End Sub



Avatar
Boisgontier
Bonjour,

UserForm2.Calendar1.Value = CDate("28/2/2007") + 1
UserForm2.Show

Cordialement JB
<penelope> a écrit dans le message de news:

Bonjour
J'ai écrit le bout de code suivant
La macro Recherche entre 2 dates ouvre un UserForm n°1 constitué de
deux TextBox
Lorsque l'on passe la souris sur l'un des deux Textbox, on ouvre un
autre UserForm (n°2 ou n°3) qui est un calendrier
Ce que je voudrais ( et que je n'arrive pas à faire) c'est que la date
sélectionnée soit supérieure à une certaine date ( là en l'occurence
28/02/2007 ) d'où ma boucle Loop
Mais ca marche pas
en fait ca boucle quelle que soit la date sélectionnée
Pourquoi ?

Merci

Sub Recherche_entre_2_dates()
UserForm1.Show
End Sub

Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
Do
UserForm2.Show
Loop Until UserForm2.Calendar1.Value > "28/02/2007"
TextBox1.Value = UserForm2.Calendar1.Value
End
End Sub


Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
UserForm3.Show
TextBox2.Value = UserForm3.Calendar1.Value
End Sub



Avatar
JB
Bonjour,

UserForm2.Calendar1.Value = CDate("28/2/2007") + 1
UserForm2.Show

Cordialement JB


On 25 avr, 21:25, penelope wrote:
Bonjour
J'ai écrit le bout de code suivant
La macro Recherche entre 2 dates ouvre un UserForm n°1 constitué de
deux TextBox
Lorsque l'on passe la souris sur l'un des deux Textbox, on ouvre un
autre UserForm (n°2 ou n°3) qui est un calendrier
Ce que je voudrais ( et que je n'arrive pas à faire) c'est que la date
sélectionnée soit supérieure à une certaine date ( là en l'occu rence
28/02/2007 ) d'où ma boucle Loop
Mais ca marche pas
en fait ca boucle quelle que soit la date sélectionnée
Pourquoi ?

Merci

Sub Recherche_entre_2_dates()
UserForm1.Show
End Sub

Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
Do
UserForm2.Show
Loop Until UserForm2.Calendar1.Value > "28/02/2007"
TextBox1.Value = UserForm2.Calendar1.Value
End
End Sub

Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
UserForm3.Show
TextBox2.Value = UserForm3.Calendar1.Value
End Sub