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

IHM Discussion :

Déplacement vers un contrôle donné sur un formulaire


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut Déplacement vers un contrôle donné sur un formulaire
    Bonjour, comme j'ai besoin d'aide sur plein de trucs, et que d'autres soucis vont arriver, je crée ce sujet unique pour éviter d'en créer une quinzaine

    Mon premier souci serait de pouvoir en remplissant une zone de texte par un numéro, puis en cliquant sur le bouton OK, aller sur la page du formulaire correspondant.

    J'ai créé un bouton avec l'assistant pour ouvrir mon formulaire, mais je ne sais pas quoi modifier ou ajouter dans la macro pour choisir la page en fonction de la zone de texte précédemment citée.

    J'ai bien essayé de modifier ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm stDocName, , , "N° Action = 'texte17'"
    mais je suppose que Access cherche un "N° Action" qui s'apelle texte17 au lieu de chercher le contenu de la zone. Je cherche donc l'équivalent du texte17.caption de excel.

    Merci.

  2. #2
    jfc
    Invité(e)
    Par défaut Atteindre contrôle
    Le plus simple c'est que tu atteignes un contrôle nommé sans faire référence ni à son contenu, si à sa légende (caption).

    p.ex docmd.gotocontrol("Texte17")

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    Désolé pour la balise oubliée.

    Oui mais une fois ce contenu atteint, comment l'assigner dans ma formule.

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DoCmd.OpenForm stDocName, , , "N° Action = 'docmd.gotocontrol("Texte17")'"
    mais ça marche pas

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Premièrement ton titre est une mauvaise idée, il oblige les gens à lire ton post même s'ils ne connaissent pas le sujet de ton pb, pense à économiser le temps des bénévoles qui te réponde plutôt que le tien :-).

    Secondo, tu veux que le control Text17 soit actif lorsque tu ouvre le formulaire c'est ça ?

    Donc, il faut faire 2 chose :

    dans la commande DoCmd.OpenForm le dernier paramètre permet de passer des param au form appelé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    docmd.OpenForm nomDuForm,,,,,,"Text17"
    dans l'événement OnOpen du form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if not isnull(me.openargs)
      me.controls(me.openargs).setfocus
    end if
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    Merci, ça aurait été parfait si je n'avais pas déjà un truc dans le OnOpen
    J'avais fait un truc avec le générateur de macro pour qu'il s'ouvre automatiquement sur la dernière page. Il faudrait donc refaire l'équivalent pour le Else du If que tu m'as indiqué. Aie mais non puisque si l'utilisateur lambda veut enregistrer une nouvelle fiche et cliquer sur le bouton approprié, il ne pensera pas à effacer le contenu de texte17

    Il me faudrait donc une autre macro pour quand on cliquerait sur le bouton "enregistrer une nouvelle fiche", qui permette d'aller directement sur la dernière page, sans utiliser le OnOpen... A moins de pouvoir faire autrement...
    En effaçant sur clic le texte17 peut-être...

    Le souci c'est que je ne connais aucune de ces macros, alors je procède par tatonnements en testant mille et un trucs.

    Merci de votre aide encore une fois.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par marot_r
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    docmd.OpenForm nomDuForm,,,,,,"Text17"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if not isnull(me.openargs)
      me.controls(me.openargs).setfocus
    end if
    Ca ne fonctionne pas, pas d'erreur mais j'ouvre toujours sur la page 1, même en entrant un nombre valide dans texte17.
    J'ai l'impression que cette macro ne va toujours pas chercher le contenu de ma zone de texte.

  7. #7
    jfc
    Invité(e)
    Par défaut
    Attention, tu confonds beaucoup de chose. tu devrais dans l'aide en ligne consulter à quoi correspond chaque événement.

    L'événement on open ne se produit que lors de l'ouverture d'un formulaire mais pas dans le cas d'ajout d'un nouvel enregistrement.

    Dans ce cas, tu dois utiliser l'événement Current qui se produit chaque fois que l'on change d'enregistrement et tester la propriété me.newrecord.si elle vaut true, c'est qu'il s'agit d'un nouvel enregistrement.

    Autre chose :

    tu peux aussi gérer la navigation par page comme suit :

    Tu insères des sauts de pages dans ton formulaire aux endroits désirés
    et tu utilises la fonction Me.GotoPage

    Si comme j'ai compris tu désires que l'utilisateur tape 2 pour atteindre la page 2, 3 pour la page 3, etc. je procéderai comme suit :

    - je créerai un combobox avec les entrées 1 à x selon le nombre de pages que tu auras décidé. Le combobox est à placer dans l'entête ou le pied de formulaire.
    - sur l'événement clic du combobox, je mettrai le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.gotopage (me.combobox1)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    Je réexplique mon besoin :

    J'ai besoin depuis la page d'accueil que j'ai crée d'avoir un bouton m'emmenant directement sur un nouvel enregistrement (Il me semble qu'en numéro auto cela correspond donc à la dernière page).

    Ensuite, je voudrais créer un certain nombre de bouton associés à une zone de texte me permettant d'arriver sur une fiche en fonction d'un critère : une sorte de requête sur formulaire en somme.
    Par exemple, ouvrir la page numéro x, ou ouvrir les pages de tel opérateur.
    (A chaque numéro de page correspond un opérateur mais un opérateur peut avoir plusieurs pages.)
    Je pense que dois donc utiliser la fonction DoCmd.openForm mais je n'arrive pas à mettre comme critère de recherche le contenu d'une zone de texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Nomdemonformulaire", , ,"N°Action = 'texte13'"

    Ce qui correspondrait sur Excel à un range("A1").value par exemple pour le contenu de la cellule A1.

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Si tu veux te retrouver sur le mode ajout d'enregistrement, il faut le spécifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormAdd
    Pour les autres fonctions, pourrais tu détailler un peu plus,
    une sorte de
    ne nous aide pas vraiement.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    Je me suis rendu compte que mon OnOpen n'allait pas en fait. J'ai donc opté pour ton code Oli qui lui est impeccable, merci !

    Pour mieux expliquer "une sorte de" ^^ :
    Je voudrais par exemple sur ma page d'accueil avoir une zone de texte et un bouton --> lors du clic sur le bouton, Access va chercher le texte indiqué dans la zone puis s'en sert comme critère d'ouverture du formulaire.
    Ex.

    N° de page : [zone de texte] [bouton]
    la personne marque dans la zone
    N° de page : [13] [bouton]

    Access fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Nomdemonformulaire", , ,"N° = 'texte13'"
    N° est la clé primaire de la table d'où vient le formulaire. C'est un numéro auto.
    Le souci dans ma formule, c'est que Access cherche à ouvrir un N° de page qui s'apelle "texte13" et pas "13" ^^.
    Je cherche donc comment indiquer la valeur contenue dans texte13.

  11. #11
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DoCmd.OpenForm "Orders", , , "[OrderID]=" & Me![OrderID]
    J'ai pris ce que j'avais sous la main.

    Me![OrderID] est la référence à mon contrôle sur le formulaire de départ.

    [OrderId], le champ du formulaire d'arrivée.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    ça fonctionne mais ça ne filtre pas l'ajout d'une nouvelle page malheureusement.
    c'est à dire que la fiche 3 apparait et si je vais à droite j'ai la nouvelle fiche.

  13. #13
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    C'est alors que tu peux faire un setfocus sur le contrôle de ton choix.

    Une fois que tu es sur le bon enregistrement, tu va alors au bon contrôle.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    Pourquoi un setfocus ? :/
    En fait j'arrive sur le bon enregistrement mais je voudrais que seul celui-ci soit disponible, pas le nouveau.

  15. #15
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Alors, il a des descriptions qui ne sont pas bonnes.

    Qu'entends-tu par page ?

    Refais le tour de ce que tu as qui fonctionne et ce qui te manques.

    ça fonctionne mais ça ne filtre pas l'ajout d'une nouvelle page malheureusement.
    c'est à dire que la fiche 3 apparait et si je vais à droite j'ai la nouvelle fiche.
    Est-ce que page signifie nouvel enregistrement ?


    Pourquoi un setfocus ? :/
    En fait j'arrive sur le bon enregistrement mais je voudrais que seul celui-ci soit disponible, pas le nouveau.
    Le setfocus est utilisé pour aller à un endroit donné sur ton formulaire, par exemple un bouton, une zone de texte, une liste déroulante, ....
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Heureux-oli
    Est-ce que page signifie nouvel enregistrement ?
    c'est ce que je voulais dire en effet.

  17. #17
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.AllowAdditions = False
    dans ton code et tu ne pourras pas ajouter d'enregistrement.
    Tu n 'auras que l'enregistrement filtré et rien d'autre.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        DoCmd.OpenForm "Revival", , , "N° =" & Me![texte03]
        Me.AllowAdditions = False
    J'ai aussi essayé en le mettant avant et ça ne fonctionne pas.
    Ca m'ouvre toujours l'enregistrement désiré mais le nouveau est toujours disponible. Dommage, par contre si j'arrive à faire fonctionner cette fonction, ça sera bien pratique pour plein de trucs.

  19. #19
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![MonForms].allowAdditions = false
    Essaies comme ça;
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 206
    Points : 62
    Points
    62
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        DoCmd.OpenForm "Revival", , , "N° =" & Me![texte03]
        Forms![Revival].AllowAdditions = False
    J'ai essayé comme ça et ça ne marche pas. J'ai regardé dans l'aide et malheureusement ils ne donnent pas d'exemple adaptable...
    Par contre j'ai pu voir tous les autres droits qu'on peut mettre ou retirer. Pratique ^^.

    Par contre je comprends pas pourquoi ça ne fonctionne pas. Et ce coup-ci je passe "on error" alors que tout à l'heure ce n'était pas le cas.

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/06/2010, 19h09
  2. Verrouiller les données sur un formulaire
    Par riffraff2 dans le forum IHM
    Réponses: 5
    Dernier message: 01/09/2007, 11h21
  3. recuperer des données sur un formulaire?
    Par youpi1 dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/05/2007, 17h43
  4. Réponses: 5
    Dernier message: 22/12/2006, 22h16
  5. ordre d'affichage des données sur un formulaire
    Par puppusse79 dans le forum Access
    Réponses: 5
    Dernier message: 20/09/2006, 15h07

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