Bonsoir JPS, pas encore couché??
tu te souvient de l'épopée De Caunes à Eiao??
je n'y suis jamais allé, les chèvres ont de bonnes dents :-))
Cette proc est plus belle de jour en jour, mon classeur, depuis le
temps, est boursoufflé de mefc, boutons, proc diverses et quand on
l'ouvre on a l'impression d'une Chevrolet Corvette qui prépare un 400
départ arrété: ça glougloutte de partout et ça sent la nitro :-)
j'ai donné des gants et des chaussures de pilote à la secrétaire, qui
doit boucler sa ceinture (on est jamais trop prudent) et mettre un
casque.
Ca arrache
:-)))
J@@
"sabatier" <...'tain, qu'est ce qu'on est choyé quand on est à dache...tu devrais
pousser jusqu'àEiao, J@@, là tu es sûr que le trop rare ttigre serait archi battu
quant à laconstruction de cette proc qui n'en finit pas de finir...
jps
Michel Gaboly wrote:Bonjour J@@,
J'étais absent depuis vendredi soir ; c'est pour cela que je n'ai
pas réagi depuis.A nouveau à ta disposition pour finaliser la procédure si nécessaire
;-))La procédure suivante considère le premier nombre comme le Jour,
le 2e comme leMois, le 3e comme l'Année.
L'omission d'un des 3 nombres retourne l'entrée courante (jour
courant, moiscourant, année courante).
Donc 3 nombres ==> le jour + le mois + l'année
Donc 2 nombres ==> le jour + le mois, puis année courante
Donc 1 nombre ==> le jour, puis mois et année courante
Si tu mets un A: c'est une entrée AM. Si tu mets un P, c'est une
entrée PM.
Exemples:
A ==> 4 jan 2004 0:00 AM
P ==> 4 jan 2004 12:00 PM
6 A ==> 6 jan 2004 0:00 AM
7P ==> 7 jan 2004 12:00 PM
7 2P ==> 7 fév 2004 12:00 PM
... etc
Le code suivante utilise Split() disponible depuis Excel 2000. Si
tu as un Excelplus vieux, remplace par Split97() que tu vas récupérer sur le
site de FrédéricSigonneau.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target
As Range)Dim C As Range, s As String, V As Variant
Dim Valide As Boolean, AM As Boolean, i As Integer
Dim lAn As Integer, leMois As Integer, leJour As Integer
For Each C In Target
If C.Column > 10 And C.Column < 13 And C.Row >= 13 Then
If Len(Application.Substitute(C.Text, " ", "")) < 6 Then
' une entrée abbréviée, qu'on doit convertir
s = Application.Substitute(UCase(C.Text), "A", " A")
s = Application.Substitute(s, "B", " B")
V = Split(s, " ")
Valide = True
For i = LBound(V) To UBound(V)
If IsNumeric(V(i)) Then ' Un chiffre
If leJour = 0 Then
leJour = V(i)
ElseIf leMois = 0 Then
leMois = V(i)
ElseIf lAn = 0 Then
lAn = V(i)
Else
Valide = False
End If
Else ' indicateur AM ou PM
If V(i) = "A" Then
AM = True
ElseIf V(i) = "P" Then
AM = False
ElseIf V(i) <> "" Then 'autre chose==> erreur!
Valide = False
End If
End If
Next i
' mets les entrées par défaut (i.e. le jour courant)
' pour celles qui ne sont pas saisies
If leJour = 0 Then leJour = Day(Date)
If leMois = 0 Then leMois = Month(Date)
If lAn = 0 Then lAn = Year(Date)
'Si pas valide, on ne touche à rien
If Valide Then
Application.EnableEvents = False
C = DateSerial(lAn, leMois, leJour) + IIf(AM, 0,
0.5)Application.EnableEvents = True
' on devrait mettre le bon format ici
'C.NumberFormat = "le format qu'on veut"
End If
End If
End If
Next C
End Sub
Daniel M.
"J@@" <> > > > **situation:jours 1 à 31 => saisir 2 chiffres
mois 1 à 12 => saisir 2 chiffres
pour les jours entiers, il n'est pas nécessaire de préciser A,
le pb se pose si le matin seulement est concerné, donc la saisie
de ladate de reprise contient P.
saisie:
20 01 (option 04) (option p ou P)
possibilité d'ajouter l'année quand risque d'ambiguïté 04 05 ...
ou P ou p pour être insensible à la casse)
omettre le slash / gagne du temps mais cela ne risque t il pas
deperturber les utilisateurs??
résultat:
20/01/04 0:00
20/01/04 12:00
ce qui est l'heure du début de l'action (arrêt ou reprise),
c'est bienvisuel, et cela se calcule.
J@@
"Daniel.M" <..."J@@" <> Alors, j'attends que tu identifies ici les manières
abrégéesd'inscription desentrées et les résultats finaux (i.e. des dates qui pourront
ensuiteêtretraités par une macro qui fait des compilation).
Cette liste comprend :
Types d'inscription DÉSIRÉES (pas celles qu'elles faisaient
auparavant, cellesqu'elles doivent faire selon TOI) et les transformations
attendues(comment lesnouvelles entrées sont interprétées pour donner des dates)
Les exemples que tu donnes sont DÉJÀ des dates. Si tu veux
simplifierla saisie,tu t'attends à ce qu'on soit bref dans la saisie.
1 1 A ==> 1 jan 2004 0:00 AM ' par exemple
4 5 P ==> 4 mai 2004 12:00 PM ' par exemple
C'est juste des exemples, j'attends les tiens.
Daniel M.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonsoir JPS, pas encore couché??
tu te souvient de l'épopée De Caunes à Eiao??
je n'y suis jamais allé, les chèvres ont de bonnes dents :-))
Cette proc est plus belle de jour en jour, mon classeur, depuis le
temps, est boursoufflé de mefc, boutons, proc diverses et quand on
l'ouvre on a l'impression d'une Chevrolet Corvette qui prépare un 400
départ arrété: ça glougloutte de partout et ça sent la nitro :-)
j'ai donné des gants et des chaussures de pilote à la secrétaire, qui
doit boucler sa ceinture (on est jamais trop prudent) et mettre un
casque.
Ca arrache
:-)))
J@@
"sabatier" <...
'tain, qu'est ce qu'on est choyé quand on est à dache...tu devrais
pousser jusqu'à
Eiao, J@@, là tu es sûr que le trop rare ttigre serait archi battu
quant à la
construction de cette proc qui n'en finit pas de finir...
jps
Michel Gaboly wrote:
Bonjour J@@,
J'étais absent depuis vendredi soir ; c'est pour cela que je n'ai
pas réagi depuis.
A nouveau à ta disposition pour finaliser la procédure si nécessaire
;-))
La procédure suivante considère le premier nombre comme le Jour,
le 2e comme le
Mois, le 3e comme l'Année.
L'omission d'un des 3 nombres retourne l'entrée courante (jour
courant, mois
courant, année courante).
Donc 3 nombres ==> le jour + le mois + l'année
Donc 2 nombres ==> le jour + le mois, puis année courante
Donc 1 nombre ==> le jour, puis mois et année courante
Si tu mets un A: c'est une entrée AM. Si tu mets un P, c'est une
entrée PM.
Exemples:
A ==> 4 jan 2004 0:00 AM
P ==> 4 jan 2004 12:00 PM
6 A ==> 6 jan 2004 0:00 AM
7P ==> 7 jan 2004 12:00 PM
7 2P ==> 7 fév 2004 12:00 PM
... etc
Le code suivante utilise Split() disponible depuis Excel 2000. Si
tu as un Excel
plus vieux, remplace par Split97() que tu vas récupérer sur le
site de Frédéric
Sigonneau.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target
As Range)
Dim C As Range, s As String, V As Variant
Dim Valide As Boolean, AM As Boolean, i As Integer
Dim lAn As Integer, leMois As Integer, leJour As Integer
For Each C In Target
If C.Column > 10 And C.Column < 13 And C.Row >= 13 Then
If Len(Application.Substitute(C.Text, " ", "")) < 6 Then
' une entrée abbréviée, qu'on doit convertir
s = Application.Substitute(UCase(C.Text), "A", " A")
s = Application.Substitute(s, "B", " B")
V = Split(s, " ")
Valide = True
For i = LBound(V) To UBound(V)
If IsNumeric(V(i)) Then ' Un chiffre
If leJour = 0 Then
leJour = V(i)
ElseIf leMois = 0 Then
leMois = V(i)
ElseIf lAn = 0 Then
lAn = V(i)
Else
Valide = False
End If
Else ' indicateur AM ou PM
If V(i) = "A" Then
AM = True
ElseIf V(i) = "P" Then
AM = False
ElseIf V(i) <> "" Then 'autre chose==> erreur!
Valide = False
End If
End If
Next i
' mets les entrées par défaut (i.e. le jour courant)
' pour celles qui ne sont pas saisies
If leJour = 0 Then leJour = Day(Date)
If leMois = 0 Then leMois = Month(Date)
If lAn = 0 Then lAn = Year(Date)
'Si pas valide, on ne touche à rien
If Valide Then
Application.EnableEvents = False
C = DateSerial(lAn, leMois, leJour) + IIf(AM, 0,
0.5)
Application.EnableEvents = True
' on devrait mettre le bon format ici
'C.NumberFormat = "le format qu'on veut"
End If
End If
End If
Next C
End Sub
Daniel M.
"J@@" <> > > > **situation:
jours 1 à 31 => saisir 2 chiffres
mois 1 à 12 => saisir 2 chiffres
pour les jours entiers, il n'est pas nécessaire de préciser A,
le pb se pose si le matin seulement est concerné, donc la saisie
de la
date de reprise contient P.
saisie:
20 01 (option 04) (option p ou P)
possibilité d'ajouter l'année quand risque d'ambiguïté 04 05 ...
ou P ou p pour être insensible à la casse)
omettre le slash / gagne du temps mais cela ne risque t il pas
de
perturber les utilisateurs??
résultat:
20/01/04 0:00
20/01/04 12:00
ce qui est l'heure du début de l'action (arrêt ou reprise),
c'est bien
visuel, et cela se calcule.
J@@
"Daniel.M" <...
"J@@" <> Alors, j'attends que tu identifies ici les manières
abrégées
d'inscription des
entrées et les résultats finaux (i.e. des dates qui pourront
ensuite
être
traités par une macro qui fait des compilation).
Cette liste comprend :
Types d'inscription DÉSIRÉES (pas celles qu'elles faisaient
auparavant, celles
qu'elles doivent faire selon TOI) et les transformations
attendues
(comment les
nouvelles entrées sont interprétées pour donner des dates)
Les exemples que tu donnes sont DÉJÀ des dates. Si tu veux
simplifier
la saisie,
tu t'attends à ce qu'on soit bref dans la saisie.
1 1 A ==> 1 jan 2004 0:00 AM ' par exemple
4 5 P ==> 4 mai 2004 12:00 PM ' par exemple
C'est juste des exemples, j'attends les tiens.
Daniel M.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonsoir JPS, pas encore couché??
tu te souvient de l'épopée De Caunes à Eiao??
je n'y suis jamais allé, les chèvres ont de bonnes dents :-))
Cette proc est plus belle de jour en jour, mon classeur, depuis le
temps, est boursoufflé de mefc, boutons, proc diverses et quand on
l'ouvre on a l'impression d'une Chevrolet Corvette qui prépare un 400
départ arrété: ça glougloutte de partout et ça sent la nitro :-)
j'ai donné des gants et des chaussures de pilote à la secrétaire, qui
doit boucler sa ceinture (on est jamais trop prudent) et mettre un
casque.
Ca arrache
:-)))
J@@
"sabatier" <...'tain, qu'est ce qu'on est choyé quand on est à dache...tu devrais
pousser jusqu'àEiao, J@@, là tu es sûr que le trop rare ttigre serait archi battu
quant à laconstruction de cette proc qui n'en finit pas de finir...
jps
Michel Gaboly wrote:Bonjour J@@,
J'étais absent depuis vendredi soir ; c'est pour cela que je n'ai
pas réagi depuis.A nouveau à ta disposition pour finaliser la procédure si nécessaire
;-))La procédure suivante considère le premier nombre comme le Jour,
le 2e comme leMois, le 3e comme l'Année.
L'omission d'un des 3 nombres retourne l'entrée courante (jour
courant, moiscourant, année courante).
Donc 3 nombres ==> le jour + le mois + l'année
Donc 2 nombres ==> le jour + le mois, puis année courante
Donc 1 nombre ==> le jour, puis mois et année courante
Si tu mets un A: c'est une entrée AM. Si tu mets un P, c'est une
entrée PM.
Exemples:
A ==> 4 jan 2004 0:00 AM
P ==> 4 jan 2004 12:00 PM
6 A ==> 6 jan 2004 0:00 AM
7P ==> 7 jan 2004 12:00 PM
7 2P ==> 7 fév 2004 12:00 PM
... etc
Le code suivante utilise Split() disponible depuis Excel 2000. Si
tu as un Excelplus vieux, remplace par Split97() que tu vas récupérer sur le
site de FrédéricSigonneau.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target
As Range)Dim C As Range, s As String, V As Variant
Dim Valide As Boolean, AM As Boolean, i As Integer
Dim lAn As Integer, leMois As Integer, leJour As Integer
For Each C In Target
If C.Column > 10 And C.Column < 13 And C.Row >= 13 Then
If Len(Application.Substitute(C.Text, " ", "")) < 6 Then
' une entrée abbréviée, qu'on doit convertir
s = Application.Substitute(UCase(C.Text), "A", " A")
s = Application.Substitute(s, "B", " B")
V = Split(s, " ")
Valide = True
For i = LBound(V) To UBound(V)
If IsNumeric(V(i)) Then ' Un chiffre
If leJour = 0 Then
leJour = V(i)
ElseIf leMois = 0 Then
leMois = V(i)
ElseIf lAn = 0 Then
lAn = V(i)
Else
Valide = False
End If
Else ' indicateur AM ou PM
If V(i) = "A" Then
AM = True
ElseIf V(i) = "P" Then
AM = False
ElseIf V(i) <> "" Then 'autre chose==> erreur!
Valide = False
End If
End If
Next i
' mets les entrées par défaut (i.e. le jour courant)
' pour celles qui ne sont pas saisies
If leJour = 0 Then leJour = Day(Date)
If leMois = 0 Then leMois = Month(Date)
If lAn = 0 Then lAn = Year(Date)
'Si pas valide, on ne touche à rien
If Valide Then
Application.EnableEvents = False
C = DateSerial(lAn, leMois, leJour) + IIf(AM, 0,
0.5)Application.EnableEvents = True
' on devrait mettre le bon format ici
'C.NumberFormat = "le format qu'on veut"
End If
End If
End If
Next C
End Sub
Daniel M.
"J@@" <> > > > **situation:jours 1 à 31 => saisir 2 chiffres
mois 1 à 12 => saisir 2 chiffres
pour les jours entiers, il n'est pas nécessaire de préciser A,
le pb se pose si le matin seulement est concerné, donc la saisie
de ladate de reprise contient P.
saisie:
20 01 (option 04) (option p ou P)
possibilité d'ajouter l'année quand risque d'ambiguïté 04 05 ...
ou P ou p pour être insensible à la casse)
omettre le slash / gagne du temps mais cela ne risque t il pas
deperturber les utilisateurs??
résultat:
20/01/04 0:00
20/01/04 12:00
ce qui est l'heure du début de l'action (arrêt ou reprise),
c'est bienvisuel, et cela se calcule.
J@@
"Daniel.M" <..."J@@" <> Alors, j'attends que tu identifies ici les manières
abrégéesd'inscription desentrées et les résultats finaux (i.e. des dates qui pourront
ensuiteêtretraités par une macro qui fait des compilation).
Cette liste comprend :
Types d'inscription DÉSIRÉES (pas celles qu'elles faisaient
auparavant, cellesqu'elles doivent faire selon TOI) et les transformations
attendues(comment lesnouvelles entrées sont interprétées pour donner des dates)
Les exemples que tu donnes sont DÉJÀ des dates. Si tu veux
simplifierla saisie,tu t'attends à ce qu'on soit bref dans la saisie.
1 1 A ==> 1 jan 2004 0:00 AM ' par exemple
4 5 P ==> 4 mai 2004 12:00 PM ' par exemple
C'est juste des exemples, j'attends les tiens.
Daniel M.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonsoir JPS, pas encore couché??
tu te souvient de l'épopée De Caunes à Eiao??
je n'y suis jamais allé, les chèvres ont de bonnes dents :-))
Bonsoir JPS, pas encore couché??
tu te souvient de l'épopée De Caunes à Eiao??
je n'y suis jamais allé, les chèvres ont de bonnes dents :-))
Bonsoir JPS, pas encore couché??
tu te souvient de l'épopée De Caunes à Eiao??
je n'y suis jamais allé, les chèvres ont de bonnes dents :-))
La procédure suivante ne règle pas le problème fondamental (auquel je
réfléchi)
mais corrige les petits bobos.
La procédure suivante ne règle pas le problème fondamental (auquel je
réfléchi)
mais corrige les petits bobos.
La procédure suivante ne règle pas le problème fondamental (auquel je
réfléchi)
mais corrige les petits bobos.
J@@,La procédure suivante ne règle pas le problème fondamental (auquel je
réfléchi)mais corrige les petits bobos.
Aurais-tu objection à avoir utiliser une colonne supplémentaire?
La première col K conserve les saisies et la deuxième (M) est celle où apparaît
la bonne traduction. Même chose entre colonnes L et N.
J'attends ta réponse.
Salutations,
Daniel M.
J@@,
La procédure suivante ne règle pas le problème fondamental (auquel je
réfléchi)
mais corrige les petits bobos.
Aurais-tu objection à avoir utiliser une colonne supplémentaire?
La première col K conserve les saisies et la deuxième (M) est celle où apparaît
la bonne traduction. Même chose entre colonnes L et N.
J'attends ta réponse.
Salutations,
Daniel M.
J@@,La procédure suivante ne règle pas le problème fondamental (auquel je
réfléchi)mais corrige les petits bobos.
Aurais-tu objection à avoir utiliser une colonne supplémentaire?
La première col K conserve les saisies et la deuxième (M) est celle où apparaît
la bonne traduction. Même chose entre colonnes L et N.
J'attends ta réponse.
Salutations,
Daniel M.
La question est donc: comment on fait pour voir une différence entre
les deux
saisies suivantes:
1
1900/01/01
Surtout lorsque la cellule est déjà formattée en date.
Présentement, je ne le sais pas. Sinon passer par un UserForm à chaque
fois. :-(
_________________________*= l'espace entre les chiffres est impératif sous peine d'erreur.
Oui, il faut imposer l'espace.
OK
_________________________Décidément ce n'est pas simple
En effet, le problème fondamental demeure.
Comment savoir ce qui est VRAIMENT saisi AVANT qu'Excel ne le
transforme.
La procédure suivante ne règle pas le problème fondamental (auquel je
réfléchi)
mais corrige les petits bobos.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
Dim C As Range, s As String, V As Variant
Dim Valide As Boolean, AM As Boolean, i As Integer
Dim lAn As Integer, leMois As Integer, leJour As Integer
For Each C In Target
If C.Column > 10 And C.Column < 13 And C.Row >= 13 Then
' Debug.Print C.Text, C.Value
i = Len(Application.Substitute(C.Text, " ", ""))
If i < 6 And i > 0 Then ' une entrée abbréviée, qu'on doit
convertir
s = Application.Substitute(UCase(C.Text), "A", " A")
s = Application.Substitute(s, "P", " P")
V = Split(s, " ")
Valide = True
AM = True
For i = LBound(V) To UBound(V)
If IsNumeric(V(i)) Then ' Un chiffre
If leJour = 0 Then
leJour = V(i)
ElseIf leMois = 0 Then
leMois = V(i)
ElseIf lAn = 0 Then
lAn = V(i)
Else
Valide = False
End If
Else ' indicateur AM ou PM
If V(i) = "A" Then
AM = True
ElseIf V(i) = "P" Then
AM = False
ElseIf V(i) <> "" Then 'autre chose==> erreur!
Valide = False
End If
End If
Next i
' mets les entrées par défaut (i.e. le jour courant)
If leJour = 0 Then leJour = Day(Date)
If leMois = 0 Then leMois = Month(Date)
If lAn = 0 Then lAn = Year(Date)
'Si pas valide, on ne touche à rien
If Valide Then
Application.EnableEvents = False
C = DateSerial(lAn, leMois, leJour) + IIf(AM, 0, 0.5)
Application.EnableEvents = True
' on devrait mettre le bon format ici
C.NumberFormat = "dd/mm/yyyy h:mm"
End If
End If
End If
Next C
End Sub
Salutations,
Daniel M.
La question est donc: comment on fait pour voir une différence entre
les deux
saisies suivantes:
1
1900/01/01
Surtout lorsque la cellule est déjà formattée en date.
Présentement, je ne le sais pas. Sinon passer par un UserForm à chaque
fois. :-(
_________________________
*= l'espace entre les chiffres est impératif sous peine d'erreur.
Oui, il faut imposer l'espace.
OK
_________________________
Décidément ce n'est pas simple
En effet, le problème fondamental demeure.
Comment savoir ce qui est VRAIMENT saisi AVANT qu'Excel ne le
transforme.
La procédure suivante ne règle pas le problème fondamental (auquel je
réfléchi)
mais corrige les petits bobos.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
Dim C As Range, s As String, V As Variant
Dim Valide As Boolean, AM As Boolean, i As Integer
Dim lAn As Integer, leMois As Integer, leJour As Integer
For Each C In Target
If C.Column > 10 And C.Column < 13 And C.Row >= 13 Then
' Debug.Print C.Text, C.Value
i = Len(Application.Substitute(C.Text, " ", ""))
If i < 6 And i > 0 Then ' une entrée abbréviée, qu'on doit
convertir
s = Application.Substitute(UCase(C.Text), "A", " A")
s = Application.Substitute(s, "P", " P")
V = Split(s, " ")
Valide = True
AM = True
For i = LBound(V) To UBound(V)
If IsNumeric(V(i)) Then ' Un chiffre
If leJour = 0 Then
leJour = V(i)
ElseIf leMois = 0 Then
leMois = V(i)
ElseIf lAn = 0 Then
lAn = V(i)
Else
Valide = False
End If
Else ' indicateur AM ou PM
If V(i) = "A" Then
AM = True
ElseIf V(i) = "P" Then
AM = False
ElseIf V(i) <> "" Then 'autre chose==> erreur!
Valide = False
End If
End If
Next i
' mets les entrées par défaut (i.e. le jour courant)
If leJour = 0 Then leJour = Day(Date)
If leMois = 0 Then leMois = Month(Date)
If lAn = 0 Then lAn = Year(Date)
'Si pas valide, on ne touche à rien
If Valide Then
Application.EnableEvents = False
C = DateSerial(lAn, leMois, leJour) + IIf(AM, 0, 0.5)
Application.EnableEvents = True
' on devrait mettre le bon format ici
C.NumberFormat = "dd/mm/yyyy h:mm"
End If
End If
End If
Next C
End Sub
Salutations,
Daniel M.
La question est donc: comment on fait pour voir une différence entre
les deux
saisies suivantes:
1
1900/01/01
Surtout lorsque la cellule est déjà formattée en date.
Présentement, je ne le sais pas. Sinon passer par un UserForm à chaque
fois. :-(
_________________________*= l'espace entre les chiffres est impératif sous peine d'erreur.
Oui, il faut imposer l'espace.
OK
_________________________Décidément ce n'est pas simple
En effet, le problème fondamental demeure.
Comment savoir ce qui est VRAIMENT saisi AVANT qu'Excel ne le
transforme.
La procédure suivante ne règle pas le problème fondamental (auquel je
réfléchi)
mais corrige les petits bobos.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
Dim C As Range, s As String, V As Variant
Dim Valide As Boolean, AM As Boolean, i As Integer
Dim lAn As Integer, leMois As Integer, leJour As Integer
For Each C In Target
If C.Column > 10 And C.Column < 13 And C.Row >= 13 Then
' Debug.Print C.Text, C.Value
i = Len(Application.Substitute(C.Text, " ", ""))
If i < 6 And i > 0 Then ' une entrée abbréviée, qu'on doit
convertir
s = Application.Substitute(UCase(C.Text), "A", " A")
s = Application.Substitute(s, "P", " P")
V = Split(s, " ")
Valide = True
AM = True
For i = LBound(V) To UBound(V)
If IsNumeric(V(i)) Then ' Un chiffre
If leJour = 0 Then
leJour = V(i)
ElseIf leMois = 0 Then
leMois = V(i)
ElseIf lAn = 0 Then
lAn = V(i)
Else
Valide = False
End If
Else ' indicateur AM ou PM
If V(i) = "A" Then
AM = True
ElseIf V(i) = "P" Then
AM = False
ElseIf V(i) <> "" Then 'autre chose==> erreur!
Valide = False
End If
End If
Next i
' mets les entrées par défaut (i.e. le jour courant)
If leJour = 0 Then leJour = Day(Date)
If leMois = 0 Then leMois = Month(Date)
If lAn = 0 Then lAn = Year(Date)
'Si pas valide, on ne touche à rien
If Valide Then
Application.EnableEvents = False
C = DateSerial(lAn, leMois, leJour) + IIf(AM, 0, 0.5)
Application.EnableEvents = True
' on devrait mettre le bon format ici
C.NumberFormat = "dd/mm/yyyy h:mm"
End If
End If
End If
Next C
End Sub
Salutations,
Daniel M.
La procédure suivante ne règle pas le problème fondamental (auquel
je
réfléchi)mais corrige les petits bobos.
Aurais-tu objection à avoir utiliser une colonne supplémentaire?
La première col K conserve les saisies et la deuxième (M) est celle où
apparaît
la bonne traduction. Même chose entre colonnes L et N.
J'attends ta réponse.
Salutations,
Daniel M.
La procédure suivante ne règle pas le problème fondamental (auquel
je
réfléchi)
mais corrige les petits bobos.
Aurais-tu objection à avoir utiliser une colonne supplémentaire?
La première col K conserve les saisies et la deuxième (M) est celle où
apparaît
la bonne traduction. Même chose entre colonnes L et N.
J'attends ta réponse.
Salutations,
Daniel M.
La procédure suivante ne règle pas le problème fondamental (auquel
je
réfléchi)mais corrige les petits bobos.
Aurais-tu objection à avoir utiliser une colonne supplémentaire?
La première col K conserve les saisies et la deuxième (M) est celle où
apparaît
la bonne traduction. Même chose entre colonnes L et N.
J'attends ta réponse.
Salutations,
Daniel M.
La forme de mon formulaire m'est imposée.
Je pourrai toutefois garder les colonnes masquées, mais sans pouvoir
contrôler aisément la saisie.
Pas moyen d'éviter??
La forme de mon formulaire m'est imposée.
Je pourrai toutefois garder les colonnes masquées, mais sans pouvoir
contrôler aisément la saisie.
Pas moyen d'éviter??
La forme de mon formulaire m'est imposée.
Je pourrai toutefois garder les colonnes masquées, mais sans pouvoir
contrôler aisément la saisie.
Pas moyen d'éviter??
La forme de mon formulaire m'est imposée.
Ton formulaire? Parles-tu d'un UserForm ou de la disposition de ta
feuille?
Je pourrai toutefois garder les colonnes masquées, mais sans pouvoir
contrôler aisément la saisie.
J'ai pas compris.
Les agents qui réalisent ce travail sont facilement déroutés par une
Pas moyen d'éviter??
Lors d'une saisie dans une cellule, je ne crois pas que l'on puisse
obtenir
exactement ce que l'usager inscrit. On est 'condamné' à utiliser
l'interprétation première que Excel fait de cette saisie.
C'est pourquoi un UserForm te simplifierait la vie.
Ou l'utilisation de 2 colonnes supplémentaires dans lesquelles les
transformations appropriées seraient générées automatiquement (par le
code dans
l'événement).
Il suffirait de mettre les colonnes de saisie sous format Texte (pour
éviter
l'interprétation première d'Excel).
AMA, cette dernière solution me paraît convenable. L'usager saisie la
forme
abrégée en K:L et la 'bonne' date est générée automatiquement en M:N
(ou
ailleurs sur la feuille).
Laisse-moi savoir si ça te convient.
Ma foi, oui; le but est d'arriver à avoir des résultats fiables et
La forme de mon formulaire m'est imposée.
Ton formulaire? Parles-tu d'un UserForm ou de la disposition de ta
feuille?
Je pourrai toutefois garder les colonnes masquées, mais sans pouvoir
contrôler aisément la saisie.
J'ai pas compris.
Les agents qui réalisent ce travail sont facilement déroutés par une
Pas moyen d'éviter??
Lors d'une saisie dans une cellule, je ne crois pas que l'on puisse
obtenir
exactement ce que l'usager inscrit. On est 'condamné' à utiliser
l'interprétation première que Excel fait de cette saisie.
C'est pourquoi un UserForm te simplifierait la vie.
Ou l'utilisation de 2 colonnes supplémentaires dans lesquelles les
transformations appropriées seraient générées automatiquement (par le
code dans
l'événement).
Il suffirait de mettre les colonnes de saisie sous format Texte (pour
éviter
l'interprétation première d'Excel).
AMA, cette dernière solution me paraît convenable. L'usager saisie la
forme
abrégée en K:L et la 'bonne' date est générée automatiquement en M:N
(ou
ailleurs sur la feuille).
Laisse-moi savoir si ça te convient.
Ma foi, oui; le but est d'arriver à avoir des résultats fiables et
La forme de mon formulaire m'est imposée.
Ton formulaire? Parles-tu d'un UserForm ou de la disposition de ta
feuille?
Je pourrai toutefois garder les colonnes masquées, mais sans pouvoir
contrôler aisément la saisie.
J'ai pas compris.
Les agents qui réalisent ce travail sont facilement déroutés par une
Pas moyen d'éviter??
Lors d'une saisie dans une cellule, je ne crois pas que l'on puisse
obtenir
exactement ce que l'usager inscrit. On est 'condamné' à utiliser
l'interprétation première que Excel fait de cette saisie.
C'est pourquoi un UserForm te simplifierait la vie.
Ou l'utilisation de 2 colonnes supplémentaires dans lesquelles les
transformations appropriées seraient générées automatiquement (par le
code dans
l'événement).
Il suffirait de mettre les colonnes de saisie sous format Texte (pour
éviter
l'interprétation première d'Excel).
AMA, cette dernière solution me paraît convenable. L'usager saisie la
forme
abrégée en K:L et la 'bonne' date est générée automatiquement en M:N
(ou
ailleurs sur la feuille).
Laisse-moi savoir si ça te convient.
Ma foi, oui; le but est d'arriver à avoir des résultats fiables et
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@@
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@@
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@@
Ou l'utilisation de 2 colonnes supplémentaires dans lesquelles les
transformations appropriées seraient générées automatiquement
(par le code dans l'événement).
Il suffirait de mettre les colonnes de saisie sous format
Texte (pour éviter l'interprétation première d'Excel).
Laisse-moi savoir si ça te convient.
Ma foi, oui; le but est d'arriver à avoir des résultats fiables et
calculables.
Ou l'utilisation de 2 colonnes supplémentaires dans lesquelles les
transformations appropriées seraient générées automatiquement
(par le code dans l'événement).
Il suffirait de mettre les colonnes de saisie sous format
Texte (pour éviter l'interprétation première d'Excel).
Laisse-moi savoir si ça te convient.
Ma foi, oui; le but est d'arriver à avoir des résultats fiables et
calculables.
Ou l'utilisation de 2 colonnes supplémentaires dans lesquelles les
transformations appropriées seraient générées automatiquement
(par le code dans l'événement).
Il suffirait de mettre les colonnes de saisie sous format
Texte (pour éviter l'interprétation première d'Excel).
Laisse-moi savoir si ça te convient.
Ma foi, oui; le but est d'arriver à avoir des résultats fiables et
calculables.