Pb formule ancienneté
#1
Régulier XLPages

Inscription: 27/06/2010

Messages: 44

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2007
Posté le : 20-09-2011 13h01
Bonjour à tous,

Je vous expose mon problème : Dans un tableau j'ai une date de début de contrat (colonne S) et une date de fin de contrat (colonne T).

En colonne Z j'ai entré la formule suivante pour qu'il me calcule l'ancienneté :

=SI(T2="";DATEDIF(S2;AUJOURDHUI();"y")& SI(DATEDIF(S2;AUJOURDHUI();"y")>1;" ans, ";" an, ") & DATEDIF(S2;AUJOURDHUI();"ym") & " mois, "
& DATEDIF(S2;AUJOURDHUI();"md") & SI(DATEDIF(S2;AUJOURDHUI();"md")>1;" jours";" jour");DATEDIF(S2;T2;"y")& SI(DATEDIF(S2;T2;"y")>1;" ans, ";" an, ") & DATEDIF(S2;T2;"ym") & " mois, "& DATEDIF(S2;T2;"md") & SI(DATEDIF(S2;T2;"md")>1;" jours";" jour"))

Le problème est que si je saisi en T la date de fin de contrat et que celle-ci est postérieure à la date du jour, il me renvoie l'ancienneté en fin de contrat et non au jour d'aujourd'hui.

Sachant que la colonne T peut être vide (cas des CDI sans date de fin) ou comporter une date antérieure à aujourd'hui (cas des personnes ne faisant plus partie du personnel) ou comporter une date postérieure (cas des personnes en CDD non encore terminé).

Avec ma formule, j'ai bien l'ancienneté au jour d'aujourd'hui pour les CDI (case vide), l'ancienneté à la date de fin de contrat pour les CDD terminés, mais pas pour les CDD en cours.

Merci d'avance pour vos lumières.
Hors Ligne
Rapport   Haut 

Re: Pb formule ancienneté
#2
Accro XLPages

Inscription: 09/05/2007
De Courcelles-les-Montbéliard

Messages: 286

Système d'exploitation:
PC & Mac
Version Excel utilisée:
Mac 2004 - 2011, et PC 2003 - 2010
Posté le : 20-09-2011 18h28
Bonsoir Fred

Je ne sais pas si j'ai bien compris ta problèmatique.

Essaye la formule si dessous
=SI(S2="";"";DATEDIF(S2;MIN(T2;AUJOURDHUI());"y")& SI(DATEDIF(S2;MIN(T2;AUJOURDHUI());"y")>1;" ans, ";" an, ") & DATEDIF(S2;MIN(T2;AUJOURDHUI());"ym") & " mois, "DATEDIF(S2;MIN(T2;AUJOURDHUI());"md") &SI(DATEDIF(S2;MIN(T2;AUJOURDHUI());"md")>1;" jours";" jour"))
Dis-moi si cela marche.

@+Jean-Marie 

Hors Ligne
Rapport   Haut 

Re: Pb formule ancienneté
#3
Régulier XLPages

Inscription: 27/06/2010

Messages: 44

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2007
Posté le : 21-09-2011 16h11
Bonjour Jean-Marie,

Ta formule fonctionne nickel !

Merci bcp
Hors Ligne
Rapport   Haut 

Re: Pb formule ancienneté
#4
Régulier XLPages

Inscription: 27/06/2010

Messages: 44

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2007
Posté le : 05-10-2011 11h58

Bonjour Jean-Marie,

Je reviens vers toi concernant la formule que tu m'as donnée. Elle fonctionne nickel lorsque je saisie la date de fin de contrat directement dans la feuille excel, mais pas lorsque je saisie la date dans mon formulaire de saisie (dans ce cas là, il me donne l'ancienneté à la date du jour et non à la date de fin de CDD lorsque la personne ne fait plus partie du personnel).

J'ai beau essayé de comprendre, je ne vois pas d'où vient le pb.

Merci d'avance pour tes lumières.

Hors Ligne
Rapport   Haut 

Re: Pb formule ancienneté
#5
Accro XLPages

Inscription: 09/05/2007
De Courcelles-les-Montbéliard

