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

Excel 2000 / Excel 2003

3 réponses
Avatar
Yvan
Bonjour,

Quelqu'un peut-il m'expliquer pourquoi le setfocus fonctionne dans ce cas

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Textbox1.value = ""
Else
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If

End sub

et pas dans celui-ci

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Textbox1.value = ""
Else
Msgbox "Veuillez saisir un N°"
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If

End Sub

C'est la syntaxe du Msgbox qui semble faire obstacle !!!

--
Merci pour vos réponses.

3 réponses

Avatar
garnote
Salut Yvan,

Comme ceci, les deux macros fonctionnent.
Est-ce le résultat que tu attends ?

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value = "" Then
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If
End Sub

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value = "" Then
MsgBox "Veuillez saisir un N°"
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If
End Sub

Serge

"Yvan" a écrit dans le message de news:
Bonjour,

Quelqu'un peut-il m'expliquer pourquoi le setfocus fonctionne dans ce cas

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Textbox1.value = ""
Else
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If

End sub

et pas dans celui-ci

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Textbox1.value = ""
Else
Msgbox "Veuillez saisir un N°"
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If

End Sub

C'est la syntaxe du Msgbox qui semble faire obstacle !!!

--
Merci pour vos réponses.


Avatar
Yvan
Même sous Excel 2000 ???

Pour ma part, cela fonctionne bien sous 2003, mais pas sous 2000 !!!

Y-a-t-il une astuce ???
--
Merci pour vos réponses.



Salut Yvan,

Comme ceci, les deux macros fonctionnent.
Est-ce le résultat que tu attends ?

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value = "" Then
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If
End Sub

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value = "" Then
MsgBox "Veuillez saisir un N°"
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If
End Sub

Serge

"Yvan" a écrit dans le message de news:
Bonjour,

Quelqu'un peut-il m'expliquer pourquoi le setfocus fonctionne dans ce cas

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Textbox1.value = ""
Else
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If

End sub

et pas dans celui-ci

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Textbox1.value = ""
Else
Msgbox "Veuillez saisir un N°"
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If

End Sub

C'est la syntaxe du Msgbox qui semble faire obstacle !!!

--
Merci pour vos réponses.







Avatar
MichDenis
Tu mets ton message à la dernière ligne comme ceci :

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If TextBox1.Value = "" Then
Else

Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
MsgBox "Veuillez saisir un N°"
End If

End Sub

Et pourquoi ça ne fonctionne pas quand le message s'affiche en premier ?
Le temps que le message s'affiche a déjà fini de lire et d'exécuter les commandes
de ta procédure mais tu ne vois pas le texte sélectionné car le focus est sur ta
boîte de message à ce moment là. Quand tu cliques sur OK pour fermer ta boîte de message,
les lignes suivantes ont déjà été exécutées

Tu as toujours l'opportunité de faire ceci en ajoutant cette ligne de code
qui va obliger le processeur d'arrêter l'exécution jusqu'à la fermeture de ton
message après quoi 1 seconde s'écoulera avant la sélection du texte

'-----------------------------
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If TextBox1.Value = "" Then
Else
MsgBox "Veuillez saisir un N°"
Application.Wait Now + TimeValue("0:00:01")
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If

End Sub
'-----------------------------



"Yvan" a écrit dans le message de news:

Bonjour,

Quelqu'un peut-il m'expliquer pourquoi le setfocus fonctionne dans ce cas

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Textbox1.value = ""
Else
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If

End sub

et pas dans celui-ci

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Textbox1.value = ""
Else
Msgbox "Veuillez saisir un N°"
Cancel = True
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If

End Sub

C'est la syntaxe du Msgbox qui semble faire obstacle !!!

--
Merci pour vos réponses.