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 :

Calcul d'ancienneté pour salarié


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2016
    Messages : 22
    Par défaut Calcul d'ancienneté pour salarié
    bonjour,

    je dois effectuer dans un usf un calcul d'ancienneté pour des salariés dans une entreprise.

    je m'explique : l'assistante (donc elles peuvent être plusieurs) rentre(nt) la date d'entrée du (ou des) salarié(s) (idéalement sous la forme jj/mm/aaaa) dans un TextBox.

    et alors doit s'afficher dans un Label l'ancienneté du salarié sous la forme xx ans et xx mois ( en vu de son traitement pour des statistiques ensuite).

    j'avoue , je n'aie pas encore réfléchi s'il y a moins d'un mois (z'ont qu'a pas se blesser aussi )

    ce petit module s'inscrit dans un projet plus vaste de déclaration et de traitement à des fins de stats des AT.

    j'ai pu faire une grosse partie (identité du salarié, déclaration de la nature de l'AT, du siège des blessures, de la gravité, du lieu...).

    mais là sur cette partie calcul, je coince...

    petite précision : la version Excel est une version réseau (hébergée en externe) et je ne peux pas installer le contrôle calendar.

    j'ai effectué une recherche dans ce forum sur quelque chose qui ressemblerait mais je n'aie rien trouvé.

    pourriez vous me mettre sur la voie s'il vous plait ?

    merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Bonjour,
    Calculer la différence de date entre aujourd'hui et le textbox et y appliquer le format suivant: aa" ans et "mm "mois"
    Attention il faudra convertir la valeur du textbox en nombre et donc s'assurer qu'il bien formater.

  3. #3
    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
    essayer ça :
    =DATEDIF(A1;AUJOURDHUI();"y") & " ans " & DATEDIF(A1;AUJOURDHUI();"ym") & " mois"
    c'est l'ancienneté entre aujourd'hui et la date d'entrée par exemple
    si non tu peut remplacer Aujourd'hui par une date figurant dans une une cellule
    bonne continuation

  4. #4
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2016
    Messages : 22
    Par défaut aye presque .... ou pas
    bon

    j'ai déclaré ma fonction comme suit

    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
    Function CalculDates(datedepart As Date, datefin As Date, returntype As Integer)
         Dim anneedepart As Integer
         Dim moisdepart As Integer
         Dim joursdepart As Integer
         Dim anneefin As Integer
         Dim moisfin As Integer
         Dim joursfin As Integer
         anneedepart = Year(datedepart)
         moisdepart = Month(datedepart)
         joursdepart = Day(datedepart)
         anneefin = Year(datefin)
         moisfin = Month(datefin)
         joursfin = Day(datefin)
     
         If joursfin < joursdepart Then
         joursfin = joursfin + (DateSerial(anneefin, moisfin + 1, joursfin) - DateSerial(anneefin, moisfin, joursfin))
         moisfin = moisfin - 1
     
         End If
         If moisfin < moisdepart Then
         moisfin = moisfin + 12
         anneefin = anneefin - 1
         End If
         Select Case returntype
         Case 1
         CalculDates = anneefin - anneedepart
         Case 2
         CalculDates = moisfin - moisdepart
         Case 3
         CalculDates = joursfin - joursdepart
         End Select
         End Function

    Ensuite je l'appelle lors de la saisie de la date dans le textbox23
    le textbox37 étant la date du jour
    le textbox38 étant le résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub TextBox23_Change()
    Dim Valeur As Byte
    TextBox23.MaxLength = 10 'nb caracteres maxi dans textbox
    Valeur = Len(TextBox23)
    If Valeur = 2 Or Valeur = 5 Then TextBox23 = TextBox23 & "/"
    If Valeur = 10 Then
    TextBox38.Value = CalculDates(TextBox23.Value, TextBox37.Value, 1) & " An(s)" & ", " & CalculDates(TextBox23.Value, TextBox37.Value, 2) & " Mois" & ", " & CalculDates(TextBox23.Value, TextBox37.Value, 3) & " Jour(s)"
    End If
    End Sub

    et youpi tralala ca marche presque
    j'ai juste un petit souci

    nous sommes le 03/02/2017
    si je rentre le 02/02/2017 ca me calcule bien 1 jour
    si je rentre le 01/02/2017 ca me calcule 2 jours (ouf)
    mais si je rentre le 31/01/2017 ca me retourne 0 jours
    et je repasse à 1 jour si je rentre le 30/01/2017

    pourquoi ?

Discussions similaires

  1. [XL-2007] Calcul d'ancienneté par salarié
    Par sweetty dans le forum Excel
    Réponses: 8
    Dernier message: 02/12/2011, 10h28
  2. Calcul de tangente pour un mesh
    Par derferic dans le forum DirectX
    Réponses: 3
    Dernier message: 24/05/2008, 01h53
  3. Permis de travail ou Promesse d'embauche pour salarié étranger ?
    Par sarani dans le forum Droit du travail
    Réponses: 3
    Dernier message: 06/09/2006, 16h40
  4. Réponses: 2
    Dernier message: 12/06/2006, 16h21
  5. [MySQL] Fonctions calculs SQL/PHP pour projet football
    Par spamyx dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/04/2006, 16h16

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