IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

SetFocus pour un contrôle se trouvant dans un sous-formulaire de navigation à onglets [AC-2019]


Sujet :

Access

  1. #1
    Futur Membre du Club Avatar de Maglau
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut SetFocus pour un contrôle se trouvant dans un sous-formulaire de navigation à onglets
    Bonjour à tous

    Je me tourne vers vous, car je n'arrive pas à finaliser un problème de focus sur un contrôle dans un sous-formulaire appelé par formulaire à navigation à onglet. Donc j'aimerai avoir votre aide, si c'est possible.

    Dans un formulaire, je mets le focus sur un contrôle (zone de texte RechercheClient) de la façon suivante ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.RechercheClient.SetFocus
    Quand je cible (j’intègre) ce formulaire dans un formulaire avec une navigation à onglets (__F_Menu_Principal), je peux mettre le focus sur ce formulaire de la façon suivante ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![__F_Menu_Principal].ContrôleNavigation0.Tabs(1).SetFocus
    Mais quand j’essaie d’avoir le focus sur mon contrôle dans cette configuration, de la façon suivante ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![__F_Menu_Principal]![BN_Clients].Form![RechercheClient].SetFocus
    ... j’ai une Erreur d’exécution 438 : Propriété ou méthode non gérée par cet objet (BN_Clients étant le nom du 2ème bouton de navigation de mon menu).

    Pourriez-vous m’indiquer où j’ai pêché ?

    Merci d’avance.

  2. #2
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Non! BN_Client doit plutôt déclencher l'action et non être inclus dans le chemin d'accès à la zone de texte.
    On doit plutôt avoir un truc de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub BN_Clients_Click()
    Me.[SousFormulaireNavigation].Form![RechercheClient].SetFocus
    End Sub
    Où SousFormulaireNavigation représente le nom de ton sous-formulaire de navigation. Pour voir son nom, tu ouvres le formulaire de navigation en mode création et tu clique sur le bord du sous-formulaire de navigation pour ouvrir la feuille de propriété.
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  3. #3
    Futur Membre du Club Avatar de Maglau
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Merci bertiny

    Mais j'ai testé ta proposition et j'ai le message Erreur d'exécution '2465' Microsoft Access ne trouve pas le champ << |1 >> auquel il est fait référence dans votre expression..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.[F_Coordonnees_Clients].Form![RechercheClient].SetFocus
    A la vue de l'instruction, je pense qu'elle est pensée pour passer le focus du formulaire de navigation au sous formulaire. Dans mon cas, au départ le focus est dans le sous-formulaire. J'explique ... une recherche est faite après une saisie dans la zone de texte RechercheClient. Et si la recherche est infructueuse, une MsgBox est ouverte et le focus doit retourner sur RechercheClient pour que l'utilisateur modifit sa saisie.

    Cela marchait très bien avant d'être inséré en sous-formulaire dans le formulaire de navigation

    Il doit y avoir une solution ? Mais c'est un peu compliqué pour moi.

  4. #4
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Le message d'erreur est pourtant bien clair.
    Peux-tu faire les captures d'écran de ton formulaire et nous montrer?
    Poster aussi le code ?
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  5. #5
    Futur Membre du Club Avatar de Maglau
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Bonjour Bertiny

    Merci pour ton aide.

    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Private Sub RechercheClient_KeyDown(KeyCode As Integer, Shift As Integer)
        If KeyCode = 13 Then        ' Si touche Entrée dans la zone de texte
            DoCmd.ShowAllRecords
            'DoCmd.Requery ""
            If DCount("*", "R_Coordonnees_Clients") = 0 Then
                m_Temp = Me.RechercheClient.Value       ' Sauvegarde dans une variable Public la saisie en échèc
                
                MsgBox "''" & Me.RechercheClient.Value & "'' n'a pas été trouvé. Il est soit" & vbCrLf & vbCrLf & _
                "- Inexistant" & vbCrLf & _
                "- L'encours est <= 0" & vbCrLf & _
                "- Le client n'est plus Actif", vbOKOnly + vbExclamation, "Echec recheche client"
                
                'Re-initialise la requête avec une saisie à vide
                Me.RechercheClient.Value = ""
                DoCmd.Requery ""
                'DoCmd.ShowAllRecords
                
                Me.RechercheClient.Value = m_Temp   'Remets la saisie en échèc pour correction dans la zone de texte
                
                ' Focus sur la zone de saisie à corriger
                'Me.RechercheClient.SetFocus        'Marche hors du formulaire de navigation
                'Forms![__F_Menu_Principal].ContrôleNavigation0.Tabs(1).SetFocus
                'Forms![__F_Menu_Principal]![BN_Clients].Form![RechercheClient].SetFocus
                Me.[F_Coordonnees_Clients].Form![RechercheClient].SetFocus
                
            End If
            Me.NumEnreg = 1
        End If
    End Sub
    Et la copie d'écranNom : Erreur_Focus.jpg
