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

Redonner focus

11 réponses
Avatar
JulieH
Bonjour,

Je galère depuis un certain temps avec un problème particulier : dans
un Userform, après gestion d'une erreur, je n'arrive pas à redonner la
main à la TextBox souhaitée.

Plutôt que de longs discours, je me suis décidée à construire un
micro-exemple. Si quelqu'un veut bien avoir la gentilesse de regarder.
http://cjoint.com/?iiir0uoFaR

Merci d'avance.

Julie

10 réponses

1 2
Avatar
JB
Bonjour,


Formulaire en mode Modal:

Private Sub CmdB1_UF6_Click()
Application.ScreenUpdating = True
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)

If Not x Is Nothing Then
For i = 2 To 4
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
Me.TextBox1 = ""
End If
Me.TextBox1.SetFocus
End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
End If
End If

http://cjoint.com/?iiiU1lcvjE

JB

On 8 août, 08:18, JulieH wrote:
Bonjour,

Je galère depuis un certain temps avec un problème particulie r : dans
un Userform, après gestion d'une erreur, je n'arrive pas à redonner la
main à la TextBox souhaitée.

Plutôt que de longs discours, je me suis décidée à constr uire un
micro-exemple. Si quelqu'un veut bien avoir la gentilesse de regarder.
http://cjoint.com/?iiir0uoFaR

Merci d'avance.

Julie


Avatar
JulieH
Bonjour,

Merci encore une fois pour ton aide. Le mode Modal et tout ce qui
l'entoure, ce n'est vraiment pas mon truc, je ne me suis jamais vraiment
penchée sur son utilité.

Bonne journée

Julie


Bonjour,


Formulaire en mode Modal:

Private Sub CmdB1_UF6_Click()
Application.ScreenUpdating = True
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)

If Not x Is Nothing Then
For i = 2 To 4
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
Me.TextBox1 = ""
End If
Me.TextBox1.SetFocus
End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
End If
End If

http://cjoint.com/?iiiU1lcvjE

JB

On 8 août, 08:18, JulieH wrote:
Bonjour,

Je galère depuis un certain temps avec un problème particulier : dans
un Userform, après gestion d'une erreur, je n'arrive pas à redonner la
main à la TextBox souhaitée.

Plutôt que de longs discours, je me suis décidée à construire un
micro-exemple. Si quelqu'un veut bien avoir la gentilesse de regarder.
http://cjoint.com/?iiir0uoFaR

Merci d'avance.

Julie






Avatar
JB
Le mode non modal permet à l'opérateur d'accéder à la feuille de
calcul. Dans le cas présent, est-ce nécéssaire?

JB

On 8 août, 09:14, JulieH wrote:
Bonjour,

Merci encore une fois pour ton aide. Le mode Modal et tout ce qui
l'entoure, ce n'est vraiment pas mon truc, je ne me suis jamais vraiment
penchée sur son utilité.

Bonne journée

Julie




Bonjour,

Formulaire en mode Modal:

Private Sub CmdB1_UF6_Click()
Application.ScreenUpdating = True
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)

If Not x Is Nothing Then
For i = 2 To 4
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
Me.TextBox1 = ""
End If
Me.TextBox1.SetFocus
End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhol e)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLin e &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
End If
End If

http://cjoint.com/?iiiU1lcvjE

JB

On 8 août, 08:18, JulieH wrote:
Bonjour,

Je galère depuis un certain temps avec un problème particu lier : dans
un Userform, après gestion d'une erreur, je n'arrive pas à redonne r la
main à la TextBox souhaitée.

Plutôt que de longs discours, je me suis décidée à con struire un
micro-exemple. Si quelqu'un veut bien avoir la gentilesse de regarder.
http://cjoint.com/?iiir0uoFaR

Merci d'avance.

Julie- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -




Avatar
JulieH
Je m'excuse mais finalement, la solution me pose un autre problème. En
effet, je gère une seconde possibilité d'erreur : "les données sont déjà
saisies".

Dans ce cas, l'ensemble du code est le suivant :

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

y = Me.TextBox1.Value
'Compteur = Me.TextBox8.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil1].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLine & "
n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
Cancel = True

