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 :

Calcul suivant plafond


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Par défaut Calcul suivant plafond
    Bonjour,

    Dans ma BD Devis, je dois calculer le crédit d'impôt auquel peut prétendre le client. Pour cela, l'Etat nous impose des règles.
    A savoir: suivant la situation du ménage il y a un plafond (16000 € pour un couple et 8000 € pour un célibataire) puis 400 € par personne à charge.
    Le taux de crédit d'impôt (CI) est de 30% pour une installation.
    Pour exemple: un couple avec 2 enfants à un plafond de 16 800 €. Si les fournitures éligibles au CI atteignent par exemple 13 854.05 €, on calcule 30% de ce montant. Si elles atteignent 17 235.43 €, le montant est ramené à 16 800 € (plafond maxi) et on calcule 30% de 16 800 €.
    Dans le devis il y également des options qui, pour certaines, sont éligibles au CI.

    J'ai donc créé deux requêtes :

    Pièce jointe 470948

    J'aurais besoin de votre aide pour écrire un code VBA qui calculerait le CI. Pour ce faire il faudrait comparer le montant total HT éligible au plafond de RqTOTALHTCI et calculer les 30%, puis, s'il reste du plafond, faire la même chose pour les options (RqTOTALCIOPTION).

    Explications en chiffre (ça sera peut-être plus concret) : un couple+2 enfants = 16800 € de plafond. 13 854.05 € HT de fournitures (soit sous le plafond) = 4156.22 € de CI
    Il reste 2945.95 € de plafond (16800-13854.05). Les options représentent 3600 €, le montant est ramené à 2945.95 € * 30% = 883.79 € de CI.

    Un célibataire+1enfant = 8400 €. Montant total des fournitures 12700 € = 30% de 8400 € soit 2520 € de CI. Des options pour 1700 €, il n'y a pas de CI car le plafond est déjà atteint.
    Bien sûr dans certains devis il n'y a pas de fournitures en options.

    Donc voici l’imbroglio fiscal que je dois démêler en partant des 2 requêtes. Pourriez-vous m'aider à élaborer un code VBA pour atteindre ce résultat car je ne suis pas très fortiche dans ce domaine ?
    Avec mes remerciements, cordialement

  2. #2
    Membre émérite Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 980
    Par défaut Calcul suivant plafond
    Bonjour,

    Pour remédier à ce type de problème, j'ai fait, dans mes fonctions, la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function UpTo(laVal, laLim)
        UpTo = IIf(laVal < laLim, laVal, laLim)
    End Function
    Où le paramètre laVal peut être n'importe quelle valeur numérique et le paramètre laLim représente ton plafond.

    Tu peux appeler cette fonction depuis une requête si tu veux.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Par défaut
    Bonjour Ric500,

    Si je comprends bien je crée cette fonction dans un module, mais après je fais comment pour l'utiliser ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Tu l'utilises comme les fonctions intégrées de Access là où Access l'autorise comme par exemple dans une requête.

    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.

  5. #5
    Membre émérite Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 980
    Par défaut Calcul suivant plafond
    Bonjour,
    Une fois la fonction copiée dans un module général,
    Dans une colonne de requête, dans qbe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Plafond: UpTo([monChamp];limite)
    Te donnera dans la colonne Plafond la valeur de monchamp ou limite, selon que la valeur de monchamp est inférieure ou pas à limite.

    DSL, pour le manque de formatage absent sur mon téléphone.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Par défaut
    Après avoir créé le module, j'ai créé cette requête..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT RqTOTALHTCI.NUMDEVIS, RqTOTALHTCI.GENEDEVIS, RqTOTALHTCI.GeneCI, RqTOTALHTCI.GENEOPTION, RqTOTALHTCI.Libélé, RqTOTALHTCI.Personnecharge, RqTOTALHTCI.TotalPLAFOND, RqTOTALHTCI.TVAFOURNITURES1, RqTOTALHTCI.SommeDeGenePTotlHT, RqTOTALHTCI.TAUXIMPOT, [SommeDeGenePTotlHT]*[TVAFOURNITURES1]/100 AS TOTALTVACI, [SommeDeGenePTotlHT]+[TOTALTVACI] AS TOTALCITTC, [TOTALCITTC]*[TAUXIMPOT]/100 AS MONTANTCITTC
    FROM RqTOTALHTCI
    WHERE (((RqTOTALHTCI.GeneCI)=Yes) AND ((RqTOTALHTCI.GENEOPTION)=No) AND ((RqTOTALHTCI.TotalPLAFOND)=UpTo([MONTANTCITTC],[TotalPLAFOND])));
    ...et j'ai le message suivant: "Entrer une valeur de paramètre : MONTANTCITTC " et la liste suivante s'affiche :
    Pièce jointe 472896

    Comme on peut le voir sur la première ligne, la limite n'a pas été prise en compte, puisque le Montant TTC du CI est de 8179.08 € alors que le plafond est à 8000€.

    Donc il y a qqchose que je n'ai pas du faire correctement..

  7. #7
    Membre émérite Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 980
    Par défaut Calcul suivant plafond
    L'idée n'est pas d'en faire une condition (where) mais un choix inconditionnel.
    Code:
    (UpTo([TOTALCITTC],8000)*(TAUXIMPOT))/100 AS MONTANTCITTC

    Dans le select.

Discussions similaires

  1. [AC-2007] Champ calcul suivant critere
    Par Aladin_23 dans le forum IHM
    Réponses: 4
    Dernier message: 20/03/2010, 17h44
  2. Calcul suivant lettre dans une case annexe
    Par snowcho dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/02/2010, 12h45
  3. Calcule suivant un champ.
    Par Snooky68 dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/08/2009, 10h02
  4. Champ calculé suivant des critères
    Par Houmem dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 11/01/2009, 19h40
  5. [formulaire] calcul avec plafond
    Par zeloutre dans le forum IHM
    Réponses: 2
    Dernier message: 27/09/2006, 15h38

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