Messages: 286

Système d'exploitation:
PC & Mac
Version Excel utilisée:
Mac 2004 - 2011, et PC 2003 - 2010
Posté le : 05-10-2011 12h18
Bonjour Fred777,

Tu parles d'un formulaire, ne le voyant pas, il m'est difficile de te répondre dans l'immédiat.

@+Jean-Marie 
Hors Ligne
Rapport   Haut 

Re: Pb formule ancienneté
#6
Régulier XLPages

Inscription: 27/06/2010

Messages: 44

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2007
Posté le : 05-10-2011 12h53

En fait j'ai un userform qui me sert à alimenter ma base de données avec la saisie de date de fin de CDD. La date se reporte bien dans la colonne, mais dans ce cas la formule ne fonctionne pas. Alors que si je modifie la date dans la colonne directement dans la feuille excel, là je n'ai aucun problème.

Ci dessous le bout de code de mon formulaire pour entrer la date de fin de CDD :

Private Sub TextBoxfincdd_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
End Sub

Private Sub TextBoxfincdd_Change()
    Dim Valeur As Byte
    TextBoxfincdd.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
    Valeur = Len(TextBoxfincdd)
    If Valeur = 2 Or Valeur = 5 Then TextBoxfincdd = TextBoxfincdd & "/"
End Sub


Je précise que dans ma feuille excel, la colonne est bien au format date.

Merci d'avance.
Hors Ligne
Rapport   Haut 

Re: Pb formule ancienneté
#7
Accro XLPages

Inscription: 09/05/2007
De Courcelles-les-Montbéliard

Messages: 286

Système d'exploitation:
PC & Mac
Version Excel utilisée:
Mac 2004 - 2011, et PC 2003 - 2010
Posté le : 05-10-2011 18h58
Bonsoir

Citation :
Je précise que dans ma feuille excel, la colonne est bien au format date.

Cela ne interdit pas la possibilité d'avoir une donnée texte dans une cellule de cette colonne !

Pour vérifier si la cellule contient une valeur numérique ou un texte, utilise la fonction TYPE(...), remplace ... par la référence de ta cellule hote.
Si la valeur retournée est égale à 1, la valeur est numérique, si la valeur est 2 la valeur est écrite en texte.

Si tu as la valeur 1, indique moi plus en détails les valeurs que tu as dans les cellules.
Si tu as la valeur 2, je te conseille de poster le code qui permet de fixer la valeur de ton textbox dans la cellule, et non le code du contrôle de saisie des caractères dans le textbox).

Bonne soirée.

@+Jean-Marie


Hors Ligne
Rapport   Haut 

Re: Pb formule ancienneté
#8
Régulier XLPages

Inscription: 27/06/2010

Messages: 44

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2007
Posté le : 06-10-2011 10h16
Bonjour Jean-Marie,

Effectivement, en utilisant la fonction TYPE(...)

la valeur renvoyée est 1 lorsque je saisie la date directement dans la feuille excel
la valeur renvoyée est 2 lorsque je saisie la date dans mon formulaire (userform)

Le code qui me permet de fixer la valeur de mon textbox dans la cellule :

Range("T" & Num).Value = TextBoxfincdd

Merci encore
Hors Ligne
Rapport   Haut 

Re: Pb formule ancienneté
#9
Accro XLPages

Inscription: 09/05/2007
De Courcelles-les-Montbéliard

Messages: 286

Système d'exploitation:
PC & Mac
Version Excel utilisée:
Mac 2004 - 2011, et PC 2003 - 2010
Posté le : 06-10-2011 12h41
Bonjour Fred777, Didier, le Forum

Pour répondre à ta ligne de commande, regarde avec celle-ci
Range("T" & Num).Value = CDate(TextBoxfincdd)
@+Jean-Marie 
Hors Ligne
Rapport   Haut 

Re: Pb formule ancienneté
#10
Régulier XLPages

Inscription: 27/06/2010

Messages: 44

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2007
Posté le : 06-10-2011 13h07
Jean-Marie,

C'est parfait, c'est tout ce qu'il me fallait.

Merci.

Bonne fin de journée.
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes