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 :

VBA question de calcul


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Par défaut VBA question de calcul
    Bonjour à tous,

    J'ai une question concernant la réalisation d'une fiche de paie.
    Je dois appliquer un taux situé dans une feuille appelée "TAXE" qui diffère en fonction de la qualité du salarié, à savoir s'il est cadre ou non ainsi que de ses revenus.
    La qualité du salarié est dans la feuille "PERSONNEL".
    J'ai essayé de réaliser la macro, cependant elle ne marche pas, pourriez vous m'aider ?

    En vous remerciant d'avance.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    'RETRAITE
    'calcul retraite complementaire - salarie non cadre
    If Sheets("PERSONNEL").Cells(2, 12) <> "oui" And Cells(21, 3).Value <= "6618" Then
    Cells(33, 3).Value = Cells(21, 3).Value
    Cells(33, 7).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(16, 4)
    Cells(33, 5).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(16, 3)
    Else
    Cells(33, 3).Value = "6618"
    Cells(33, 7).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(16, 4)
    Cells(33, 5).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(16, 3)
    End If
    'calcul retraite complementaire - TRANCHE A
    If Sheets("PERSONNEL").Cells(num_ligne, 12) = "oui" And Cells(21, 3).Value <= "2206" Then
    Cells(33, 3).Value = Cells(21, 3).Value
    Cells(33, 7).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(18, 4)
    Cells(33, 5).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(18, 3)
    Else
    Cells(33, 3).Value = "2206"
    Cells(33, 7).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(18, 4)
    Cells(33, 5).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(18, 3)
    End If
    'calcul retraite complementaire - TRANCHE B
    If Sheets("PERSONNEL").Cells(num_ligne, 12) = "oui" And Cells(21, 3).Value > "2206" And Cells(21, 3).Value <= "8824" Then
    Cells(33, 3).Value = Cells(21, 3).Value
    Cells(33, 7).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(20, 4)
    Cells(33, 5).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(20, 3)
    Else
    Cells(33, 3).Value = "0"
    Cells(33, 7).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(20, 4)
    Cells(33, 5).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(20, 3)
    End If
     
     
    'calcul retraite complementaire - TRANCHE C
    If Sheets("PERSONNEL").Cells(num_ligne, 12) = "oui" And (Cells(21, 3).Value >= 8824 And Cells(21, 3).Value <= 17648) Then
    Cells(33, 3).Value = Cells(21, 3).Value
    Cells(33, 7).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(22, 4)
    Cells(33, 5).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(22, 3)
    Else
    Cells(33, 3).Value = "0"
    Cells(33, 7).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(22, 4)
    Cells(33, 5).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(22, 3)
    End If

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,

    sans aller plus loin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ....Cells(21, 3).Value <= "6618" Then...
    ne serait pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(21, 3).Value <= 6618 Then
    et ainsi de suite
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Par défaut
    Malheureusement non...

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Pourtant il s'agit de montants (plafonds) j'imagine ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Par défaut
    Tout à fait, mais cette formule ne m'affiche pas d'erreur, elle ne fonctionne juste pas :s

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Mais elle ne t'affichera pas d'erreur, c'est sur, elle considère tes chiffres comme du texte donc ça ne fonctionne pas, mais as-tu essayé au moins d'enlever tous les "" ?

    Excuses-moi Bbil, pas vu ta réponse, mais je pense que j'ai raison, plus ce que tu constates

    Bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,

    si ta suite d'if/else agit sur la même zone il semble que ton organisation est mauvaise... seule ton dernier if/else et pris en compte.. puisque ton dernier "else" couvre tout est autres conditions...

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    Sans aller plus loin non plus et j'avoue que je ne sais pas ce que représente 6618
    . Un code ou une valeur ?
    Mais dans une partie de ton code, je vois déjà des lignes inutiles.
    Dans ta condition If Sheets("PERSONNEL").Cells(2, 12) <> "oui" And Cells(21, 3).Value <= "6618" ou <=6618
    Je lis que la seule chose différente est que si la condition est vrai Cells(33, 3).Value = Cells(21, 3).Value et si elle est fausse Cells(33, 3).Value = "6618" ou =6618
    Donc, la partie de code ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'RETRAITE
    'calcul retraite complementaire - salarie non cadre
    If Sheets("PERSONNEL").Cells(2, 12) <> "oui" And Cells(21, 3).Value <= "6618" Then
     Cells(33, 3).Value = Cells(21, 3).Value
     Cells(33, 7).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(16, 4)
     Cells(33, 5).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(16, 3)
    Else
     Cells(33, 3).Value = "6618"
     Cells(33, 7).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(16, 4)
     Cells(33, 5).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(16, 3)
    End If
    Pourrait être réduite à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'RETRAITE
    'calcul retraite complementaire - salarie non cadre
    If Sheets("PERSONNEL").Cells(2, 12) <> "oui" And Cells(21, 3).Value <= "6618" Then
     Cells(33, 3).Value = Cells(21, 3).Value
    Else
     Cells(33, 3).Value = "6618"
    End If
    Cells(33, 7).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(16, 4)
    Cells(33, 5).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(16, 3)
    Tu peux aussi enlever les .Value cela ne change rien, Value étant la propriété par défaut de l'objet Cells
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(33, 7).Value = Cells(33, 3).Value * Sheets("TAXES").Cells(16, 4)
    Et
    Cells(33, 7) = Cells(33, 3) * Sheets("TAXES").Cells(16, 4)C'est du pareil au même.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonsoir à tous,
    Désolé si ma réponse tombe mal mais entre le moment où j'ai commencé à répondre, il n'y avait qu'une seule réponse, et après l'envoi un nombre plus important est apparu.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Par défaut
    Merci à tous pour vos réponses,

    Celle qui se rapproche le plus de mon problème est la réponse de Bbil.

    En effet, il faudrait que j'arrive à concentrer les formules de mes retraites TRANCHE A, B et C, dans une seule formule IF afin que ne soit pas pris en compte, uniquement la dernière formule TRANCHE C.

    Comment puis je faire ?

    En vous remerciant pour vos conseils très pros !

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En effet, il faudrait que j'arrive à concentrer les formules de mes retraites TRANCHE A, B et C, dans une seule formule IF afin que ne soit pas pris en compte, uniquement la dernière formule TRANCHE C.
    Le plus simple serait que tu expliques la manière de calculer les retraites.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  12. #12
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut bonsoir lenoble09, casefeyre, le forum
    difficille de répondre sans savoir à quoi correspondent les cellules.

    LEs guillements pour des nombres.

    J'ajouterais le "oui" est-il bien en minuscule dans les feuilles...

    La valeur de num_ligne est-elle bien définie ? num_ligne peut-il valoir 2 ?

    1) Le test < 6618 avec les deux solutions oui/ non
    2) le test < 2206 avec les deux solutions oui/non

    Le programme peut faire le test 1 puis le test2 si num_ligne=2

    A méditer.


    ESVBA

Discussions similaires

  1. [VBA-E]Ligne calculée en fin de tableau dynamique
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 07/10/2006, 22h23
  2. [Excel][VBA] Questions sur la hiérarchie des objets
    Par cladsam dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/08/2006, 14h59
  3. [VBA] question sur le Db.execute
    Par dyree dans le forum Access
    Réponses: 1
    Dernier message: 14/08/2006, 13h34
  4. Réponses: 10
    Dernier message: 10/08/2006, 15h44
  5. Réponses: 10
    Dernier message: 13/06/2006, 17h59

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