Else 'Gestion des données déjà saisies.
If Application.CountA(Cells(x.Row, 8).Resize(1, 6)) > 0 Then
For i = 2 To 3
Me("textbox" & i) = Cells(x.Row, i + 6)
Next i
For i = 4 To 5
Me("textbox" & i) = Cells(x.Row, i + 7)
Next i
'MsgBox "données déjà saisies"
Texte = "Les données de la femelle " & y & vbNewLine & " sont
déjà saisies."
MsgBx2.LabMsgBx2 = Texte
MsgBx2.Show
Cancel = True
End If
End If
End If

Cette MsgBox2 a deux boutons : valider les données déjà saisies ou
Corriger.

Pour valider, il n'y a pas de problème, il efface la valeur de Textbox1
et lui redonne le focus. La ligne "Cancel = True" et les précédentes
améliorations conviennent.
En revanche pour corriger, j'avais le code suivant :

Private Sub CmdB2_MsgBx2_Click()
Unload Me
For i = 2 To 5
UserForm1("textbox" & i) = ""
Next i
UserForm1.TextBox2.SetFocus
End Sub

Maintenant, il ne veut plus redonner le focus à TextBox2, il revient
systématiquement sur TextBox1, si je valide la MsgBox2 apparaît à
nouveau et on peut tourner en rond à l'infini.

Y-a-t-il une solution ? Sans doute.

Merci d'avance

Julie

Bonjour,


Formulaire en mode Modal:

Private Sub CmdB1_UF6_Click()
Application.ScreenUpdating = True
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)

If Not x Is Nothing Then
For i = 2 To 4
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
Me.TextBox1 = ""
End If
Me.TextBox1.SetFocus
End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
End If
End If

http://cjoint.com/?iiiU1lcvjE

JB

On 8 août, 08:18, JulieH wrote:
Bonjour,

Je galère depuis un certain temps avec un problème particulier : dans
un Userform, après gestion d'une erreur, je n'arrive pas à redonner la
main à la TextBox souhaitée.

Plutôt que de longs discours, je me suis décidée à construire un
micro-exemple. Si quelqu'un veut bien avoir la gentilesse de regarder.
http://cjoint.com/?iiir0uoFaR

Merci d'avance.

Julie






Avatar
JulieH
Non ce n'est pas nécessaire.

Pour mon message suivant, je me suis aperçue que j'avais mélangé du code
de mon exemple avec mon code original.

J'ai donc reconstituer mon problème, ce sera plus clair :
http://cjoint.com/?iimFtCWHTg

Merci d'avance

Julie

Le mode non modal permet à l'opérateur d'accéder à la feuille de
calcul. Dans le cas présent, est-ce nécéssaire?

JB

On 8 août, 09:14, JulieH wrote:
Bonjour,

Merci encore une fois pour ton aide. Le mode Modal et tout ce qui
l'entoure, ce n'est vraiment pas mon truc, je ne me suis jamais vraiment
penchée sur son utilité.

Bonne journée

Julie




Bonjour,
Formulaire en mode Modal:
Private Sub CmdB1_UF6_Click()
Application.ScreenUpdating = True
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If Not x Is Nothing Then
For i = 2 To 4
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
Me.TextBox1 = ""
End If
Me.TextBox1.SetFocus
End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
End If
End If
http://cjoint.com/?iiiU1lcvjE
JB
On 8 août, 08:18, JulieH wrote:
Bonjour,
Je galère depuis un certain temps avec un problème particulier : dans
un Userform, après gestion d'une erreur, je n'arrive pas à redonner la
main à la TextBox souhaitée.
Plutôt que de longs discours, je me suis décidée à construire un
micro-exemple. Si quelqu'un veut bien avoir la gentilesse de regarder.
http://cjoint.com/?iiir0uoFaR
Merci d'avance.
Julie- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -










Avatar
JB
http://cjoint.com/?iinbrLpgnO

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
Else 'Gestion des données déjà saisies.
If Application.CountA(Cells(x.Row, 2).Resize(1, 3)) > 0 Then
For i = 2 To 4
Me("textbox" & i) = Cells(x.Row, i)
Next i
Texte = "Les données de la femelle " & y & vbNewLine & "
sont déjà saisies."
MsgBx2.LabMsgBx2 = Texte
MsgBx2.Show
End If
End If
End If
End Sub

JB

On 8 août, 12:34, JulieH wrote:
Non ce n'est pas nécessaire.

