OVH Cloud OVH Cloud

SetFocus : erreur d'exécution 2110

6 réponses
Avatar
mission
Bonjour tout le monde.
Encore une fois au secours.
Dans un sous-formulaire en mode continu, j'ai un contrôle indépendant
DétailCommandeTravail et une liste déroulante lstCommandes, plus un bouton
de choix BtnCommande
A l'activation du-sous formulaire, BtnCommande et DétailCommandeTravail ont
leut propriété (je crois que c'est le terme) Visible à True alors que
lstCommandes l'a à False.
Sur click sur BtnCommande, DétailCommandeTravail .Visible = False,
lstCommandes.Visible = True et lstCommandes.SetFocus.
Jusque-là, tout va bien.
Où ça se complique, c'est lorsque je sélectionne une des options de
lstCommandes.
J'ai sur lstCommandes.AfterUpdate() divers traitements que je termine par
DétailCommandeTravail .Visible = True, DétailCommandeTravail .SetFocus et
lstCommandes.Visible = False.
Mais Access 2000 me fiche une baffe avec un message Microsoft Visual Basic /
Erreur d'exécution 2110 - Impossible d'activer le contrôle
DétailCommandeTravail et me propose le débogage.
Pourtant, ce contrôle s'affiche bien, et prend ses nouvelles valeurs.
Lorsque j'utilise la touche de tabulation, je l'atteinds sans problème.
Où est l'erreur ? Sachant que j'ai les mêmes ordres dans
lstCommandes_LostFocus() qui s'exécutent sans problème lorsque je quitte le
contrôle, mais me donnent la même insulte si j'y accède à partir de
lstCommandes.AfterUpdate() .

Merci d'avance pour vos suggestions.
PG

6 réponses

Avatar
ze Titi
Hello mission !

Et avec un DoEvents avant le SetFocus ?

En ce jour mémorable du mardi 13/02/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Bonjour tout le monde.
Encore une fois au secours.
Dans un sous-formulaire en mode continu, j'ai un contrôle indépendant
DétailCommandeTravail et une liste déroulante lstCommandes, plus un bouton de
choix BtnCommande
A l'activation du-sous formulaire, BtnCommande et DétailCommandeTravail ont
leut propriété (je crois que c'est le terme) Visible à True alors que
lstCommandes l'a à False.
Sur click sur BtnCommande, DétailCommandeTravail .Visible = False,
lstCommandes.Visible = True et lstCommandes.SetFocus.
Jusque-là, tout va bien.
Où ça se complique, c'est lorsque je sélectionne une des options de
lstCommandes.
J'ai sur lstCommandes.AfterUpdate() divers traitements que je termine par
DétailCommandeTravail .Visible = True, DétailCommandeTravail .SetFocus et
lstCommandes.Visible = False.
Mais Access 2000 me fiche une baffe avec un message Microsoft Visual Basic /
Erreur d'exécution 2110 - Impossible d'activer le contrôle
DétailCommandeTravail et me propose le débogage.
Pourtant, ce contrôle s'affiche bien, et prend ses nouvelles valeurs. Lorsque
j'utilise la touche de tabulation, je l'atteinds sans problème.
Où est l'erreur ? Sachant que j'ai les mêmes ordres dans
lstCommandes_LostFocus() qui s'exécutent sans problème lorsque je quitte le
contrôle, mais me donnent la même insulte si j'y accède à partir de
lstCommandes.AfterUpdate() .

Merci d'avance pour vos suggestions.
PG


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
mission
Dans son message ,
l'honorable ze Titi écrivait
Hello mission !

Et avec un DoEvents avant le SetFocus ?

Ben non, aucun changement. Maintenant, l'ai-je bien formulé ?

Voici le code, si ça peut aider :
Private Sub lstCommandes_AfterUpdate()
If IsNull(Me.NumCommande) Then
Me.NumCommande = Me.lstCommandes
Else
Me.NumCommande = Me.lstCommandes
Me.NumCommandeTravail.Requery
DoEvents
Me.DétailCommandeTravail.Visible = True
Me.DétailCommandeTravail.Requery
Me.DétailCommandeTravail.SetFocus
Me.lstCommandes.Visible = False
End If
End Sub

Avatar
ze Titi
Private Sub lstCommandes_AfterUpdate()
If IsNull(Me.NumCommande) Then
Me.NumCommande = Me.lstCommandes
Else
Me.NumCommande = Me.lstCommandes
Me.NumCommandeTravail.Requery
Me.DétailCommandeTravail.Visible = True
Me.DétailCommandeTravail.Requery
DoEvents
Me.DétailCommandeTravail.SetFocus
Me.lstCommandes.Visible = False
End If
End Sub

Peut-être ? Mais je suis dubitatif...

Dans ton message du mardi
Dans son message ,
l'honorable ze Titi écrivait
Hello mission !

Et avec un DoEvents avant le SetFocus ?

Ben non, aucun changement. Maintenant, l'ai-je bien formulé ?

Voici le code, si ça peut aider :
Private Sub lstCommandes_AfterUpdate()
If IsNull(Me.NumCommande) Then
Me.NumCommande = Me.lstCommandes
Else
Me.NumCommande = Me.lstCommandes
Me.NumCommandeTravail.Requery
DoEvents
Me.DétailCommandeTravail.Visible = True
Me.DétailCommandeTravail.Requery
Me.DétailCommandeTravail.SetFocus
Me.lstCommandes.Visible = False
End If
End Sub


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info


Avatar
mission
Non, c'était mon premier test.
Si je clique sur "fermer" au lieu de "déboguer", les résultats sont
corrects.
Je pense peut-être une gestion d'erreur toute bête, mais laquelle et où ?
Aurais-je encore droit à un coup de pouce ?
Merci et bon appétit.
Je verrai tout ça ce soir.
@+

Dans son message ,
l'honorable ze Titi écrivait
Private Sub lstCommandes_AfterUpdate()
If IsNull(Me.NumCommande) Then
Me.NumCommande = Me.lstCommandes
Else
Me.NumCommande = Me.lstCommandes
Me.NumCommandeTravail.Requery
Me.DétailCommandeTravail.Visible = True
Me.DétailCommandeTravail.Requery
DoEvents
Me.DétailCommandeTravail.SetFocus
Me.lstCommandes.Visible = False
End If
End Sub

Peut-être ? Mais je suis dubitatif...


Avatar
ze Titi
Un gestionnaire d'erreur peut te permettre d'outrepasser le problème
mais ne le résoudra pas...

Private Sub lstCommandes_AfterUpdate()
On Error Goto ErrorHandler
If IsNull(Me.NumCommande) Then
Me.NumCommande = Me.lstCommandes
Else
Me.NumCommande = Me.lstCommandes
Me.NumCommandeTravail.Requery
Me.DétailCommandeTravail.Visible = True
Me.DétailCommandeTravail.Requery
Me.DétailCommandeTravail.SetFocus
Me.lstCommandes.Visible = False
End If
Exit Sub

ErrorHandler:
If Err.Number!10 Then
Err.Clear
Resume Next
End If
End Sub


En ce jour mémorable du mardi 13/02/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Non, c'était mon premier test.
Si je clique sur "fermer" au lieu de "déboguer", les résultats sont corrects.
Je pense peut-être une gestion d'erreur toute bête, mais laquelle et où ?
Aurais-je encore droit à un coup de pouce ?
Merci et bon appétit.
Je verrai tout ça ce soir.
@+

Dans son message ,
l'honorable ze Titi écrivait
Private Sub lstCommandes_AfterUpdate()
If IsNull(Me.NumCommande) Then
Me.NumCommande = Me.lstCommandes
Else
Me.NumCommande = Me.lstCommandes
Me.NumCommandeTravail.Requery
Me.DétailCommandeTravail.Visible = True
Me.DétailCommandeTravail.Requery
DoEvents
Me.DétailCommandeTravail.SetFocus
Me.lstCommandes.Visible = False
End If
End Sub

Peut-être ? Mais je suis dubitatif...



--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info


Avatar
mission
Cher ami (puis-je utiliser cette expression ?)
Je suis d'accord avec toi, ton code qui fonctionne parfaitement ne corrigera
pas mon problème.
Mais je ne vais pas passer la nuit dessus :-)
J'ai bien d'autres difficultés sur mon gadget pour me faire des cheveux
blancs.
C'est dur, mais grâce à ce forum, ses archives et quelques sites
francophones bien fournis, j'avance, j'avance.
Bonne soirée.
Merci encore.
PG

Dans son message ,
l'honorable ze Titi écrivait
Un gestionnaire d'erreur peut te permettre d'outrepasser le problème
mais ne le résoudra pas...

Private Sub lstCommandes_AfterUpdate()
On Error Goto ErrorHandler
If IsNull(Me.NumCommande) Then
Me.NumCommande = Me.lstCommandes
Else
Me.NumCommande = Me.lstCommandes
Me.NumCommandeTravail.Requery
Me.DétailCommandeTravail.Visible = True
Me.DétailCommandeTravail.Requery
Me.DétailCommandeTravail.SetFocus
Me.lstCommandes.Visible = False
End If
Exit Sub

ErrorHandler:
If Err.Number!10 Then
Err.Clear
Resume Next
End If
End Sub


En ce jour mémorable du mardi 13/02/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Non, c'était mon premier test.
Si je clique sur "fermer" au lieu de "déboguer", les résultats sont
corrects. Je pense peut-être une gestion d'erreur toute bête, mais
laquelle et où ? Aurais-je encore droit à un coup de pouce ?
Merci et bon appétit.
Je verrai tout ça ce soir.
@+

Dans son message ,
l'honorable ze Titi écrivait
Private Sub lstCommandes_AfterUpdate()
If IsNull(Me.NumCommande) Then
Me.NumCommande = Me.lstCommandes
Else
Me.NumCommande = Me.lstCommandes
Me.NumCommandeTravail.Requery
Me.DétailCommandeTravail.Visible = True
Me.DétailCommandeTravail.Requery
DoEvents
Me.DétailCommandeTravail.SetFocus
Me.lstCommandes.Visible = False
End If
End Sub

Peut-être ? Mais je suis dubitatif...