Question bête de débutant. Dans un testbox, je teste si la valeur me
convient. En cas d'erreur j'envoie un message d'ano mais comment je fais au
retour pour que mon textbox soit de nouveau sélectionné afin de pouvoir
ressaisir ?
d_lat est le nom du textbox
Private Sub d_lat_Change()
If IsNumeric(d_lat.Value) Then
If d_lat.Value > 180 Then
n = MsgBox("Valeur supérieure à 180", vbOKOnly)
????
Else
lat = d_lat.Value
End If
Else
n = MsgBox("Valeur non numérique", vbOKOnly)
????
End If
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
David
Bonjour,
Avez-vous essayé ceci ,
Me.TextBox3.SetFocus
-- a+ Jean-Pol Site Web : www.colovid.be Site Web perso pour le fun : http://users.skynet.be/DAVID/ Cette page est transmise avec des électrons 100% recyclés.
"Heffgé" <*fgondard*@yahoo.fr> a écrit dans le message de news:
Bonjour,
Question bête de débutant. Dans un testbox, je teste si la valeur me convient. En cas d'erreur j'envoie un message d'ano mais comment je fais au retour pour que mon textbox soit de nouveau sélectionné afin de pouvoir ressaisir ?
d_lat est le nom du textbox
Private Sub d_lat_Change() If IsNumeric(d_lat.Value) Then If d_lat.Value > 180 Then n = MsgBox("Valeur supérieure à 180", vbOKOnly) ???? Else lat = d_lat.Value End If Else n = MsgBox("Valeur non numérique", vbOKOnly) ???? End If End Sub
J'ai essayé setfocus mais ça ne donne rien.
Merci d'avance pour vos réponses.
Heffgé
Bonjour,
Avez-vous essayé ceci ,
Me.TextBox3.SetFocus
--
a+ Jean-Pol
Site Web : www.colovid.be
Site Web perso pour le fun : http://users.skynet.be/DAVID/
Cette page est transmise avec des électrons 100% recyclés.
"Heffgé" <*fgondard*@yahoo.fr> a écrit dans le message de news:
eKt6aVWDKHA.3848@TK2MSFTNGP02.phx.gbl...
Bonjour,
Question bête de débutant. Dans un testbox, je teste si la valeur me
convient. En cas d'erreur j'envoie un message d'ano mais comment je fais
au retour pour que mon textbox soit de nouveau sélectionné afin de pouvoir
ressaisir ?
d_lat est le nom du textbox
Private Sub d_lat_Change()
If IsNumeric(d_lat.Value) Then
If d_lat.Value > 180 Then
n = MsgBox("Valeur supérieure à 180", vbOKOnly)
????
Else
lat = d_lat.Value
End If
Else
n = MsgBox("Valeur non numérique", vbOKOnly)
????
End If
End Sub
-- a+ Jean-Pol Site Web : www.colovid.be Site Web perso pour le fun : http://users.skynet.be/DAVID/ Cette page est transmise avec des électrons 100% recyclés.
"Heffgé" <*fgondard*@yahoo.fr> a écrit dans le message de news:
Bonjour,
Question bête de débutant. Dans un testbox, je teste si la valeur me convient. En cas d'erreur j'envoie un message d'ano mais comment je fais au retour pour que mon textbox soit de nouveau sélectionné afin de pouvoir ressaisir ?
d_lat est le nom du textbox
Private Sub d_lat_Change() If IsNumeric(d_lat.Value) Then If d_lat.Value > 180 Then n = MsgBox("Valeur supérieure à 180", vbOKOnly) ???? Else lat = d_lat.Value End If Else n = MsgBox("Valeur non numérique", vbOKOnly) ???? End If End Sub
J'ai essayé setfocus mais ça ne donne rien.
Merci d'avance pour vos réponses.
Heffgé
Jacques93
Bonjour Heffgé, Heffgé a écrit :
Bonjour,
Question bête de débutant. Dans un testbox, je teste si la valeur me convient. En cas d'erreur j'envoie un message d'ano mais comment je fais au retour pour que mon textbox soit de nouveau sélectionné afin de pouvoir ressaisir ?
d_lat est le nom du textbox
Private Sub d_lat_Change() If IsNumeric(d_lat.Value) Then If d_lat.Value > 180 Then n = MsgBox("Valeur supérieure à 180", vbOKOnly) ???? Else lat = d_lat.Value End If Else n = MsgBox("Valeur non numérique", vbOKOnly) ???? End If End Sub
J'ai essayé setfocus mais ça ne donne rien.
Merci d'avance pour vos réponses.
Heffgé
Tu peux utiliser l'événement BeforeUpdate, en positionnant la variable Cancel, le focus retournera sur le contrôle :
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If [valeur incorecte] Then MsgBox .... Cancel = True End If End Sub
--
Cordialement,
Jacques.
Bonjour Heffgé,
Heffgé a écrit :
Bonjour,
Question bête de débutant. Dans un testbox, je teste si la valeur me
convient. En cas d'erreur j'envoie un message d'ano mais comment je fais au
retour pour que mon textbox soit de nouveau sélectionné afin de pouvoir
ressaisir ?
d_lat est le nom du textbox
Private Sub d_lat_Change()
If IsNumeric(d_lat.Value) Then
If d_lat.Value > 180 Then
n = MsgBox("Valeur supérieure à 180", vbOKOnly)
????
Else
lat = d_lat.Value
End If
Else
n = MsgBox("Valeur non numérique", vbOKOnly)
????
End If
End Sub
J'ai essayé setfocus mais ça ne donne rien.
Merci d'avance pour vos réponses.
Heffgé
Tu peux utiliser l'événement BeforeUpdate, en positionnant la variable
Cancel, le focus retournera sur le contrôle :
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If [valeur incorecte] Then
MsgBox ....
Cancel = True
End If
End Sub
Question bête de débutant. Dans un testbox, je teste si la valeur me convient. En cas d'erreur j'envoie un message d'ano mais comment je fais au retour pour que mon textbox soit de nouveau sélectionné afin de pouvoir ressaisir ?
d_lat est le nom du textbox
Private Sub d_lat_Change() If IsNumeric(d_lat.Value) Then If d_lat.Value > 180 Then n = MsgBox("Valeur supérieure à 180", vbOKOnly) ???? Else lat = d_lat.Value End If Else n = MsgBox("Valeur non numérique", vbOKOnly) ???? End If End Sub
J'ai essayé setfocus mais ça ne donne rien.
Merci d'avance pour vos réponses.
Heffgé
Tu peux utiliser l'événement BeforeUpdate, en positionnant la variable Cancel, le focus retournera sur le contrôle :
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If [valeur incorecte] Then MsgBox .... Cancel = True End If End Sub
--
Cordialement,
Jacques.
LE TROLL
Bonjour,
Mais a priori tu es dans la procédure de ton texteBox, donc tu devrais t'y retrouver après le message ??? Oui, je viens de tester, tu retournes dans ton TextBox, alors tu n'as pas besoin d'y aller puisque tu y es :o)
Sub d_lat_Change() If IsNumeric(d_lat.Value) and d_lat.Value < 181 Then lat = d_lat.Value If IsNumeric(d_lat.Value) and d_lat.Value > 180 Then msgbox("Valeur > à 180°) If Not IsNumeric(d_lat.Value) then MsgBox("Valeur non numérique") End Sub
"Heffgé" <*fgondard*@yahoo.fr> a écrit dans le message de news:
Bonjour,
Question bête de débutant. Dans un testbox, je teste si la valeur me convient. En cas d'erreur j'envoie un message d'ano mais comment je fais au retour pour que mon textbox soit de nouveau sélectionné afin de pouvoir ressaisir ?
d_lat est le nom du textbox
Private Sub d_lat_Change() If IsNumeric(d_lat.Value) Then If d_lat.Value > 180 Then n = MsgBox("Valeur supérieure à 180", vbOKOnly) ???? Else lat = d_lat.Value End If Else n = MsgBox("Valeur non numérique", vbOKOnly) ???? End If End Sub
J'ai essayé setfocus mais ça ne donne rien.
Merci d'avance pour vos réponses.
Heffgé
Bonjour,
Mais a priori tu es dans la procédure de ton texteBox, donc tu devrais
t'y retrouver après le message ???
Oui, je viens de tester, tu retournes dans ton TextBox, alors tu n'as pas
besoin d'y aller puisque tu y es :o)
Sub d_lat_Change()
If IsNumeric(d_lat.Value) and d_lat.Value < 181 Then lat = d_lat.Value
If IsNumeric(d_lat.Value) and d_lat.Value > 180 Then msgbox("Valeur > à
180°)
If Not IsNumeric(d_lat.Value) then MsgBox("Valeur non numérique")
End Sub
"Heffgé" <*fgondard*@yahoo.fr> a écrit dans le message de
news:eKt6aVWDKHA.3848@TK2MSFTNGP02.phx.gbl...
Bonjour,
Question bête de débutant. Dans un testbox, je teste si la valeur me
convient. En cas d'erreur j'envoie un message d'ano mais comment je fais
au retour pour que mon textbox soit de nouveau sélectionné afin de pouvoir
ressaisir ?
d_lat est le nom du textbox
Private Sub d_lat_Change()
If IsNumeric(d_lat.Value) Then
If d_lat.Value > 180 Then
n = MsgBox("Valeur supérieure à 180", vbOKOnly)
????
Else
lat = d_lat.Value
End If
Else
n = MsgBox("Valeur non numérique", vbOKOnly)
????
End If
End Sub
Mais a priori tu es dans la procédure de ton texteBox, donc tu devrais t'y retrouver après le message ??? Oui, je viens de tester, tu retournes dans ton TextBox, alors tu n'as pas besoin d'y aller puisque tu y es :o)
Sub d_lat_Change() If IsNumeric(d_lat.Value) and d_lat.Value < 181 Then lat = d_lat.Value If IsNumeric(d_lat.Value) and d_lat.Value > 180 Then msgbox("Valeur > à 180°) If Not IsNumeric(d_lat.Value) then MsgBox("Valeur non numérique") End Sub
"Heffgé" <*fgondard*@yahoo.fr> a écrit dans le message de news:
Bonjour,
Question bête de débutant. Dans un testbox, je teste si la valeur me convient. En cas d'erreur j'envoie un message d'ano mais comment je fais au retour pour que mon textbox soit de nouveau sélectionné afin de pouvoir ressaisir ?
d_lat est le nom du textbox
Private Sub d_lat_Change() If IsNumeric(d_lat.Value) Then If d_lat.Value > 180 Then n = MsgBox("Valeur supérieure à 180", vbOKOnly) ???? Else lat = d_lat.Value End If Else n = MsgBox("Valeur non numérique", vbOKOnly) ???? End If End Sub
J'ai essayé setfocus mais ça ne donne rien.
Merci d'avance pour vos réponses.
Heffgé
Heffgé
Merci à tous pour vos réponses.
Comme je l'avais précisé le set focus seul ne donne rien. D'ailleurs je ne comprend pas cette syntaxe, c'est quoi ce Me ?
J'ai essayé l'événement BeforeUpdate comme suggéré par Jacques93 mais ça ne me donne rien et j'avoue ne pas vraiment comprendre la portée de cet événement dans le cas présent.
Ben oui LE TROLL c'est bien ce que je pensais au départ mais si j'y suis toujours ça ne se voit pas et rien n'est sélectionné.
J'ai sans doute mal exprimé ce que je souhaite obtenir. Je vais essayer de faire mieux : - à l'arrivée dans le champ la valeur par défaut (0 ici) est sélectionnée et affichée en video inverse pour signaler qu'on est en mode refrappe ; - après saisie je veux faire des contrôles de validité et en cas d'erreur décelée mettre le contenu en video inverse et en mode refrappe comme avant la saisie.
En cherchant j'ai trouvé ça : With .... .SetFocus .SelStart = 0 .SelLength = Len(d_lat.Text) End With
Là je sélectionne bien tous les caractères du formtext (la touche Suppr efface tout) mais ce n'est toujours pas visible. Faut-il que je me paye aussi les changement de couleur à la minime et dans ce cas comment revenir en affichage standard dès le 1er caractère saisi ?
Je suis surpris qu'il n'y ait pas un automatisme simple pour réaliser ça alors que c'est quand même le minimum dans la gestion d'une fenêtre de saisie.
D'autres idées maintenant que j'ai reformulé mon besoin ? Au fait je précise également que c'est un Office 2000.
Heffgé
Merci à tous pour vos réponses.
Comme je l'avais précisé le set focus seul ne donne rien. D'ailleurs je ne
comprend pas cette syntaxe, c'est quoi ce Me ?
J'ai essayé l'événement BeforeUpdate comme suggéré par Jacques93 mais ça ne
me donne rien et j'avoue ne pas vraiment comprendre la portée de cet
événement dans le cas présent.
Ben oui LE TROLL c'est bien ce que je pensais au départ mais si j'y suis
toujours ça ne se voit pas et rien n'est sélectionné.
J'ai sans doute mal exprimé ce que je souhaite obtenir. Je vais essayer de
faire mieux :
- à l'arrivée dans le champ la valeur par défaut (0 ici) est
sélectionnée et affichée en video inverse pour signaler qu'on est en mode
refrappe ;
- après saisie je veux faire des contrôles de validité et en cas
d'erreur décelée mettre le contenu en video inverse et en mode refrappe
comme avant la saisie.
En cherchant j'ai trouvé ça :
With ....
.SetFocus
.SelStart = 0
.SelLength = Len(d_lat.Text)
End With
Là je sélectionne bien tous les caractères du formtext (la touche Suppr
efface tout) mais ce n'est toujours pas visible. Faut-il que je me paye
aussi les changement de couleur à la minime et dans ce cas comment revenir
en affichage standard dès le 1er caractère saisi ?
Je suis surpris qu'il n'y ait pas un automatisme simple pour réaliser ça
alors que c'est quand même le minimum dans la gestion d'une fenêtre de
saisie.
D'autres idées maintenant que j'ai reformulé mon besoin ? Au fait je précise
également que c'est un Office 2000.
Comme je l'avais précisé le set focus seul ne donne rien. D'ailleurs je ne comprend pas cette syntaxe, c'est quoi ce Me ?
J'ai essayé l'événement BeforeUpdate comme suggéré par Jacques93 mais ça ne me donne rien et j'avoue ne pas vraiment comprendre la portée de cet événement dans le cas présent.
Ben oui LE TROLL c'est bien ce que je pensais au départ mais si j'y suis toujours ça ne se voit pas et rien n'est sélectionné.
J'ai sans doute mal exprimé ce que je souhaite obtenir. Je vais essayer de faire mieux : - à l'arrivée dans le champ la valeur par défaut (0 ici) est sélectionnée et affichée en video inverse pour signaler qu'on est en mode refrappe ; - après saisie je veux faire des contrôles de validité et en cas d'erreur décelée mettre le contenu en video inverse et en mode refrappe comme avant la saisie.
En cherchant j'ai trouvé ça : With .... .SetFocus .SelStart = 0 .SelLength = Len(d_lat.Text) End With
Là je sélectionne bien tous les caractères du formtext (la touche Suppr efface tout) mais ce n'est toujours pas visible. Faut-il que je me paye aussi les changement de couleur à la minime et dans ce cas comment revenir en affichage standard dès le 1er caractère saisi ?
Je suis surpris qu'il n'y ait pas un automatisme simple pour réaliser ça alors que c'est quand même le minimum dans la gestion d'une fenêtre de saisie.
D'autres idées maintenant que j'ai reformulé mon besoin ? Au fait je précise également que c'est un Office 2000.
Heffgé
Heffgé
C'est bien ce que j'avais fini par subodorer, mon Office était pourri ! Suppression, réinstallation, + 1 coup de Office Update et tout est rentré dans l'ordre.
En utilisant l'événement Exit plutôt que Change, ça donne
Private Sub d_lat_Exit(ByVal Cancel As MSForms.ReturnBoolean) ...... Cancel = True With .... .SelStart = 0 .SelLength = Len(d_lat.Text) End With ...... End Sub
Merci néanmoins pour vos suggestions.
Heffgé
C'est bien ce que j'avais fini par subodorer, mon Office était pourri !
Suppression, réinstallation, + 1 coup de Office Update et tout est rentré
dans l'ordre.
En utilisant l'événement Exit plutôt que Change, ça donne
Private Sub d_lat_Exit(ByVal Cancel As MSForms.ReturnBoolean)
......
Cancel = True
With ....
.SelStart = 0
.SelLength = Len(d_lat.Text)
End With
......
End Sub
C'est bien ce que j'avais fini par subodorer, mon Office était pourri ! Suppression, réinstallation, + 1 coup de Office Update et tout est rentré dans l'ordre.
En utilisant l'événement Exit plutôt que Change, ça donne
Private Sub d_lat_Exit(ByVal Cancel As MSForms.ReturnBoolean) ...... Cancel = True With .... .SelStart = 0 .SelLength = Len(d_lat.Text) End With ...... End Sub