"Kyvu" wrote in message news:0ca101c36e3e$9c911f50$ Bonjour à tous,
J'aimerai, en VBA, codifier une date donnée.
Par exemple, j'ai en A1 une date: 28/08/2003. Ce qui nous fait...
Le 28 août tombe un jeudi, c'est le quatrième jour de la semaine.
Le 28 août tombe dans la trente-cinquième semaine de l'année.
Nous sommes en 2003.
Ce qui nous donne la codification suivante: 43503.
Voilà ce que je voudrai automatiser par macro. Pour des raisons techniques, je ne dois en aucun cas utiliser une feuille de calcul.
Quelqu'un a-t-il une idée?
Merci d'avance pour votre aide.
@micalement.
Kyvu On Line!
Pierre CFI
bonjour un début de réponse Sub nn() Debug.Print Format(#8/28/2003#, "w ww yy", vbMonday) End Sub regarde l'aide à Format et n'oublie pas qu'en vb le format des dates est US (mm/dd/yyyy)
-- Pierre CFI Microsoft MVP Access
Pour mieux utiliser microsoft.public.fr.access... http://users.skynet.be/mpfa/charte.htm
"Kyvu" a écrit dans le message de news: 0ca101c36e3e$9c911f50$ Bonjour à tous,
J'aimerai, en VBA, codifier une date donnée.
Par exemple, j'ai en A1 une date: 28/08/2003. Ce qui nous fait...
Le 28 août tombe un jeudi, c'est le quatrième jour de la semaine.
Le 28 août tombe dans la trente-cinquième semaine de l'année.
Nous sommes en 2003.
Ce qui nous donne la codification suivante: 43503.
Voilà ce que je voudrai automatiser par macro. Pour des raisons techniques, je ne dois en aucun cas utiliser une feuille de calcul.
Quelqu'un a-t-il une idée?
Merci d'avance pour votre aide.
@micalement.
Kyvu On Line!
bonjour
un début de réponse
Sub nn()
Debug.Print Format(#8/28/2003#, "w ww yy", vbMonday)
End Sub
regarde l'aide à Format et n'oublie pas qu'en vb le format des dates est US
(mm/dd/yyyy)
--
Pierre CFI
Microsoft MVP Access
Pour mieux utiliser microsoft.public.fr.access...
http://users.skynet.be/mpfa/charte.htm
"Kyvu" <kyvutran@lemel.fr> a écrit dans le message de news:
0ca101c36e3e$9c911f50$a501280a@phx.gbl...
Bonjour à tous,
J'aimerai, en VBA, codifier une date donnée.
Par exemple, j'ai en A1 une date: 28/08/2003. Ce qui nous
fait...
Le 28 août tombe un jeudi, c'est le quatrième jour de la
semaine.
Le 28 août tombe dans la trente-cinquième semaine de
l'année.
Nous sommes en 2003.
Ce qui nous donne la codification suivante: 43503.
Voilà ce que je voudrai automatiser par macro. Pour des
raisons techniques, je ne dois en aucun cas utiliser une
feuille de calcul.
bonjour un début de réponse Sub nn() Debug.Print Format(#8/28/2003#, "w ww yy", vbMonday) End Sub regarde l'aide à Format et n'oublie pas qu'en vb le format des dates est US (mm/dd/yyyy)
-- Pierre CFI Microsoft MVP Access
Pour mieux utiliser microsoft.public.fr.access... http://users.skynet.be/mpfa/charte.htm
"Kyvu" a écrit dans le message de news: 0ca101c36e3e$9c911f50$ Bonjour à tous,
J'aimerai, en VBA, codifier une date donnée.
Par exemple, j'ai en A1 une date: 28/08/2003. Ce qui nous fait...
Le 28 août tombe un jeudi, c'est le quatrième jour de la semaine.
Le 28 août tombe dans la trente-cinquième semaine de l'année.
Nous sommes en 2003.
Ce qui nous donne la codification suivante: 43503.
Voilà ce que je voudrai automatiser par macro. Pour des raisons techniques, je ne dois en aucun cas utiliser une feuille de calcul.
Quelqu'un a-t-il une idée?
Merci d'avance pour votre aide.
@micalement.
Kyvu On Line!
Daniel.M
Bonjour,
Une autre, pour le fun:
Sub Test() Debug.Print BuildStrDate(Range("A1")) End Sub
Public Function BuildStrDate(d As Date) As String BuildStrDate = Format(Format(d, "wwyy", vbMonday, _ vbFirstFourDays), "0000") BuildStrDate = Weekday(d, vbMonday) & BuildStrDate End Function
Salutations,
Daniel M.
"Kyvu" wrote in message news:0ca101c36e3e$9c911f50$ Bonjour à tous,
J'aimerai, en VBA, codifier une date donnée.
Par exemple, j'ai en A1 une date: 28/08/2003. Ce qui nous fait...
Le 28 août tombe un jeudi, c'est le quatrième jour de la semaine.
Le 28 août tombe dans la trente-cinquième semaine de l'année.
Nous sommes en 2003.
Ce qui nous donne la codification suivante: 43503.
Voilà ce que je voudrai automatiser par macro. Pour des raisons techniques, je ne dois en aucun cas utiliser une feuille de calcul.
Quelqu'un a-t-il une idée?
Merci d'avance pour votre aide.
@micalement.
Kyvu On Line!
Bonjour,
Une autre, pour le fun:
Sub Test()
Debug.Print BuildStrDate(Range("A1"))
End Sub
Public Function BuildStrDate(d As Date) As String
BuildStrDate = Format(Format(d, "wwyy", vbMonday, _
vbFirstFourDays), "0000")
BuildStrDate = Weekday(d, vbMonday) & BuildStrDate
End Function
Salutations,
Daniel M.
"Kyvu" <kyvutran@lemel.fr> wrote in message
news:0ca101c36e3e$9c911f50$a501280a@phx.gbl...
Bonjour à tous,
J'aimerai, en VBA, codifier une date donnée.
Par exemple, j'ai en A1 une date: 28/08/2003. Ce qui nous
fait...
Le 28 août tombe un jeudi, c'est le quatrième jour de la
semaine.
Le 28 août tombe dans la trente-cinquième semaine de
l'année.
Nous sommes en 2003.
Ce qui nous donne la codification suivante: 43503.
Voilà ce que je voudrai automatiser par macro. Pour des
raisons techniques, je ne dois en aucun cas utiliser une
feuille de calcul.
Sub Test() Debug.Print BuildStrDate(Range("A1")) End Sub
Public Function BuildStrDate(d As Date) As String BuildStrDate = Format(Format(d, "wwyy", vbMonday, _ vbFirstFourDays), "0000") BuildStrDate = Weekday(d, vbMonday) & BuildStrDate End Function
Salutations,
Daniel M.
"Kyvu" wrote in message news:0ca101c36e3e$9c911f50$ Bonjour à tous,
J'aimerai, en VBA, codifier une date donnée.
Par exemple, j'ai en A1 une date: 28/08/2003. Ce qui nous fait...
Le 28 août tombe un jeudi, c'est le quatrième jour de la semaine.
Le 28 août tombe dans la trente-cinquième semaine de l'année.
Nous sommes en 2003.
Ce qui nous donne la codification suivante: 43503.
Voilà ce que je voudrai automatiser par macro. Pour des raisons techniques, je ne dois en aucun cas utiliser une feuille de calcul.
Sub CodifDate() Dim d As Date, PremierJanvier As Date, j As String, s As Integer, a As String ' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date d = ActiveCell j = WeekDay(d, 2) PremierJanvier = DateSerial(Year(d), 1, 1) s = Int(d - PremierJanvier) / 7 + 1 a = Year(d) MsgBox j & s & Format(a Mod 100, "00") End Sub
Elle est à affiner pour le numéro de semaine : en effet, on peut considérer qu'une semaine commence nécessairement un lundi ou que la première semaine de l'année est celle qui commence le 1er janvier.
Il existe également une norme ISO qui considère que la première semaine est celle qui comprend au moins quatre jours de la nouvelle année.
Les différentes options possibles peuvent être obtenues avec la fonction "Format", dont voici un extrait de l'aide (Excel 98).
L'argument firstweekofyear peut prendre les valeurs suivantes :
Constante Valeur Description
vbUseSystem 0 Utilise le paramètre NLS API. vbFirstJan1 1 Commence par la semaine qui comprend le 1er janvier (valeur par défaut). vbFirstFourDays 2 Commence par la première semaine qui comprend au moins quatre jours de la nouvelle année. vbFirstFullWeek 3 Commence par la première semaine complète de l'année.
Le code devient alors :
Sub CodifDate2() Dim d As Date, j As String, a As String ' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date d = ActiveCell j = WeekDay(d, 2) a = Year(d) MsgBox j & Format(ActiveCell, "ww", vbMonday) & Format(a Mod 100, "00") End Sub
ou (norme ISO)
Sub CodifDate3() Dim d As Date, j As String, a As String ' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date d = ActiveCell j = WeekDay(d, 2) a = Year(d) MsgBox j & Format(ActiveCell, "ww", vbMonday, vbFirstFourDays) & Format(a Mod 100, "00") End Sub
Il est possible de se passer des variables :
Sub CodiDdate4() ' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date MsgBox WeekDay(ActiveCell, 2) & Format(ActiveCell, "ww", vbMonday, vbFirstFourDays) & Format(Year(ActiveCell) Mod 100, "00") End Sub
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> Bonjour, <p>Voici une solution simple : <p>Sub CodifDate() <br>Dim d As Date, PremierJanvier As Date, j As String, s As Integer, a As String <br>' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date <br> d = ActiveCell <br> j = WeekDay(d, 2) <br> PremierJanvier = DateSerial(Year(d), 1, 1) <br> s = Int(d - PremierJanvier) / 7 + 1 <br> a = Year(d) <br> MsgBox j & s & Format(a Mod 100, "00") <br>End Sub <p>Elle est à affiner pour le numéro de semaine : en effet, on peut considérer qu'une <br>semaine commence nécessairement un lundi ou que la première semaine de l'année <br>est celle qui commence le 1er janvier. <p>Il existe également une norme ISO qui considère que la première semaine est celle <br>qui comprend au moins quatre jours de la nouvelle année. <br> <p>Les différentes options possibles peuvent être obtenues avec la fonction "Format", <br>dont voici un extrait de l'aide (Excel 98). <br> <blockquote>L'argument firstweekofyear peut prendre les valeurs suivantes : <p>Constante Valeur Description <p>vbUseSystem 0 Utilise le paramètre NLS API. <br>vbFirstJan1 1 Commence par la semaine qui comprend le 1er janvier (valeur par défaut). <br>vbFirstFourDays 2 Commence par la première semaine qui comprend au moins quatre jours de la nouvelle année. <br>vbFirstFullWeek 3 Commence par la première semaine complète de l'année.</blockquote> <br>Le code devient alors : <p>Sub CodifDate2() <br>Dim d As Date, j As String, a As String <br>' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date <br> d = ActiveCell <br> j = WeekDay(d, 2) <br> a = Year(d) <br> MsgBox j & Format(ActiveCell, "ww", vbMonday) & Format(a Mod 100, "00") <br>End Sub <p>ou (norme ISO) <p>Sub CodifDate3() <br>Dim d As Date, j As String, a As String <br>' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date <br> d = ActiveCell <br> j = WeekDay(d, 2) <br> a = Year(d) <br> MsgBox j & Format(ActiveCell, "ww", vbMonday, vbFirstFourDays) & Format(a Mod 100, "00") <br>End Sub <p>Il est possible de se passer des variables : <p>Sub CodiDdate4() <br>' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date <br> MsgBox WeekDay(ActiveCell, 2) & Format(ActiveCell, "ww", vbMonday, vbFirstFourDays) & Format(Year(ActiveCell) Mod 100, "00") <br>End Sub</html>
Sub CodifDate()
Dim d As Date, PremierJanvier As Date, j As String, s As Integer, a As String
' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date
d = ActiveCell
j = WeekDay(d, 2)
PremierJanvier = DateSerial(Year(d), 1, 1)
s = Int(d - PremierJanvier) / 7 + 1
a = Year(d)
MsgBox j & s & Format(a Mod 100, "00")
End Sub
Elle est à affiner pour le numéro de semaine : en effet, on peut considérer qu'une
semaine commence nécessairement un lundi ou que la première semaine de l'année
est celle qui commence le 1er janvier.
Il existe également une norme ISO qui considère que la première semaine est celle
qui comprend au moins quatre jours de la nouvelle année.
Les différentes options possibles peuvent être obtenues avec la fonction "Format",
dont voici un extrait de l'aide (Excel 98).
L'argument firstweekofyear peut prendre les valeurs suivantes :
Constante Valeur Description
vbUseSystem 0 Utilise le paramètre NLS API.
vbFirstJan1 1 Commence par la semaine qui comprend le 1er janvier (valeur par défaut).
vbFirstFourDays 2 Commence par la première semaine qui comprend au moins quatre jours de la nouvelle année.
vbFirstFullWeek 3 Commence par la première semaine complète de l'année.
Le code devient alors :
Sub CodifDate2()
Dim d As Date, j As String, a As String
' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date
d = ActiveCell
j = WeekDay(d, 2)
a = Year(d)
MsgBox j & Format(ActiveCell, "ww", vbMonday) & Format(a Mod 100, "00")
End Sub
ou (norme ISO)
Sub CodifDate3()
Dim d As Date, j As String, a As String
' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date
d = ActiveCell
j = WeekDay(d, 2)
a = Year(d)
MsgBox j & Format(ActiveCell, "ww", vbMonday, vbFirstFourDays) & Format(a Mod 100, "00")
End Sub
Il est possible de se passer des variables :
Sub CodiDdate4()
' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date
MsgBox WeekDay(ActiveCell, 2) & Format(ActiveCell, "ww", vbMonday, vbFirstFourDays) & Format(Year(ActiveCell) Mod 100, "00")
End Sub
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
Bonjour,
<p>Voici une solution simple :
<p>Sub CodifDate()
<br>Dim d As Date, PremierJanvier As Date, j As String, s As Integer, a
As String
<br>' Un controle est à prévoir vour vérifier qu'il
s'agit bien d'une date
<br> d = ActiveCell
<br> j = WeekDay(d, 2)
<br> PremierJanvier = DateSerial(Year(d), 1, 1)
<br> s = Int(d - PremierJanvier) / 7 + 1
<br> a = Year(d)
<br> MsgBox j & s & Format(a Mod 100, "00")
<br>End Sub
<p>Elle est à affiner pour le numéro de semaine : en effet,
on peut considérer qu'une
<br>semaine commence nécessairement un lundi ou que la première
semaine de l'année
<br>est celle qui commence le 1er janvier.
<p>Il existe également une norme ISO qui considère que la
première semaine est celle
<br>qui comprend au moins quatre jours de la nouvelle année.
<br>
<p>Les différentes options possibles peuvent être obtenues
avec la fonction "Format",
<br>dont voici un extrait de l'aide (Excel 98).
<br>
<blockquote>L'argument firstweekofyear peut prendre les valeurs suivantes
:
<p>Constante Valeur Description
<p>vbUseSystem 0 Utilise le paramètre NLS API.
<br>vbFirstJan1 1 Commence par la semaine qui comprend le 1er janvier (valeur
par défaut).
<br>vbFirstFourDays 2 Commence par la première semaine qui comprend
au moins quatre jours de la nouvelle année.
<br>vbFirstFullWeek 3 Commence par la première semaine complète
de l'année.</blockquote>
<br>Le code devient alors :
<p>Sub CodifDate2()
<br>Dim d As Date, j As String, a As String
<br>' Un controle est à prévoir vour vérifier qu'il
s'agit bien d'une date
<br> d = ActiveCell
<br> j = WeekDay(d, 2)
<br> a = Year(d)
<br> MsgBox j & Format(ActiveCell, "ww", vbMonday)
& Format(a Mod 100, "00")
<br>End Sub
<p>ou (norme ISO)
<p>Sub CodifDate3()
<br>Dim d As Date, j As String, a As String
<br>' Un controle est à prévoir vour vérifier qu'il
s'agit bien d'une date
<br> d = ActiveCell
<br> j = WeekDay(d, 2)
<br> a = Year(d)
<br> MsgBox j & Format(ActiveCell, "ww", vbMonday,
vbFirstFourDays) & Format(a Mod 100, "00")
<br>End Sub
<p>Il est possible de se passer des variables :
<p>Sub CodiDdate4()
<br>' Un controle est à prévoir vour vérifier qu'il
s'agit bien d'une date
<br> MsgBox WeekDay(ActiveCell, 2) & Format(ActiveCell,
"ww", vbMonday, vbFirstFourDays) & Format(Year(ActiveCell) Mod 100,
"00")
<br>End Sub</html>
Sub CodifDate() Dim d As Date, PremierJanvier As Date, j As String, s As Integer, a As String ' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date d = ActiveCell j = WeekDay(d, 2) PremierJanvier = DateSerial(Year(d), 1, 1) s = Int(d - PremierJanvier) / 7 + 1 a = Year(d) MsgBox j & s & Format(a Mod 100, "00") End Sub
Elle est à affiner pour le numéro de semaine : en effet, on peut considérer qu'une semaine commence nécessairement un lundi ou que la première semaine de l'année est celle qui commence le 1er janvier.
Il existe également une norme ISO qui considère que la première semaine est celle qui comprend au moins quatre jours de la nouvelle année.
Les différentes options possibles peuvent être obtenues avec la fonction "Format", dont voici un extrait de l'aide (Excel 98).
L'argument firstweekofyear peut prendre les valeurs suivantes :
Constante Valeur Description
vbUseSystem 0 Utilise le paramètre NLS API. vbFirstJan1 1 Commence par la semaine qui comprend le 1er janvier (valeur par défaut). vbFirstFourDays 2 Commence par la première semaine qui comprend au moins quatre jours de la nouvelle année. vbFirstFullWeek 3 Commence par la première semaine complète de l'année.
Le code devient alors :
Sub CodifDate2() Dim d As Date, j As String, a As String ' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date d = ActiveCell j = WeekDay(d, 2) a = Year(d) MsgBox j & Format(ActiveCell, "ww", vbMonday) & Format(a Mod 100, "00") End Sub
ou (norme ISO)
Sub CodifDate3() Dim d As Date, j As String, a As String ' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date d = ActiveCell j = WeekDay(d, 2) a = Year(d) MsgBox j & Format(ActiveCell, "ww", vbMonday, vbFirstFourDays) & Format(a Mod 100, "00") End Sub
Il est possible de se passer des variables :
Sub CodiDdate4() ' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date MsgBox WeekDay(ActiveCell, 2) & Format(ActiveCell, "ww", vbMonday, vbFirstFourDays) & Format(Year(ActiveCell) Mod 100, "00") End Sub
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> Bonjour, <p>Voici une solution simple : <p>Sub CodifDate() <br>Dim d As Date, PremierJanvier As Date, j As String, s As Integer, a As String <br>' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date <br> d = ActiveCell <br> j = WeekDay(d, 2) <br> PremierJanvier = DateSerial(Year(d), 1, 1) <br> s = Int(d - PremierJanvier) / 7 + 1 <br> a = Year(d) <br> MsgBox j & s & Format(a Mod 100, "00") <br>End Sub <p>Elle est à affiner pour le numéro de semaine : en effet, on peut considérer qu'une <br>semaine commence nécessairement un lundi ou que la première semaine de l'année <br>est celle qui commence le 1er janvier. <p>Il existe également une norme ISO qui considère que la première semaine est celle <br>qui comprend au moins quatre jours de la nouvelle année. <br> <p>Les différentes options possibles peuvent être obtenues avec la fonction "Format", <br>dont voici un extrait de l'aide (Excel 98). <br> <blockquote>L'argument firstweekofyear peut prendre les valeurs suivantes : <p>Constante Valeur Description <p>vbUseSystem 0 Utilise le paramètre NLS API. <br>vbFirstJan1 1 Commence par la semaine qui comprend le 1er janvier (valeur par défaut). <br>vbFirstFourDays 2 Commence par la première semaine qui comprend au moins quatre jours de la nouvelle année. <br>vbFirstFullWeek 3 Commence par la première semaine complète de l'année.</blockquote> <br>Le code devient alors : <p>Sub CodifDate2() <br>Dim d As Date, j As String, a As String <br>' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date <br> d = ActiveCell <br> j = WeekDay(d, 2) <br> a = Year(d) <br> MsgBox j & Format(ActiveCell, "ww", vbMonday) & Format(a Mod 100, "00") <br>End Sub <p>ou (norme ISO) <p>Sub CodifDate3() <br>Dim d As Date, j As String, a As String <br>' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date <br> d = ActiveCell <br> j = WeekDay(d, 2) <br> a = Year(d) <br> MsgBox j & Format(ActiveCell, "ww", vbMonday, vbFirstFourDays) & Format(a Mod 100, "00") <br>End Sub <p>Il est possible de se passer des variables : <p>Sub CodiDdate4() <br>' Un controle est à prévoir vour vérifier qu'il s'agit bien d'une date <br> MsgBox WeekDay(ActiveCell, 2) & Format(ActiveCell, "ww", vbMonday, vbFirstFourDays) & Format(Year(ActiveCell) Mod 100, "00") <br>End Sub</html>