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

Macros et VBA Excel Discussion :

Calculer le montant d’amende


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Par défaut Calculer le montant d’amende
    Bonjour tout le monde, je suis nouveau dans la programmation VBA et sur le forum. J'essaie de programmer une fonction fnAmende(PlageDeDates) qui calcule le montant d’amende pour une liste de livres empruntés à la bibliothèque.
    L’amende doit être calculée en multipliant le nombre total de jours en retard par rapport à la date du jour (fournie par la fonction Date()).
    Pseudocode de base (vous pouvez le bonifier) :
    Pour chaque cellule de la plage :
    Si (aujourd’hui – cellule) > 0
    fnAmende = fnAmende + ((aujourd’hui – cellule)* AmendeUnitaire)
    Fin Si
    Boucler

    Merci de m'aider
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Regarde l'instruction datedif.

    Pourquoi tester si nombre de jours supérieurs à zéro?

    AmendeUnitaire * 0 = 0?

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Cedric222 Voir le message
    Pour chaque cellule de la plage :
    Si (aujourd’hui – cellule) > 0
    fnAmende = fnAmende + ((aujourd’hui – cellule)* AmendeUnitaire)
    Fin Si
    Boucler
    Ceci peut se faire sans VBA.
    Il suffit de mettre la fonction que tu décris à chaque ligne de livre emprunté en utilisant les fonctions SI() et AUJOURDHUI().
    Ensuite, si tu veux connaitre l'amende totale pour une personne, tu utilises la fonction SOMME.SI.ENS().

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour à tous
    * D'abord il faut formater le montant unitaire de l'amende en Monétaire et non pas un format personnalisé ou tu concatène le montant et le sigle dollars !! ça va pas te permettre de faire la multiplication
    * Voila un bout de code commenté par un débutant VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Option Explicit
    Sub calcAmende()
    Dim dernligne As Long
    Dim plage As Range
    Dim cel As Range
    Dim JourRetard As Variant
    Dim Amende As Variant
    Dim Ws As Worksheet
    Set Ws = Worksheets("Feuil1")
    dernligne = Ws.Range("A" & Rows.Count).End(xlUp).Row ' rechercher dernière ligne non vide
    'éfacer ancien données du colonne Amende
     Ws.Range("F2:F" & dernligne).Select
    Selection.ClearContents
      ' Calculer Amende
    Set plage = Ws.Range("E2:E" & dernligne) ' la colonne E ou se trouve la date ultime de restitution du bouquin
    Application.ScreenUpdating = False ' arrêt de l'affichage écran juste pour accélérer le temps d'exécution de la commande
        For Each cel In plage 'recherche dans tous les cellule
            If cel < Date Then 'si la date qui se trouve à la colonne E est inférieur à la date d'aujourd'hui Alors
            JourRetard = Date - CDate(cel) 'Nombre des jours de retard égal à la date d'aujourd'hui - date de restitution
            Amende = JourRetard * CDbl(Cells(cel.Row, 4)) ' Amende = Nombre jour de retard * la valeur de l'amende figurant dans la colonne 4
            Cells(cel.Row, 6) = Amende 'Enregistrer la valeur de l'amende dans la colonne 6
            End If 'fin condition
        Next cel 'cellule suivante
        Application.ScreenUpdating = True 'reprise de l'affichage de l'écran arreté ci haut
    End Sub
    Bonne continuation
    Fichiers attachés Fichiers attachés

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Bonjour,

    Regarde l'instruction datedif.

    Pourquoi tester si nombre de jours supérieurs à zéro?

    AmendeUnitaire * 0 = 0?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Par défaut Merci tout le monde
    dysorthographie En fait lorsque si nombre de jour supérieur a zéro il doit prendre une amende!! mais si le membre remet le livre avant ou la date butoir il prend pas d'amende.

    Menhir oui c'est possible de faire ca avec une fonction si, mais on me demande de le faire avec VBA.

    BENNASR Merci beaucoup ca fonctionne très bien

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    joursPenalite=-6
    Amande=Amande + iif(joursPenalite<1,0,AmendeUnitaire  *joursPenalite)

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Par défaut
    dysorthographie parfait, Merci beaucoup, je viens d'essayer et ca fonctionne très bien.

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    n'oublie pas de leur communiquer la date de tes examens qu'ils puissent se libérer ;-)
    eric

Discussions similaires

  1. [AC-2007] requete pour calcul de montant par norme
    Par guaguanco dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/06/2010, 10h53
  2. Algo pour calculer des montants de remboursement
    Par code.nemesis dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/12/2008, 00h06
  3. Calcul du montant dbGrid exact
    Par khier dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/10/2008, 11h25
  4. [Normes comptables] Format et calcul du montant de la TVA
    Par Le_MaLaDe dans le forum Forum général ERP
    Réponses: 9
    Dernier message: 10/02/2008, 20h37
  5. [eCommerce] Calcul du montant manquant pour livraison gratuite
    Par muriel76 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 22/03/2007, 10h11

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