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 :

somme conditionnelle sous acces


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut somme conditionnelle sous acces
    Bonjour, j'ai créé un état dans lequel j'ai trois sous états, ces derniers ayant pour source un requête. Chaque sous état me donne une valeur. Quand un des sous état ne répond pas aux critères de la requête il ne s'affiche donc pas.
    Je veux faire la somme de ces trois sous états. Or quand un des sous états ne s'affiche pas, il manque donc une valeur pour faire la somme et on marque erreur.
    J'ai donc écrit cette formule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux(EstNull([analyse croisée].Etat!texte17);0;[analyse croisée].Etat!texte17)+VraiFaux(EstNull([retour CRD].Etat!a);0;[retour CRD].Etat!a)+VraiFaux(EstNull([analyse croisée2].Etat!texte17);0;[analyse croisée2].Etat!texte17)+VraiFaux(EstNull([analyse croisée 3].Etat!texte17);0;[analyse croisée 3].Etat!texte17)
    Mon problème est que malgrès cette formule access me marque toujours erreur.
    Quelqu'un pourrait-il m'aider svp?merci d'avance pour votre aide

  2. #2
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 406
    Points : 1 683
    Points
    1 683
    Par défaut
    Bonjour,

    Essaie plutôt de te tourner vers la fonction Nz

    A+

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Vu la complexité de ton calcul je te suggère de faire une fonction publique sous ton état. Tu ainsi va pouvoir utiliser des If then else à la place des iif() et surtout débugger pas à pas pour trouver la source du problème.

    A+

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    Bonjour, merci pour le conseil mais je ne sais pas ce qu'est une fonction publique, pouvez-vous m'éclairer svp? Merci!!!

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Une fonction publique est une fonction qui est déclarée dans un module standard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function MaFonction() as Long
    ' tout ce que doit faire ta fonction
    End Function
    Starec

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    ok est dois-je la mettre sur ouverture de mon état?

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Tu la mets à la place de ton calcul.

    Je me permets d'enrichir le modèle qu'on t'a donné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Function MaFonction(prm1 as variant, prm2 as variant) as Long
    ' tout ce que doit faire ta fonction
    End Function
    A+

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    Merci, ce que je ne comprend pas c'est que dans une état on ne peut pas mettre une procédure évenementiel pour une zone de texte alors je ne comprend pas où...

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Ceci n'est pas une procédure événementiel mais l'appel à une fonction définie par l'utilisateur.

    La valeur de ton champ texte devrait ressembler à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =MaFonction([analyse croisée].Etat!texte17; [retour CRD].Etat!a; [analyse croisée2].Etat!texte17;[analyse croisée 3].Etat!texte17)
    en lieu et place de ta bardée de IIf imbriqués et des cacluls.

    Entre nous je t'inviterai à changer les noms de tes champs textes, et celui de tes requètes, pour quelque chose de plus significatif. Ça facilite grandement le débugage de voir VenteProvince+VenteOutreMer=VenteTotal plutôt que A+B=C.

    A+

    A+

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    D'accord, donc si je comprends bien
    1: je dois définir une fonction
    2: je vais dans les propriétés de ma zone de texte et je met ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MaFonction([analyse croisée].Etat!texte17; [retour CRD].Etat!a; [analyse croisée2].Etat!texte17;[analyse croisée 3].Etat!texte17)
    Ce que je ne comprends pas c'est où est-ce que je dois définir ma fonction comme on me l'avait dit de cette manière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function MaFonction(prm1 as variant, prm2 as variant) as Long
    ' tout ce que doit faire ta fonction
    End Function
    Merci
    Elodie

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Tu peux lla définir soit dans un module à part soit 'sous' le formulaire ou le rapport qui l'utilise.

    Si elle est utilisée un peu partout, un module à part est d'après moi la meilleure solution. Quand je n'utilise une fonction qu'à un seul endroit, je préfère la mettre dans le code associé à l'objet qui l'utilise.

    A+

Discussions similaires

  1. somme conditionnelle sous acces
    Par dodie84 dans le forum VBA Access
    Réponses: 0
    Dernier message: 07/05/2008, 09h30
  2. somme conditionnelle sous Excel
    Par ninette24 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 17/03/2008, 17h26
  3. somme conditionnelle sous VBA
    Par léclaireur dans le forum Général VBA
    Réponses: 5
    Dernier message: 26/04/2007, 10h32
  4. Réponses: 2
    Dernier message: 05/02/2006, 22h26
  5. Pb de sommes dans sous formulaires !
    Par Fredri dans le forum Access
    Réponses: 10
    Dernier message: 11/01/2006, 12h09

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