Affichages : 173
Taille : 268,5 Ko
    Bonne journée.

  6. #6
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    refait juste un Me.RechercheClient.SetFocus. Il devrait marcher aussi à l'intérieur du formulaire de navigation. Car c'est la même zone de texte qu'on contrôle.
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  7. #7
    Futur Membre du Club Avatar de Maglau
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Malheureusement, ça ne marche pas

    Le focus semble être passé sur le bouton "Précédent" à la sortie de la Procédure.

    Nom : Focus_Bouton.jpg
Affichages : 186
Taille : 47,0 Ko

    Je ne vois pas ce qui pousserait vers le contrôle suivant. Pour information, dans l'ordre de tabulation RechercheClient = 0 et le bouton 'Précédent" = 1.

    J'ai inséré une fonction de test après le SetFocus, et elle dit bien que les focus est passé sur RechercheClient

    Nom : Test_Focus.jpg
Affichages : 182
Taille : 70,1 Ko

    Donc, que pourrait-il se passer entre le SetFocus, la sortie de la Procédure et le retour à l'écran ?

    Encore merci pour l'aide

  8. #8
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Enlève ton code sur l'événement Sur touche appuyé et met un peux sur l'événement Après MAJ du champ
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  9. #9
    Futur Membre du Club Avatar de Maglau
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Super. Ça marche.

    J'en profite pour retirer le "If KeyCode = 13" qui ne sert plus à rien.

    Tu vas dire que je pinaille, mais le curseur se trouve devant le 1er caractère du texte saisi !
    Il faudrait que le curseur soit après le dernier caractère.
    J'ai essayé avec Me.RechercheClient.SelStart = x, en mettant toute les valeurs possibles pour x, mais le curseur reste devant le texte

    En tous cas grand grand merci pour ton aide.

  10. #10
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.RechercheClient.SelStart = Len(Me.RechercheClient)
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  11. #11
    Futur Membre du Club Avatar de Maglau
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    J'avais aussi essayé cela, mais le curseur reste en position 0

    Y a t'il un paramètre dans le contrôle ou le formulaire qui pourrait bloquer .SelStart ???

  12. #12
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Dans ce cas tu seras obligé d'utiliser un bouton pour valider la recherche. Tu prends donc tout le code et tu mes sur l'événement Sur Clic du bouton et je suis certain que çà marchera avec le code que j'ai donné.
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  13. #13
    Futur Membre du Club Avatar de Maglau
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Je te remercie pour ton aide.

    Et je clôture le sujet

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-365] Tester modification dans un sous formulaire de navigation
    Par Burngun dans le forum Access
    Réponses: 4
    Dernier message: 02/04/2021, 23h47
  2. Réponses: 6
    Dernier message: 21/01/2016, 15h11
  3. Réponses: 10
    Dernier message: 27/01/2015, 16h29
  4. Réponses: 1
    Dernier message: 09/08/2012, 18h04
  5. Réponses: 29
    Dernier message: 21/04/2009, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo