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 :

Problème de somme dans un sous-formulaire


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut Problème de somme dans un sous-formulaire
    Bonjour,

    J'ai un formulaire qui contient trois sommes provenant d'un sous-formulaire et ça fonctionne correctement sauf lorsqu'il n'y a pas de transactions.

    Dans ce cas, mes sommes afficher #Erreur dans le champs.

    J'ai essayé de mettre un nz, sans succès.

    Voici une des sommes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Somme(VraiFaux([impact]=0;[ENGAGEMENT];0))
    Merci de m'aider si vous avez une idée.

  2. #2
    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
    Bonjour.

    C'est souvent un problème. J'ai essayé de faire une BD de test pour générer l'erreur mais je n'y parviens pas donc je vais faire des suggestions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Somme(VraiFaux(Nz([impact];1)=0;Nz([ENGAGEMENT];0) ;0))
    sinon avec une fonction VBA à mettre dans le module associé au formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function ADonnees() as boolean
       ADonnees=(me.recordset.recordcount<>0) 'Il y a au moins un enregistrement donc il y a des données
    end function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =iif(ADonnees(); Somme(VraiFaux([impact]=0;[ENGAGEMENT];0)); 0)
    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.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Merci pour tes options de solutions,

    La première ne fonctionne pas, je l'avais testé.

    Pour la 2e, je vais voir. Ne fonctionne pas!

    Nom : erreur champs engagement.jpg
Affichages : 100
Taille : 7,7 Ko

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Je traine ce problème depuis plusieurs mois sans solution.

  5. #5
    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
    Bonjour.

    Je suis surpris que ma 2ième solution ne fonctionne pas.

    As-tu vérifiié que ADonnees fonctionne correctement ?

    Si oui, cela vient sans doute du iif() qui exécute à la fois la condition vrai et la condition fausse.
    Dans ce cas, essaye en inversant les termes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =iif(not ADonnees(); 0; Somme(VraiFaux([impact]=0;[ENGAGEMENT];0)))
    Et si cela ne marche vraiment pas, je pense qu'il va falloir remplacer le Somme() par un DSum().
    Le problème c'est que le Somme() se base sur les enregistrements affichés par le sous-formulaire tandis que le DSum() se base sur un critère.
    Il va donc falloir faire en sorte que le critère corresponde aux enregistrements affichés ce qui peut être délicat si on applique un filtre au sous-formulaire.

    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.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    J'ai regardé ton option avec adonnees et je ne suis pas assez familier pour savoir quoi faire.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Bonjour.

    C'est souvent un problème. J'ai essayé de faire une BD de test pour générer l'erreur mais je n'y parviens pas donc je vais faire des suggestions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Somme(VraiFaux(Nz([impact];1)=0;Nz([ENGAGEMENT];0) ;0))
    sinon avec une fonction VBA à mettre dans le module associé au formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function ADonnees() as boolean
       ADonnees=(me.recordset.recordcount<>0) 'Il y a au moins un enregistrement donc il y a des données
    end function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =iif(ADonnees(); Somme(VraiFaux([impact]=0;[ENGAGEMENT];0)); 0)
    A+

    Pour cette ligne, le commentaire est faux : ADonnees=(me.recordset.recordcount<>0) 'Il y a au moins un enregistrement donc il y a des données

    pour un enregistrement, j'affiche les transactions mais il arrive qu'il n'y en a pas et c'est là, que le mot erreur apparaît.

  8. #8
    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
    Hum. il est possible que quand il n'y a pas de données l'objet recordset n'existe même pas.

    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public function ADonnees() as boolean
     
       if not me.recordset is nothing then
             ADonnees=(me.recordset.recordcount<>0) 'Il y a au moins un enregistrement donc il y a des données
          else
             ADonnees=false
       end if
     
    end function
    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.

Discussions similaires

  1. [AC-2010] Problème de somme dans un sous-formulaire
    Par superloupiot dans le forum IHM
    Réponses: 5
    Dernier message: 01/04/2013, 13h24
  2. [formulaire] Somme dans un sous formulaire
    Par Ancy91 dans le forum IHM
    Réponses: 3
    Dernier message: 18/09/2007, 17h31
  3. Problème de requête dans un sous formulaire
    Par La crevette dans le forum IHM
    Réponses: 3
    Dernier message: 09/07/2007, 17h00
  4. Réponses: 3
    Dernier message: 20/04/2007, 16h37
  5. cacul d'une somme dans un sous formulaire
    Par T'chab dans le forum IHM
    Réponses: 5
    Dernier message: 22/01/2007, 14h17

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