cs_Talere
Messages postés102Date d'inscriptionvendredi 29 mars 2002StatutMembreDernière intervention14 février 2013
-
13 nov. 2007 à 17:33
ctgr -
14 févr. 2013 à 13:50
Bonjour,
Voila, j'ai un soucis avec "SetFocus" dans Access car une erreur intervient lorsque j'essaie de donner le focus à un controle d'un sous formulaire ... j'ai essayé pas mal de chose, mais rien n'y fait, j'ai toujours l'erreur 2455 ("La référence d'une expression à la propriété Form/Report n'est pas valide.") :
Données de départ :
Formulaire : Gestion Contacts
Sous Formulaire : Detail_societe
Control ou je souhaite pointer le focus : ID
Essai 1 :
Me.Detail_Societe!ID.SetFocus
--> Ne marche pas car, à priori, il faut séparer les étapes
Essai 2 :
Me.Detail_Societe.setFocus (ça, c'est bon)
Me.Detail_Societe!ID.SetFocus (là, ca ne marche plus)
Essai 3 :
Dim ma_SubForm As SubForm
Set ma_SubForm = Me.Detail_Societe
ma_SubForm.SetFocus
ma_SubForm.Form!ID.SetFocus
--> Ne marche pas non plus
cs_Maroxye
Messages postés177Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention16 octobre 2012 13 nov. 2007 à 19:10
J'ai cherché longtemps aussi pour le trouver! Tu dois mettre le focus d'abord sur le sous-formulaire et ensuite sur le contrôle, puis entourer le nom du contrôle de [ ] :
cs_Talere
Messages postés102Date d'inscriptionvendredi 29 mars 2002StatutMembreDernière intervention14 février 2013 14 nov. 2007 à 09:08
Merci pour ta réponse ... elle m'a effectivement en partie résolu mon problème, du moins, elle m'a permis de trouver l'origine de ce qui doit-être un bug ... je m'explique :
Dans mon formulaire, sur la partie gauche, j'ai mis une arborescence style explorateur Windows ou figure la liste des société, chacune ayant plusieurs sites et chaque site ayant plusieurs contacts (sous-repertoire pour faire l'analogie avec l'explorateur Windows). Sur la droite de ce même formulaire, j'ai fait figurer le détail pour un élément selectionné dnas l'arborescence (j'ai pour cela des sous-formulaires inbriqués les uns dans les autres).
Voila ce qui se passe :
J'ai selectionné un site de la société X. Ce que tu m'as fourni comme syntaxe marche sans problème.
Par contre, quand je selectionne directement un site de la société Y depuis un site de la société X, cela me provoque l'erreur que j'ai cité. Pour que ça marche, il faut que je selectionne d'abors la société Y, puis que je selectionne le site voulu.
Je vais quelquies essais et je posterais la syntaxe à respecter dans ce cas (j'aurais la réponse dans la journée)
cs_Talere
Messages postés102Date d'inscriptionvendredi 29 mars 2002StatutMembreDernière intervention14 février 2013 14 nov. 2007 à 11:16
Pas évident de contourner ce problème .. d'autant plus que le fonctionnement pas à pas ne semble pas bien fonctionner (erreurs sur des lignes qui n'en pose pas lorsque les actions sont faites dans la foulée)
Toujours est-il que le problème semble venir du fait que mon sous formulaire perd le lien vers ses contrôles. En effet, certaines propriétés VBA de ce formulaire sont toujours accessibles (visible, LinkChildFields,LinkMasterFields ...) alors que d'autres ne le sont plus (Controls, IsVisible, LabelAlign ...). La solution à mon problème serait de trouver une fonction qui me permettent de remettre à jour ces liens (mieux, la solution serait de savoir pourquoi les liens ont été perdus)
Si vous avez des idées, je suis preneur ... j'ai tenté Me.Recalc, Me.Refresh et Me.Repaint mais rien ne marche !!!
cs_Maroxye
Messages postés177Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention16 octobre 2012 14 nov. 2007 à 18:30
Écoute,
Je ne comprend pas ce qui se passe avec ce formulaire! Je suis incapable de le voir lorsque je l'ouvre! Je peux cependant ouvrir les 2 autres sous-formulaires.
cs_Talere
Messages postés102Date d'inscriptionvendredi 29 mars 2002StatutMembreDernière intervention14 février 2013 15 nov. 2007 à 09:27
Est-ce que tu peux l'ouvrir en mode création ?
Sinon, la particularité du formulaire Gestion contact est qu'il utilise un controle ActiveX appelé TreeView de la bibliothèque "MSComctlLib" (fichier MSCOMCTL.OCX / Microsoft Windows Common Controls 6.0 ). Si tu n'as pas cette ligne référencé, il se peut que tu ai des problèmes (Dans VBA -> Références)
sur votre problème de perte de focus, avez-vous finalement trouvé la solution ?
ça m'interesse car je suis un peu dans le même cas avec un sous formulaire et un treeview dans un formulaire principal.
Je suis également sous Office 2010 (donc Access 2010).
J'ai trouvé une solution en utilisant Me.Parent ...pour accéder au focus du formulaire principal depuis un sous-formulaire. Exemples donnés sur http://loufab.developpez.com/tutoriels/access/appelformulaire/
Par contre, un autre problème se pose maintenant pour moi pour modifier un filtre d'un sous-état (différent du filtre de l'état) - Etat lancé à partir d'un formulaire qui permet de faire du filtrage sur certains champs ...la théorie ne rejoint pas toujours la pratique ! J'utilise Me.openargs pour passer l'info (strFiltStr2) à l'état mais ensuite cela coince !
Me.srp_Essai_Detail.Report.Filter = strFiltStr2
appelé dans Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer) de mon sous-état me renvoie une erreur d'exécution 2101 dans Access
Toute solution m’intéresse pour ce nouveau problème et pour la solution que tu avais trouvé à l'époque pour gérer le focus.