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 :

Sous-Formulaire nombre de lignes vides ?


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 148
    Points : 112
    Points
    112
    Par défaut Sous-Formulaire nombre de lignes vides ?
    Bonjour !

    En m'aidant de la :FAQ: j'ai vu un Tuto de ARO pour compter le nombre de ligne dans un sous formulaire. (http://access.developpez.com/faq/?page=data)


    Par contre quand mon sous formulaire est vide, comment tester la zone de texte qui compte le nombre de ligne ?

    J'ai déjà essayer avec des if isnull() ou autre mais ca ne fonctionne pas.

    L'erreur généré est "expression sans paramètre"
    (Normal vu qu'il n'a rien compté...)

    Quelqu'un à une idée ?
    ou il faut que j'intercepte l'erreur et que je code à partir de là ? (je trouve pas cette solution très propre, c'est pour ca que je vous demande d'abord... )

    Merci !

  2. #2
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut,
    peut-être utiliser Nz() pour référencer les source contrôle dans le code de Aro.
    exple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = nz([SF_contact].[Formulaire]![Nbcontact],0)
    et tester si la
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if nz([SF_contact].[Formulaire]![Nbcontact],0)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 148
    Points : 112
    Points
    112
    Par défaut
    Merci Faw !

    J'ai testé mais ca ne marche pas, j'ai regardé dans l'aide, et la fonction NZ() ne marche que quand la variable est null, or dans mon cas, la variable est ni null, ni égal à 0, elle est -rien-

    Avec le NZ quand j'arrive à ce moment, il me ressort une erreur "expression sans paramètre" ...

    Après dans l'exemple de Tofalu, est-il possible de forcer le compte et lui dire que s'il n'y a rien mettre 0 ?

    Si quelqu'un a une astuce ! merci ^^

  4. #4
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Bonjour,
    Bizarre chez moi ça fonctionne avec l'astuce de Aro posée "telle qu'elle..."
    Même pas besoin de Nz()... et testée avec zéro enregistrements dans le sous-form.
    Null dans vba veut dire "Aucune valeur exploitable", donc = Rien comme tu dis.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 148
    Points : 112
    Points
    112
    Par défaut
    Je pense bien faw, mais dans mon cas, pour bien expliquer les choses, j'ai plusieurs onglet avec a chaque fois un sous formulaire lié par un code identifiant de mon formulaire principale.

    Il arrive que dans un formulaire je n'ai aucune données, et comme j'ai bloqué l'option 'allowadditions', il m'affiche juste l'entete de colone.
    Et vu qu'il n'y a aucune ligne, j'ai l'impression qu'il ne prend meme pas la peine d'initialiser ma variable à null

    (pour info, ma variable dans mon sous formulaire est défini comme :
    Dans le pied du formulaire. je pense que vu que le détail est vide, donc pas null, il ne peut pas initialiser cette expression ?)

    J'ai essayé avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =iif([codeid]=true; compte([codeid]);0)
    Mais ca marche toujours pas...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 148
    Points : 112
    Points
    112
    Par défaut
    En faite dans la Solution de Aro, je pense que si je ne bloque pas avec mon "AllowAdditions = false" dans le sous formulaire il va quand meme affiché une ligne ou il n'y aura rien car c'est la ligne pour ajouter un nouvelle enregistrement.

    Mais à partir de là vu qu'il affiche au moins une ligne meme si elle est null, il peut initialiser la variable de compte à null.

    Tandis que dans mon cas, il n'affiche rien, donc il ne fait rien

    existe-il un moyen de tester cela ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 148
    Points : 112
    Points
    112
    Par défaut
    Je viens de voir sur le forum que pour un etat ou il n'y a rien, on peut tester ca dans l'évenement "NoData".
    Par contre il n'y pas pas cette évenement dans le sous formulaire...
    Existe-t-il quelque chose d'analogue ?

  8. #8
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    bjr,

    avec access 2003 ça marche avec un test avec IsError :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux(IsError([SF_contact].[Formulaire]![Nbcontact];0;[SF_contact].[Formulaire]![Nbcontact])

  9. #9
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut Arkham, je connais pas cette expression mais il ne manquerait
    pas une ")" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux(IsError([SF_contact].[Formulaire]![Nbcontact]);0;[SF_contact].[Formulaire]![Nbcontact])

  10. #10
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Citation Envoyé par Faw
    Salut Arkham, je connais pas cette expression mais il ne manquerait
    pas une ")" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux(IsError([SF_contact].[Formulaire]![Nbcontact]);0;[SF_contact].[Formulaire]![Nbcontact])
    je crois pas non, ou je vois pas clair ce matin, j'en ouvre 2, j'en referme 2

    IsError s'utilise comme IsNull, ou IsEmpty

    Dans mon test, [SF_contact].[Formulaire]![Nbcontact] affiche "#Erreur"
    IsError permet de gérer ce cas.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 148
    Points : 112
    Points
    112
    Par défaut
    Merci d'essayer de m'aider mais ca ne mache toujours pas ...


    donc dans mon code VBA j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    z = IIf(IsError(Form(TabTab(i)).Form.NbLgn), 0, Form(TabTab(i)).Form.NbLgn)
    Pour préciser, tabtab() est un tableau avec le nom de mes sousformulaires.
    Nblgn est une zone de texte dans chaque pied de page de chaque sousformulaire.
    J'ai essayé le iserror() aussi dans la zone de texte du sous formulaire aussi, ca marche pas



    En faite le iserror ne fonctionne pas, car je pense que la zone de texte ne génère pas d'erreur en soi, il génère une erreur que quand on veut utiliser ce qu'elle contient, et vu que y a -rien-, meme pas de valeur null, ca me génère l'erreur -Expression sans paramètre- ...

    Je pense qu'il va falloir intercepter l'erreur pour règlé le problème, car je ne vois pas d'autre solution ... (ou pour etre exact, mes connaissances Access+Vba ne me permettent pas de trouver autre chose )

  12. #12
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Ok, merci pour la précision.
    Mais je ne compte toujours que 3 parenthèses...Faut peut-être que je change
    de marque de café

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 148
    Points : 112
    Points
    112
    Par défaut
    Change Faw

    Dans son dernier poste j'en compte 4

  14. #14
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Si NbLgn est un contrôle de formulaire, il faut utiliser le ! et non le Point
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form(TabTab(i)).Form!NbLgn

  15. #15
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    ça manque pas de s à Form?

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 148
    Points : 112
    Points
    112
    Par défaut
    bah avec le "." quand il y a une ligne par exemple le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    z = IIf(IsError(Form(TabTab(i)).Form.NbLgn), 0, Form(TabTab(i)).Form.NbLgn)
    z est bien égale à 1 donc ca marche comme ca (j'ai aussi essayé avec '!' mais ca ne résoud pas mon problème

  17. #17
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Citation Envoyé par Arkham46
    bjr,

    avec access 2003 ça marche avec un test avec IsError :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux(IsError([SF_contact].[Formulaire]![Nbcontact];0;[SF_contact].[Formulaire]![Nbcontact])
    bon c'est rien que pour chipoter...et garder mon café pourri

    Et à priori ça serait Forms et pas form.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 148
    Points : 112
    Points
    112
    Par défaut
    Non, ce n'est pas "formS" avec ca, il me génère une erreur :
    "Erreur d'exécution '2450': impossible de trouver le formulaire 'SF_PE' blabla..."

  19. #19
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    pour accéder à un sous formulaire, il faut accéder au contrôle qui le contient

    depuis le form parent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Controls("SF_PE").Form.NbLgn

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 148
    Points : 112
    Points
    112
    Par défaut
    Ca revient au meme, je crois que j'avais déjà essayé ca au début en regardant dans la

    Mais vu que ca m'avait généré l'erreur, j'ai testé avec le form().form.nblgn

    j'ai revérifié avec le controls().form, mais ca me génère toujours l'erreur.

    En faite mon code marche très bien, tant qu'il y a une valeur, voir un 'null' dans la variable qui compte le nombre de ligne, qui est dans le pied de page de mon sous formulaire en zone de texte (=compte([CodeID]))

Discussions similaires

  1. Réponses: 12
    Dernier message: 19/06/2008, 15h04
  2. Réponses: 2
    Dernier message: 07/12/2007, 14h35
  3. formulaire/sous-formulaire suppression de lignes
    Par tazmania dans le forum Access
    Réponses: 2
    Dernier message: 27/10/2006, 12h22
  4. Sous-Formulaire relié à un champ vide
    Par steps5ive dans le forum Access
    Réponses: 2
    Dernier message: 25/08/2006, 18h47
  5. Réponses: 2
    Dernier message: 02/02/2006, 08h23

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