Pour mon message suivant, je me suis aperçue que j'avais mélangé du code
de mon exemple avec mon code original.

J'ai donc reconstituer mon problème, ce sera plus clair :
http://cjoint.com/?iimFtCWHTg

Merci d'avance

Julie




Le mode non modal permet à l'opérateur d'accéder à la feuille de
calcul. Dans le cas présent, est-ce nécéssaire?

JB

On 8 août, 09:14, JulieH wrote:
Bonjour,

Merci encore une fois pour ton aide. Le mode Modal et tout ce qui
l'entoure, ce n'est vraiment pas mon truc, je ne me suis jamais vraime nt
penchée sur son utilité.

Bonne journée

Julie




Bonjour,
Formulaire en mode Modal:
Private Sub CmdB1_UF6_Click()
Application.ScreenUpdating = True
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWho le)
If Not x Is Nothing Then
For i = 2 To 4
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
Me.TextBox1 = ""
End If
Me.TextBox1.SetFocus
End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWh ole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewL ine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
End If
End If
http://cjoint.com/?iiiU1lcvjE
JB
On 8 août, 08:18, JulieH wrote:
Bonjour,
Je galère depuis un certain temps avec un problème parti culier : dans
un Userform, après gestion d'une erreur, je n'arrive pas à redon ner la
main à la TextBox souhaitée.
Plutôt que de longs discours, je me suis décidée à c onstruire un
micro-exemple. Si quelqu'un veut bien avoir la gentilesse de regarde r.
http://cjoint.com/?iiir0uoFaR
Merci d'avance.
Julie- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -





- Afficher le texte des messages précédents -






Avatar
JulieH
Je crois bien que ce que tu proposes correspond à ce que j'avais avant
ce matin (sans la ligne Cancel = True).

Dans ce cas-là, il fonctionne parfaitement avec le bouton "Corriger"
mais pas avec "Valider" car il ne revient pas à Textbox1.

Julie

http://cjoint.com/?iinbrLpgnO

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
Else 'Gestion des données déjà saisies.
If Application.CountA(Cells(x.Row, 2).Resize(1, 3)) > 0 Then
For i = 2 To 4
Me("textbox" & i) = Cells(x.Row, i)
Next i
Texte = "Les données de la femelle " & y & vbNewLine & "
sont déjà saisies."
MsgBx2.LabMsgBx2 = Texte
MsgBx2.Show
End If
End If
End If
End Sub

JB

On 8 août, 12:34, JulieH wrote:
Non ce n'est pas nécessaire.

Pour mon message suivant, je me suis aperçue que j'avais mélangé du code
de mon exemple avec mon code original.

J'ai donc reconstituer mon problème, ce sera plus clair :
http://cjoint.com/?iimFtCWHTg

Merci d'avance

Julie




Le mode non modal permet à l'opérateur d'accéder à la feuille de
calcul. Dans le cas présent, est-ce nécéssaire?
JB
On 8 août, 09:14, JulieH wrote:
Bonjour,
Merci encore une fois pour ton aide. Le mode Modal et tout ce qui
l'entoure, ce n'est vraiment pas mon truc, je ne me suis jamais vraiment
penchée sur son utilité.
Bonne journée
Julie
Bonjour,
Formulaire en mode Modal:
Private Sub CmdB1_UF6_Click()
Application.ScreenUpdating = True
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If Not x Is Nothing Then
For i = 2 To 4
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
Me.TextBox1 = ""
End If
Me.TextBox1.SetFocus
End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
End If
End If
http://cjoint.com/?iiiU1lcvjE
JB
On 8 août, 08:18, JulieH wrote:
Bonjour,
Je galère depuis un certain temps avec un problème particulier : dans
un Userform, après gestion d'une erreur, je n'arrive pas à redonner la
main à la TextBox souhaitée.
Plutôt que de longs discours, je me suis décidée à construire un
micro-exemple. Si quelqu'un veut bien avoir la gentilesse de regarder.
http://cjoint.com/?iiir0uoFaR
Merci d'avance.
Julie- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -












Avatar
JB
http://cjoint.com/?iipbvHDoxa

JB
On 8 août, 13:39, JulieH wrote:
Je crois bien que ce que tu proposes correspond à ce que j'avais avant
ce matin (sans la ligne Cancel = True).

Dans ce cas-là, il fonctionne parfaitement avec le bouton "Corriger"
mais pas avec "Valider" car il ne revient pas à Textbox1.

Julie




http://cjoint.com/?iinbrLpgnO

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhol e)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLin e &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
Else 'Gestion des données déjà saisies.
If Application.CountA(Cells(x.Row, 2).Resize(1, 3)) > 0 Then
For i = 2 To 4
Me("textbox" & i) = Cells(x.Row, i)
Next i
Texte = "Les données de la femelle " & y & vbNewLine & "
sont déjà saisies."
MsgBx2.LabMsgBx2 = Texte
MsgBx2.Show
End If
End If
End If
End Sub

JB

On 8 août, 12:34, JulieH wrote:
Non ce n'est pas nécessaire.

Pour mon message suivant, je me suis aperçue que j'avais mélangé du code
de mon exemple avec mon code original.

J'ai donc reconstituer mon problème, ce sera plus clair :
http://cjoint.com/?iimFtCWHTg

Merci d'avance

Julie




Le mode non modal permet à l'opérateur d'accéder à la feuille de
calcul. Dans le cas présent, est-ce nécéssaire?
JB
On 8 août, 09:14, JulieH wrote:
Bonjour,
Merci encore une fois pour ton aide. Le mode Modal et tout c e qui
l'entoure, ce n'est vraiment pas mon truc, je ne me suis jamais vrai ment
penchée sur son utilité.
Bonne journée
Julie
Bonjour,
Formulaire en mode Modal:
Private Sub CmdB1_UF6_Click()
Application.ScreenUpdating = True
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlW hole)
If Not x Is Nothing Then
For i = 2 To 4
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
Me.TextBox1 = ""
End If
Me.TextBox1.SetFocus
End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xl Whole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNe wLine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
End If
End If
http://cjoint.com/?iiiU1lcvjE
JB
On 8 août, 08:18, JulieH wrote:
Bonjour,
Je galère depuis un certain temps avec un problème par ticulier : dans
un Userform, après gestion d'une erreur, je n'arrive pas à red onner la
main à la TextBox souhaitée.
Plutôt que de longs discours, je me suis décidée à construire un
micro-exemple. Si quelqu'un veut bien avoir la gentilesse de regar der.
http://cjoint.com/?iiir0uoFaR
Merci d'avance.
Julie- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -





- Afficher le texte des messages précédents -








Avatar
JulieH
Merci à nouveau, c'est parfait cette fois.

Julie


http://cjoint.com/?iipbvHDoxa

JB
On 8 août, 13:39, JulieH wrote:
Je crois bien que ce que tu proposes correspond à ce que j'avais avant
ce matin (sans la ligne Cancel = True).

Dans ce cas-là, il fonctionne parfaitement avec le bouton "Corriger"
mais pas avec "Valider" car il ne revient pas à Textbox1.

Julie




http://cjoint.com/?iinbrLpgnO
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
Else 'Gestion des données déjà saisies.
If Application.CountA(Cells(x.Row, 2).Resize(1, 3)) > 0 Then
For i = 2 To 4
Me("textbox" & i) = Cells(x.Row, i)
Next i
Texte = "Les données de la femelle " & y & vbNewLine & "
sont déjà saisies."
MsgBx2.LabMsgBx2 = Texte
MsgBx2.Show
End If
End If
End If
End Sub
JB
On 8 août, 12:34, JulieH wrote:
Non ce n'est pas nécessaire.
Pour mon message suivant, je me suis aperçue que j'avais mélangé du code
de mon exemple avec mon code original.
J'ai donc reconstituer mon problème, ce sera plus clair :
http://cjoint.com/?iimFtCWHTg
Merci d'avance
Julie
Le mode non modal permet à l'opérateur d'accéder à la feuille de
calcul. Dans le cas présent, est-ce nécéssaire?
JB
On 8 août, 09:14, JulieH wrote:
Bonjour,
Merci encore une fois pour ton aide. Le mode Modal et tout ce qui
l'entoure, ce n'est vraiment pas mon truc, je ne me suis jamais vraiment
penchée sur son utilité.
Bonne journée
Julie
Bonjour,
Formulaire en mode Modal:
Private Sub CmdB1_UF6_Click()
Application.ScreenUpdating = True
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If Not x Is Nothing Then
For i = 2 To 4
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
Me.TextBox1 = ""
End If
Me.TextBox1.SetFocus
End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
End If
End If
http://cjoint.com/?iiiU1lcvjE
JB
On 8 août, 08:18, JulieH wrote:
Bonjour,
Je galère depuis un certain temps avec un problème particulier : dans
un Userform, après gestion d'une erreur, je n'arrive pas à redonner la
main à la TextBox souhaitée.
Plutôt que de longs discours, je me suis décidée à construire un
micro-exemple. Si quelqu'un veut bien avoir la gentilesse de regarder.
http://cjoint.com/?iiir0uoFaR
Merci d'avance.
Julie- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -














Avatar
JulieH
Excuse-moi de revenir à nouveau mais je ne m'en sors pas.

Je vois bien que dans ton fichier, tout fonctionne, or quand j'essaie de
refaire la même chose, cela ne se passe pas comme prévu.

Le principal problème est le suivant :
- Quand je passe mon useform en Modal, il n'a plus le même comportement
: il ne met pas à jour directement la table.
- Si j'essaie de le déplacer, je le trouve en double en dessous.
- Lorsque je ferme par la croix, tout se met à jour.

J'ai remis comme exemple mon fichier de ce matin dans lequel je n'ai pas
mis en place tes dernières modifications.
http://cjoint.com/?iiqeTPKdc8

Où est mon erreur ?

Merci de ta patience.

Julie



http://cjoint.com/?iipbvHDoxa

JB
On 8 août, 13:39, JulieH wrote:
Je crois bien que ce que tu proposes correspond à ce que j'avais avant
ce matin (sans la ligne Cancel = True).

Dans ce cas-là, il fonctionne parfaitement avec le bouton "Corriger"
mais pas avec "Valider" car il ne revient pas à Textbox1.

Julie




http://cjoint.com/?iinbrLpgnO
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
Else 'Gestion des données déjà saisies.
If Application.CountA(Cells(x.Row, 2).Resize(1, 3)) > 0 Then
For i = 2 To 4
Me("textbox" & i) = Cells(x.Row, i)
Next i
Texte = "Les données de la femelle " & y & vbNewLine & "
sont déjà saisies."
MsgBx2.LabMsgBx2 = Texte
MsgBx2.Show
End If
End If
End If
End Sub
JB
On 8 août, 12:34, JulieH wrote:
Non ce n'est pas nécessaire.
Pour mon message suivant, je me suis aperçue que j'avais mélangé du code
de mon exemple avec mon code original.
J'ai donc reconstituer mon problème, ce sera plus clair :
http://cjoint.com/?iimFtCWHTg
Merci d'avance
Julie
Le mode non modal permet à l'opérateur d'accéder à la feuille de
calcul. Dans le cas présent, est-ce nécéssaire?
JB
On 8 août, 09:14, JulieH wrote:
Bonjour,
Merci encore une fois pour ton aide. Le mode Modal et tout ce qui
l'entoure, ce n'est vraiment pas mon truc, je ne me suis jamais vraiment
penchée sur son utilité.
Bonne journée
Julie
Bonjour,
Formulaire en mode Modal:
Private Sub CmdB1_UF6_Click()
Application.ScreenUpdating = True
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If Not x Is Nothing Then
For i = 2 To 4
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
Me.TextBox1 = ""
End If
Me.TextBox1.SetFocus
End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
y = Me.TextBox1.Value
If Me.TextBox1 <> "" Then
Set x = [Feuil2].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If x Is Nothing Then
Texte = "L'animal avec le numéro de tatouage " & y & vbNewLine &
" n'existe pas dans l'élevage."
MsgBx1.LabMsgBx1.Caption = Texte
MsgBx1.Show
Me.TextBox1 = ""
TextBox1.SetFocus
Cancel = True
End If
End If
http://cjoint.com/?iiiU1lcvjE
JB
On 8 août, 08:18, JulieH wrote:
Bonjour,
Je galère depuis un certain temps avec un problème particulier : dans
un Userform, après gestion d'une erreur, je n'arrive pas à redonner la
main à la TextBox souhaitée.
Plutôt que de longs discours, je me suis décidée à construire un
micro-exemple. Si quelqu'un veut bien avoir la gentilesse de regarder.
http://cjoint.com/?iiir0uoFaR
Merci d'avance.
Julie- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -














1 2