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 :

Champ null message d'erreur #Taille! avec Nz [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Femme Profil pro
    Administrateur Projets
    Inscrit en
    Mars 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Administrateur Projets
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2014
    Messages : 27
    Points : 23
    Points
    23
    Par défaut Champ null message d'erreur #Taille! avec Nz
    Bonjour à tous,
    Je suis en train de finaliser mon application il me reste un dernier bug (enfin j'espère )
    J'ai un formulaire qui contient 4 sous formulaires. Chaque sous formulaire contient une liste de valeurs et la somme de ces valeurs est faite dans le sous forumlaire.
    La valeur est reportée dans un champ du formulaire afin de pouvoir faire la somme des valeurs des 4 sous formulaires. Hélas quand il n'y a pas de valeurs (de lignes dans le sous formulaire j'ai un message d'erreur dans le champ de repport du total du sous formulaire. Pourtant j'utilise la fonction Nz.

    Dans mon sous formulaire j'ai un champ NbHeure
    Dans le pied de page de mon sous formulaire j'ai un champ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SommeMoisConges=Nz(Somme([NbHeures]);0)
    (j'ai essayé aussi sans le Nz à ce niveau)
    Dans mon formulaire j'ai un champ de repport de la valeur du sous formulaire:
    J'ai essayé deux syntaxes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CHampRepport=[SsF_SaisieHeures_ListeCongesMois].[Formulaire]![SommeMoisConges]
    => avec cette syntaxe dans le champ de repport j'ai un message d'erreur : #Erreur!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CHampRepport=Nz([SsF_SaisieHeures_ListeCongesMois].[Formulaire]![SommeMoisConges];0)
    => avec cette syntaxe dans le champ de repport j'ai un message d'erreur : #Taille!
    Pourtant les formats dans le sous formulaire et le formulaire sont les mêmes (fixe une décimale)
    Je ne vois pas comment régler le problème. Je ne comprends pas ce que je ne fais pas bien avec la fonction Nz.
    Si quelqu'un a une idée... je suis preneuse!
    Cordialement

    Sabine

  2. #2
    Membre régulier
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 84
    Points
    84
    Par défaut
    Bonjour SBIBobinette,

    J'ai déjà eu un problème semblable. Maintenant plutôt que de faire un champ calcul SommeMoisConges=Nz(Somme([NbHeures]);0) j'utilise Dsum pour faire mes calculs

    DSum ( expression, domain, [criteria] ) et j'additionne les résultats dans une variable.


    Bonne continuation

  3. #3
    Membre à l'essai
    Femme Profil pro
    Administrateur Projets
    Inscrit en
    Mars 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Administrateur Projets
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2014
    Messages : 27
    Points : 23
    Points
    23
    Par défaut Est qu'il y aurait une autre solution?
    Bonjour,
    Je te remercie pour ta réponse.
    J'ai testé ta solution et le total ramené est celui de toute la table.
    Le sous formulaire est conditionné sur plusieurs paramètres et cela va être très compliqué de mettre tous ces paramètres dans la condition.
    Le contexte est celui-ci:
    J'ai un formulaire indépendant contenant plusieurs sous formulaires.
    A l'ouverture de ce formulaire le visa de l'utilisateur est stocké dans le formulaire grace à sa session windows d'ouverte. (chez nous les nom d'utilisateurs windows sont nos visa)
    Sur ce formulaire j'ai 4 sous formulaires (un par catégorie d'heures) qui affiches toutes les heures déjà saisies par l'utilisateur (lien entre les sous formulaire et le formulaire par le champ visa du formulaire qui est renseigné à l'ouverture du formulaire), pour le mois en cours (chaque sous formulaire est basé sur une requete affichant les valeurs du mois en cours).
    Lorsque dans le sous formulaire de saisie une personne réalise une nouvelle saisie et sauvegarde les sous formulaires listant l'historique sont mis à jour. et donc une nouvelle ligne apparait dans le sous formulaire correspondant à la catégorie concernée.
    Afin de permettre le suivi de l'état d'avancement de la saisie j'ai un champ total qui est basé sur la somme de 4 champs (un par sous formulaires).
    Dans chaque sous formulaire j'ai un total et je repporte chaque sous total dans le formulaire principal (avant de faire la somme). c'est là qu'est le problème car si un sous formulaire ne contient pas de ligne! j'ai un message d'erreur et au final le total des 4 champs a aussi un message d'erreur.
    J'ai appliqué la méthode DSum au champ de mon sous formulaire sans condition:
    J'ai tapé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DSum("NbHeures";"[T_Heures]")
    Mon code a automatiquement été changé en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SomDom("NbHeures";"[T_Heures]")
    il fait donc le total de la table des heures (ne tient compte ni du visa ni de la catégorie d'heures ni de la date)...
    Si je dois rentrer tous mes critères dans la fonction... j'ai peur d'avoir quelques difficultés...
    Est ce normal déjà que mon code DSum soit automatiquement changé? est ce juste un problème de version vba langage français anglais.....???
    J'ai déjà constaté ce phénomène avec month qui est automatiquement changé en mois...

    Cordialement

    sabine

    PS... j'ai exactement le même problème pour mon état récapitulatif la solution sera donc doublement utilisée!!!
    La seule différence dans mon état étant que le récapitulatif est triée par semaine et que pour chaque semaine j'ai un sous état par jour afin de présentaer sous forme de calendrier semaine!!

  4. #4
    Membre régulier
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    Pourquoi ne pas créer une requête qui récupère seulement les enregistrements voulus et ensuite mettre ta requête comme Domain

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    variable = DSum ( champAcalculer, TaRequete)

  5. #5
    Membre à l'essai
    Femme Profil pro
    Administrateur Projets
    Inscrit en
    Mars 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Administrateur Projets
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2014
    Messages : 27
    Points : 23
    Points
    23
    Par défaut Merci beaucoup
    Bonsoir,
    Le problème est résolu, plutôt que de faire une requête, j'ai pris mon courage à deux mains pour ajouter les critères de sélection à la fonction SomDom.
    J'ai appliqué Nz au résultat afin d'afficher 0 si il n'y a pas d'enregistrement répondant aux critères et donc j'ai pu faire la somme de tous mes champs!!!
    Le code donne donc cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChampFormulaire=Nz(SomDom("[NbHeures]";"T_Heures";"[LienConstitutionEquipeHeure] = Forms![F_SaisieHeuresVisa]![FiltreVisa] And [LienCategorieHeure]=1 And Month([DateRealisationHeures])= Month (Forms![F_SaisieHeuresVisa]![DateJour]) And Year([DateRealisationHeures])= Year(Forms![F_SaisieHeuresVisa]![DateJour])");0)
    et pour une fois j'ai pas eu de problème pour concaténer mes critères!!!
    Merci encore pour votre aide.
    Bonne continuation

    Sabine

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/02/2010, 14h10
  2. Message d'erreur MàJ avec APT
    Par LaGuiz dans le forum Bubuntu
    Réponses: 2
    Dernier message: 12/02/2009, 11h46
  3. validation de champ et message d'erreurs
    Par *alexandre* dans le forum JSF
    Réponses: 3
    Dernier message: 13/11/2008, 15h03
  4. Réponses: 2
    Dernier message: 30/09/2008, 22h59
  5. Réponses: 5
    Dernier message: 14/09/2007, 22h50

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