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

VBA Access Discussion :

Bouton navigation formulaire/sous-formulaire [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 12
    Par défaut Bouton navigation formulaire/sous-formulaire
    Bonjour à tous
    J'ai un petit soucis sur mes boutons de navigation sur un formulaire. Il comporte 3 sous formulaire imbriqué les uns dans les autres pour naviguer entre les différents niveau de l’arborescence.

    Je suis un peu debutant je ne sais pas s'il y a mieux pour faire ça, mais la navigation fonctionne.
    Je veux faire disparaitre les boutons suivant et precedent quand j'ai aucun enregistrement après.

    j'ai mis le code suivant dans chacuns des trois formulaires avec les boutons adéquats

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Form_Current()
    Me.btnSuivantN3.Visible = (Me.CurrentRecord < Me.Recordset.RecordCount)
    Me.btnPreN3.Visible = (Me.CurrentRecord > 1)
    End Sub
    Pour les boutons précedent, ça fonctionne parfaitement sur les 3 niveaux.
    Cependant sur le bouton suivant, ça le fait disparaître en permanence pour les niveau 2 et 3 alors que pour le 1 ça marche parfaitement.
    J'ai mis le code

    Pour essayer de debugger les boutons j'ai mis un msgbox qui me donne la valeur Me.CurrentRecord et Me.Recordset.RecordCount il me donne 1 pour les deux quand je viens de passer à un autre enregistrement sur le niveau supérieur, et quand j'attends un peu, il me donne le bon nombre de recordcount, le comptage n'est donc pas instantané.
    Peut etre que je mets le code pas au bon endroit, ou peut etre qu'il y a plus simple pour se déplacer dans l'arborescene et le faire avec 1 formulaire au lieux de 3
    Merci à vous, je joins deux screen.
    Images attachées Images attachées   

  2. #2
    Membre chevronné
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2015
    Messages : 217
    Par défaut
    Salut,

    Tes formulaires sont imbriqués, avec des champs père / fils ?

    Car ce qu'il se passe, c'est que ton premier formulaire ne dépend d'aucun autre formulaire donc tu vas pouvoir aller d'enregistrement en enregistrement.

    En revanche, les deux autres dépendent de ton premier formulaire, c'est à dire que tu vas pouvoir aller d'enregistrement en enregistrement peu importe l'enregistrement en cours de ton premier formulaire mais vu que certains enregistrements auront comme source une autre valeur que celle de ton premier formulaire, l'enregistrement de ton premier formulaire va changer pour correspondre à celle des deux autres formulaires.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 12
    Par défaut
    Merci de ta réponse.
    Mes formulaires sont bien imbriqués les un dans les autres avec des champs père/fils
    Le déplacement entre les formulaires fonctionnent très bien, si jamais je vais sur l'enregistrement suivant dans un sous formulaire, il ne peut pas faire changer le formulaire plus haut contrairement à ce que tu dis. Il est bien limité aux enregistrement délimité par les formulaires en amont, et je n'ai mis aucune ligne sur vba pour ça, juste champs père/fils
    Je n'arrive pas à dire à mon formulaire de supprimer mon bouton suivant quand j'ai plus de formulaire derrière. le compteur Me.Recordset.RecordCount ne fonctionne pas comme je le veux dans mes sous formulaires.

    Je pense que mon système de navigation avec mes formulaires imbriqué les uns dans les autres n'est pas optimal. Je pense que je peux le faire en un seul formulaire

  4. #4
    Membre chevronné
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2015
    Messages : 217
    Par défaut
    D'accord.

    As tu mis du VBA dans tes boutons btnSuivantN3 et btnPreN3 ?

  5. #5
    Membre chevronné
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2015
    Messages : 217
    Par défaut
    Une solution, si tu peux essayer, c'est de remplacer ton code actuel par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Current()
    Me.btnSuivantN3.visible = (Me.CurrentRecord < Me.RecordsetClone.RecordCount)
    Me.btnPreN3.visible = (Me.CurrentRecord > 1)
    End Sub
    Et tes boutons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub btnPreN3_Click()
    Me.Recordset.MovePrevious
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub btnSuivantN3_Click()
    Me.Recordset.MoveNext
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 12
    Par défaut
    Encore merci de ta réponse
    Le seul code vba dans tout mon formulaire c'est la visiblité de mes boutons. Et pour l'instant j'ai uniquement mis.
    Les boutons suivant et précédent sont des macros préprogrammés. Si je les mets en code VBA, ça ne résout pas mon problème malheureusement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Current()
    Me.btnPreN3.Visible = (Me.CurrentRecord > 1)
    End Sub
    J'avais pensé au recordclone, mais ça me renvoie le meme probleme.

    J'ai rajouté un bouton avec ça dessus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub btnTest_Click()
    MsgBox Me.Recordset.RecordCount
    End Sub
    C'est vraiment un problème dans le fonctionnement du comptage. Il ne s'effectue pas et me renvoie la valeur 1 quand je charge le formulaire. Il faut que je demande l'enregistrement d'après pour que le comptage se fasse ou que j'attende une dizaine de seconde.
    C'est vraiment étrange, juste en attendant sans rien faire la valeur Me.recordset.recordcount passe de 1 à la bonne valeur, ce n'est pas instantané

    J'ai même essayé ça dans le formulaire père:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Form_Current()
    Me.N3_Modif.Form.btnSuivantN3.Visible = (Me.N3_Modif.Form.CurrentRecord < Me.N3_Modif.Form.Recordset.RecordCount)
    End sub
    Toujours le meme probleme.

    Pour vérifier si c'était propre au compteur j'ai mis ça dans le formulaire père (les formulaires font N1 -> N3 -> N4)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub btnSuivantN1_Click()
    Me.N3_Modif.Form.Recordset.MoveLast
    End Sub
    Et il ne va pas au dernier enregistrement de N3, il ne fait rien.

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

Discussions similaires

  1. [AC-2010] Formulaire - Sous formulaire - Sous sous formulaire
    Par meli74 dans le forum IHM
    Réponses: 1
    Dernier message: 21/04/2011, 19h35
  2. Réponses: 4
    Dernier message: 11/04/2007, 18h46
  3. Navigation entre sous formulaires
    Par Sami Xite dans le forum Access
    Réponses: 9
    Dernier message: 26/01/2007, 14h27
  4. formulaire/sous formulaire/sous formulaire
    Par aimejielle dans le forum Access
    Réponses: 1
    Dernier message: 24/07/2006, 22h48
  5. Réponses: 1
    Dernier message: 10/07/2006, 09h15

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