OVH Cloud OVH Cloud

Dates : 1/2 journée, affichage et calcul

46 réponses
Avatar
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@@

10 réponses

1 2 3 4 5
Avatar
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
-----Message d'origine-----
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@@

.



Avatar
Michel Gaboly
Bonjour J@@, et bonne année

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.



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@@


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
J
Bonjour Luc et bonne année
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
-----Message d'origine-----
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@@

.



Avatar
J
Bonjour Michel
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" <
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.



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@@


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
sabatier
si on peut dire, michel, car à papeete, au saut du lit, c'est entre 11h et
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:

Bonsoir,

La journée commence donc bien ;-))


Bonjour Michel
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" <
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.



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@@


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
Michel Gaboly
Bonsoir,

La journée commence donc bien ;-))


Bonjour Michel
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" <
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.



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@@


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
J
Oh la la! quelle mauvaise langue. Arero taero
Comme j'ai qq difficultés, je crée en vitesse un compte de news, télécharge
tout le toutim et hop me voila.
Quel traitre, remarque j'ai des ancêtres auvergnats, du côté de Laguiole, il
y a peut-être du vrai ;-)
@+
J@@

"sabatier" <
si on peut dire, michel, car à papeete, au saut du lit, c'est entre 11h et
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:

Bonsoir,

La journée commence donc bien ;-))


Bonjour Michel
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" <
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.



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@@


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com








Avatar
J
Bonjour Michel

"eh bien je n'y arrive pas :-((

J'ai mis ta proc dans Thisworkbook, mais je ne vois rien se produire, et je
n'arrive pas suivre le déroulement de la proc avec F8

1/1/04 0:00 2/1/04 0:00 1,0
1/1/04 B 02/01/2004 B #VALEUR!


Où le trompe-je???
amicalement
@+
J@@


La journée commence donc bien ;-))



"Michel Gaboly" <
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.



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????
--



Cordialement,

Michel Gaboly
http://www.gaboly.com







Avatar
J
Bonjour Michel
Ramant un max, je suis allé sur ton site et j'ai trouvé la définition de
ma situation vis à vis des secrétaires auxquelles je promets plus
d'heures de hamac et moins de dégâts aux ongles vernis: "dégradation de
l'image du développeur si cela se répète"

Pour tout dire, j'ai testé ta proc mais je ne vois rien sauf quand je
fais des calculs sur les dates comportant A ou B : #VALEUR!
Et je ne sais, pas comment faire de pas à pas sur ce type de proc (que
j'ai bien sûr mise dans ThisWorkbook)
Peut - tu m'orienter??
merci
J@@

"Michel Gaboly" <> 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.



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@@


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
Daniel.M
Salut J@@,


Pour tout dire, j'ai testé ta proc mais je ne vois rien sauf quand je
fais des calculs sur les dates comportant A ou B : #VALEUR!
Et je ne sais, pas comment faire de pas à pas sur ce type de proc (que
j'ai bien sûr mise dans ThisWorkbook)
Peut - tu m'orienter??


Très important: Mets-là dans le code de ta _FEUILLE_ (pas le code du classeur).

Pour faire du pas à pas, insère un 'breakpoint' (c'est quoi la traduction en
français? :-( ). On peut l'insérer par la touche F9 (trouve une ligne au début
de ta proc.

Pour le reste, j'ai pas suivi.

Salutations,

Daniel M.

1 2 3 4 5