Excel 2000 / Excel 2003

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
garnote
Le #4496441
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"
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.


Yvan
Le #4496421
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"
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.







MichDenis
Le #4496401
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"
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.
Publicité
Poster une réponse
Anonyme