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 :

Comment afficher un sous-formulaire à la page contenant la dernière ligne


Sujet :

IHM

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Comment afficher un sous-formulaire à la page contenant la dernière ligne
    Bonjour,
    Sous Access 2002, je suis dans le cas d'un formulaire ayant un sous-formulaire affiché en mode feuille de donnée (les deux liés classiquement par leur champs père/fils) Le sous-formulaire contient 15 lignes dans la fenêtre, il arrive fréquemment qu'il y ait 25 ou 30 lignes à afficher, ce qui necessite une pagination ou l'utilisation de l'ascenceur pour avoir la dernière ligne à l'écran et bien sûr la nouvelle ligne de création.

    J'ai essayé SelTop (placé dans un module niveau sous-formulaire). Cela affiche bien la dernière page du sous-formulaire avec la nouvelle ligne en bas de fenêtre en position 15 de la fenêtre, tout va bien si l'on ne fait que des ajouts de nouveaux enregistrements, par contre si l'on veut modifier une donnée d'un enregistrement du milieu de la fenêtre on ne peut la modifier directement, il faut faire en deux fois: 1- mettre le focus dessus par un premier clic et ensuite 2- faire la saisie.
    Est-il possible d'améliorer ou de faire avec d'autres fonctions ? afin de pouvoir:
    - avoir l'affichage de la dernière ligne en bas de page ou ailleurs dans la page
    - pouvoir intervenir directement sur n'importe quel champ de la page comme on peut le faire quand on déplace les lignes soi même via l'ascenceur de droite

    Merci d'avance pour toutes vos suggestions.


    Ci-dessous code implémenté au niveau sous-formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Current()
      Dim lng As Long
    'obtient le nombre d'enregistrements
       lng = Me.RecordsetClone.RecordCount
     
    'se positionne sur le n + 1 donc sur un nouvel enreg en bas de page
       If lng > 15 Then
           Me.SelTop = lng + 1
       End If
     End Sub

  2. #2
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 222
    Points
    222
    Par défaut
    Salut

    mais le focus sur le formulaire et ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.GoToRecord , "", acLast
    sur la procédure load de ton formulaire principale

    Bonnes Fêtes

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut J'ai essayé mais c'est incomplet
    Merci pour ta proposition. Voici les mises en oeuvre avec leurs résultats.

    Rappel: Il y a le formulaire principal genre n° commande et le sous-formulaire (mode feuille de données) genre lignes de commandes


    Ci-dessous les différents tests placés au niveau du sous-formulaire


    test(1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Load()
        DoCmd.GoToRecord , "", acLast
    End Sub
    C'est bon lors du premier appel du formulaire principal qui ouvre pour la première fois le sous-formulaire: la page du sous formulaire s'affiche bien sur la dernière ligne, et je peux modifier les champs de n'importe quelle ligne du sous formulaire, mais lors du changement de n° commande dans le formulaire principal, l'affichage du sous-formulaire (lié par pere/fils) est classique càd avec l'affichage du début de liste et le focus sur la première ligne

    test(2):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Activate()
       DoCmd.GoToRecord , "", acLast
    End Sub
    Rien de plus, seul le premier affichage est bien idem (1)



    et aussi ceci test(3):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Current()
       DoCmd.GoToRecord , "", acLast
     End Sub
    Là c'est bien pour chaque changement de n° de commande, on est bien sur la dernière ligne de commande dans le SF, mais il est IMPOSSIBLE d'aller sur une ligne quelconque de la page du SF. Le focus est et reste attaché à la dernière ligne!

    Il faudrait qu'au changement de commande dans le principal ce soit comme avec "Load" lors du premier appel, je dois rater quelque chose mais quoi?
    Merci de votre aide.

  4. #4
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 222
    Points
    222
    Par défaut
    Salut,
    Setfocus donne le focus à un objet
    pour le cas trois dans le formulaire principale(A) B étant le sous-formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Current()
    B.form.setfocus
    DoCmd.GoToRecord , "", acLast
    End Sub
    Retire les autres cas

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Essai infructueux
    Salut,
    J'ai pris en compte ta proposition càd mettre ceci au niveau du formulaire principal A (B étant le sous-formulaire utilisé dans A)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Current()
    B.form.setfocus
    DoCmd.GoToRecord , "", acLast
    End Sub
    A l'exécution, je reçois dès l'appel de A le message VB suivant:

    Erreur d'exécution '2449'
    Methode non valide dans une expression


    Le debug indique en erreur jaune la ligne: B.Form.SetFocus

    Bien sûr, il n'y a pas de positionnement sur la dernière ligne. Le nom de formulaire B est correct, la syntaxe aussi (dixit aide VBA), où est le problème ?

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.MonSousFormulaire.SetFocus
    DoCmd.RunCommand acCmdRecordsGoToLast
    Cordialement.

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Tout est OK
    Merci Francishop. C'est parfait et tout à fait ce que je voulais. Par ta réponse j'ai compris que le "pilotage" du sous-formulaire était au niveau du formulaire principal, cela m'ouvre d'autres horizons.
    Merci encore.

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

Discussions similaires

  1. [AC-2007] comment afficher 3 sous formulaire par une zone de liste
    Par mbo2 dans le forum IHM
    Réponses: 3
    Dernier message: 27/04/2013, 19h43
  2. [ACESS 2003]Comment masquer un sous formulaire?
    Par steeves5 dans le forum Access
    Réponses: 2
    Dernier message: 04/05/2006, 08h59
  3. Comment tester un sous-formulaire ?
    Par Tchupacabra dans le forum Access
    Réponses: 11
    Dernier message: 27/12/2005, 11h48
  4. Comment afficher une vidéo dans une page HTML ???
    Par safadev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 05/10/2005, 19h50
  5. Réponses: 10
    Dernier message: 22/10/2004, 14h35

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