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 :

Ecriture d'une fonction calculant le salaire brut


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 156
    Par défaut Ecriture d'une fonction calculant le salaire brut
    Bonjour à tous,
    Je vous soumets une fonction par laquelle je souhaite calculer le salaire brut à partir d'une enveloppe de salaire. L'enveloppe salaire est = au salaire brut + charges patronales.

    J'ai écrit cette fonction mais je ne sais si elle contient des erreurs et je vous la soumet :

    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
    Function Enveloppe ( SalaireBrut as integer ) as integer
     
        Dim Tr A as integer
        Dim SalaireCharniere as integer
        Dim Tr B as integer
        Dim Tr C as integer
     
            Select case Enveloppe
     
               Case (Enveloppe - 450.32) / 1.3732 <= Tr A
                       SalaireBrut = (Enveloppe - 450.32) / 1.3732
     
               Case (Enveloppe - 4997.27) / 1.23156 > Tr A and < SalaireCharniere
                       SalaireBrut = (Enveloppe - 4997.27) / 1.23156
     
               Case (Enveloppe - 4997.27) / 1.23156 > Tr A and < SalaireCharniere
                       SalaireBrut = (Enveloppe - 4997.27) / 1.23156
     
               Case (Enveloppe - 502.07) / 1.3576 > SalaireCharniere < Tr B 
                       SalaireBrut = (Enveloppe - 502.07) / 1.3576
     
                Case (Enveloppe - 6708.43) / 1.3442 > Tr B < Tr C
                       SalaireBrut = (Enveloppe - 6708.43) / 1.3442
     
                Case else
                       SalaireBrut = (Enveloppe - 55370.64) / 1.2182
           End select
     
      End function
    Merci d'avance pour votre aide

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Il est assez étonnant que le nom de ta fonction (enveloppe) soit utilisé ici comme variable.

    Assez étonnant également quelle ne retourne pas de valeur mais utilise un paramètre (ici SalaireBrut) qui, lui, voit sa valeur modifiée par la fonction.

    D'autres choses sont également surprenantes, mais nous n'allons pas en dresser la liste.

    Rappelons simplement le rôle d'une fonction :

    On l'appelle en lui passant les paramètres qu'elle attend et elle retourne la valeur qui lui est attribuée par les instructions qu'elle contient, avec le type que l'on définit pour cette fonction (integer dans la tienne)

    voilà un exemple à étudier. Applique-le ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Command1_Click()
      MsgBox mafonction(3, 4)
    End Sub
     
     
    Private Function mafonction(monparam1 As Integer, monparam2 As Integer) As Double
      mafonction = monparam1 / monparam2
    End Function

    Bonne continuation...

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour;
    En complément des remarques de UcFoutu, je te conseil de voir la portée des déclaration (dim), car apparement ta variable SalaireCharniere est initialisée ailleur, et ta fonction plante certainement dés le début, les noms de variables ne supporte pas les espaces. petite astuce pour arrivé directement sur l'aide sur la syntaxe, tu sélectionne le mot (double clic dessus) et ensuite F1
    Voila, cogite la dessus et sur ce que t'a dit Ucfoutu et quand tu aurras compris rectifie ta macros et si encore des problèmes revient, nous t'aiderons au mieux.
    Cordialement.

    EDIT: En relisant ton poste...
    J'ai écrit cette fonction mais je ne sais si elle contient des erreurs et je vous la soumet :
    Tu ne l'a donc pas testé ??

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 156
    Par défaut
    Voilà, j'ai quelque peu modifier ma fonction, mais il apparaît une erreur " 6 Dépassement de capacité ".
    Je ne sais pas ce que celà signifie.

    Voici la fonction :

    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
    Option Explicit
     
    Function CalculSalaireBrut(Enveloppe As Integer) As Integer
     
        Dim TrA As Integer
        Dim SalaireCharniere As Integer
        Dim TrB As Integer
        Dim TrC As Integer
     
            Select Case Enveloppe
     
               Case (Enveloppe - 450.32) / 1.3732 <= TrA
                       CalculSalaireBrut = (Enveloppe - 450.32) / 1.3732
     
               Case (Enveloppe - 4997.27) / 1.23156 > TrA And (Enveloppe - 4997.27) / 1.23156 < SalaireCharniere
                       CalculSalaireBrut = (Enveloppe - 4997.27) / 1.23156
     
               Case (Enveloppe - 4997.27) / 1.23156 > TrA And (Enveloppe - 4997.27) / 1.23156 < SalaireCharniere
                       CalculSalaireBrut = (Enveloppe - 4997.27) / 1.23156
     
               Case (Enveloppe - 502.07) / 1.3576 > SalaireCharniere And (Enveloppe - 502.07) / 1.3576 < TrB
                       CalculSalaireBrut = (Enveloppe - 502.07) / 1.3576
     
                Case (Enveloppe - 6708.43) / 1.3442 > TrB And (Enveloppe - 6708.43) / 1.3442 < TrC
                       CalculSalaireBrut = (Enveloppe - 6708.43) / 1.3442
     
                Case Else
                       CalculSalaireBrut = (Enveloppe - 55370.64) / 1.2182
           End Select
     
    End function

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Comparons déjà ceci ensemble, si tu veux bien ...

    1) CalculSalaireBrut(Enveloppe As Integer) As Integer
    2) (et parmi d'autres) : CalculSalaireBrut = (Enveloppe - 55370.64) / 1.2182

    La valeur de SalaireBrut (déjà) pourrait-elle être un entier ? (c'est une question...)

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

    Bien sûr Ucfoutu a raison.

    Je pense qu'il faut d'abord que vous passiez en revue les différents types de données.

    Pour cela regardez ici :

    http://silkyroad.developpez.com/VBA/LesVariables/#LII-E

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 156
    Par défaut
    J'ai toujours une erreur alors que j'ai modifié la fonction comme ceci :

    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
    Option Explicit
     
    Function CalculSalaireBrut(Enveloppe) As Double
     
        Dim TrA As Integer
        Dim SalaireCharniere As Integer
        Dim TrB As Integer
        Dim TrC As Integer
     
        TrA = 32184
        SalaireCharniere = 35666
        TrB = 128736
        TrC = 257472
     
            Select Case Enveloppe
     
               Case (Enveloppe - 450.32) / 1.3732 <= TrA
                       CalculSalaireBrut = (Enveloppe - 450.32) / 1.3732
     
               Case (Enveloppe - 4997.27) / 1.23156 > TrA And (Enveloppe - 4997.27) / 1.23156 < SalaireCharniere
                       CalculSalaireBrut = (Enveloppe - 4997.27) / 1.23156
     
               Case (Enveloppe - 4997.27) / 1.23156 > TrA And (Enveloppe - 4997.27) / 1.23156 < SalaireCharniere
                       CalculSalaireBrut = (Enveloppe - 4997.27) / 1.23156
     
               Case (Enveloppe - 502.07) / 1.3576 > SalaireCharniere And (Enveloppe - 502.07) / 1.3576 < TrB
                       CalculSalaireBrut = (Enveloppe - 502.07) / 1.3576
     
                Case (Enveloppe - 6708.43) / 1.3442 > TrB And (Enveloppe - 6708.43) / 1.3442 < TrC
                       CalculSalaireBrut = (Enveloppe - 6708.43) / 1.3442
     
                Case Else
                       CalculSalaireBrut = (Enveloppe - 55370.64) / 1.2182
           End Select
     
      End Function

  8. #8
    Invité
    Invité(e)
    Par défaut
    Déjà un dépassement de capacité dans les lignes en bleu :

    Variable Integer
    Données contenant des nombres entiers stockés, de 2 octets, compris entre -32 768 et 32 767.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim TrA As Integer
    Dim SalaireCharniere As Integer
    Dim TrB As Integer
    Dim TrC As Integer
    
    TrA = 32184
    SalaireCharniere = 35666
    TrB = 128736
    TrC = 257472

Discussions similaires

  1. Ecriture d'une fonction
    Par tdelacou dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 12/03/2010, 11h24
  2. Réponses: 9
    Dernier message: 04/01/2010, 20h41
  3. Ecriture d'une fonction imbriquée dans une autre
    Par kase74 dans le forum Débuter
    Réponses: 13
    Dernier message: 20/10/2008, 21h45
  4. Une fonction calcul qui ne calcule pas
    Par tranenengel dans le forum C
    Réponses: 3
    Dernier message: 18/06/2008, 12h11
  5. [VBA-E] Ecriture d'une fonction
    Par aractingias dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/03/2007, 11h59

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