Dates : 1/2 journée, affichage et calcul
Le
J
Bonjour à tous et bienvenue dans cette nouvelle année
J'ai un problème de calcul de congés:
en A: date du jour de début de l'arrêt, actuellement 01/01/04
en B: date du jour de fin de l'arrêt
ensuite j'ai un calcul C=B-A
Mais l'arrêt peut être seulement de la matinée, ou de l'après-midi, ou 3
jours 1/2
Avec le format jj/mm/aa h: AM/PM , la saisie est très lourde (détail de
l'heure), et l'affichage encombrant.
Or la 1/2 journée n'est pas divisible, donc pas besoin de l'heure.
Pourrait-on saisir seulement 01/01 A (et encore seulement lorsque des
1/2 journées sont concernées) et obtenir 01/01/04 AM tout en permettant
le calcul sur cette donnée????
Je veux éviter que les gentilles secrétaires abîment leurs beaux ongles
vernis en tapant des tonnes de trucs impossibles à exploiter ensuite.
Merci pour votre solidarité
J@@
J'ai un problème de calcul de congés:
en A: date du jour de début de l'arrêt, actuellement 01/01/04
en B: date du jour de fin de l'arrêt
ensuite j'ai un calcul C=B-A
Mais l'arrêt peut être seulement de la matinée, ou de l'après-midi, ou 3
jours 1/2
Avec le format jj/mm/aa h: AM/PM , la saisie est très lourde (détail de
l'heure), et l'affichage encombrant.
Or la 1/2 journée n'est pas divisible, donc pas besoin de l'heure.
Pourrait-on saisir seulement 01/01 A (et encore seulement lorsque des
1/2 journées sont concernées) et obtenir 01/01/04 AM tout en permettant
le calcul sur cette donnée????
Je veux éviter que les gentilles secrétaires abîment leurs beaux ongles
vernis en tapant des tonnes de trucs impossibles à exploiter ensuite.
Merci pour votre solidarité
J@@

Poser une question


plus l'exemple sous les yeux.
Toutefois je me rappelle quel structure j'avais adopté
Il suffit d'avoir 4 colonne
1ère Date départ au matin
2ème Date départ à midi
3ème Date retour à midi
4ème Date retour au soir (enfin le lendemain matin)
et faire vos calculs par 1/2 si colonne 2 et 3
Mais ce système impose alors une gestion de prise de
congés par 1/2 journées minimum
Celà vous convient-il ?
Amitiés
Luc
Tu peux utiliser l'événement Change de la feuille concernée :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim c As Range
For Each c In Target
If Not IsError(CDate(Left(c, Len(c) - 2))) Then
Application.EnableEvents = False
c.NumberFormat = "d/m/yy h:mm"
Select Case Right(c, 1)
Case "A"
c = CDate(Left(c, Len(c) - 2))
Case "B"
c = CDate(Left(c, Len(c) - 2)) + 0.5
End Select
Application.EnableEvents = True
End If
Next c
End Sub
Dans cet exemple j'ai utilisé A pour le matin et B pour l'après-midi
(Case "A" et Case "B").
Le principe est le suivant : quand une ou plusieurs cellules sont modi-
fiées, on les examine une par une (Boucle For Each c In Target).
Pour chaque cellule, on teste si la conversion en date après avoir
éliminé les 2 derniers caractères (Espace + "A" ou "B" en l'occurrence)
n'aboutit pas une erreur.
On remplace alors espace + "A" par rien, ce qui correspond à la date à
0 heure et espace + "B" par 0,5, ce qui correedpond à la date à midi.
Les calculs sur les 1/2 journées sonr alors possibles.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Hélas je ne peux pas avoir 4 colonnes, la structure de la feuille ne
doit pas être modifiée.
je vais voir la proposition de Michel
encore merci
J@@
"coyote" <J'avais déjà réfléchi sur le sujet mais désolé je n'ai
plus l'exemple sous les yeux.
Toutefois je me rappelle quel structure j'avais adopté
Il suffit d'avoir 4 colonne
1ère Date départ au matin
2ème Date départ à midi
3ème Date retour à midi
4ème Date retour au soir (enfin le lendemain matin)
et faire vos calculs par 1/2 si colonne 2 et 3
Mais ce système impose alors une gestion de prise de
congés par 1/2 journées minimum
Celà vous convient-il ?
Amitiés
Luc
au saut du lit je vois ta réponse,
a priori cela me convient parfaitement,
j'emmène cela au boulot et je te tiens au courant. (dans une 12aine
d'heures)
Merci et meilleurs voeux
@+
J@@
"Michel Gaboly" <
midi...
jps
PS tu me diras, en auvergne on a coutume de dire : j'ai travaillé toute la
journée et à midi c'était fini...
Michel Gaboly wrote: