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
Cela semble bien être mon Userform qui pose problème car j'ai exporté - importé le tien et cela fonctionne.
J'aimerais cependant bien comprendre ce qui se passe car j'ai la même chose dans mon fichier d'origine et là, refaire de nombreux userform serait une autre paire de manches.
Julie
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 -
Cela semble bien être mon Userform qui pose problème car j'ai exporté -
importé le tien et cela fonctionne.
J'aimerais cependant bien comprendre ce qui se passe car j'ai la même
chose dans mon fichier d'origine et là, refaire de nombreux userform
serait une autre paire de manches.
Julie
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 <jul...@discussions.microsoft.com> 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 <jul...@discussions.microsoft.com> 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 <jul...@discussions.microsoft.com> 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 <jul...@discussions.microsoft.com> 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 -
Cela semble bien être mon Userform qui pose problème car j'ai exporté - importé le tien et cela fonctionne.
J'aimerais cependant bien comprendre ce qui se passe car j'ai la même chose dans mon fichier d'origine et là, refaire de nombreux userform serait une autre paire de manches.
Julie
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 -