Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de numéro de semaine ???

33 réponses
Avatar
LE TROLL
Bonjour,

Je n'arrive pas à avoir la bonne semaine aux extrêmes:

- J'utilise le format (ww)
- La semaine se change le lundi
- Donc à la fin de l'année il peut y avoir une semaine 53
qui passe même au début de l'autre année...
- Donc encore, pas de semaine 1 avant l'année suivant...
- Heu, c'est comme ça, désolé...

Dans Excel j'utilise ce calcul (qui fonctionne), mais je
n'y comprends rien, recopiage, lol:
=ENT((C2-SOMME(MOD(DATE(ANNEE(C2-MOD(C2-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)
C2 étant la date du jour
---------------

Mais là en VB, je n'arrive pas à retranscrire ces signes
cabalistiques...

Alors si quelqu'un a une idée de calcul avec ma semaine
53 ???

Merci, au revoir et à bientôt :o)
--
ECRIRE AU TROLL http://irolog.free.fr/letroll/index.html
------------------------------------------------------------
LE TROLL, éleveur de trolls depuis César, qui disait :
Avec une hache, celui qui tient le manche a toujours raison
!

10 réponses

1 2 3 4
Avatar
Loïc
LE TROLL a pensé très fort :
Bonjour,

Je n'arrive pas à avoir la bonne semaine aux extrêmes:

- J'utilise le format (ww)
- La semaine se change le lundi
- Donc à la fin de l'année il peut y avoir une semaine 53 qui passe même au
début de l'autre année...
- Donc encore, pas de semaine 1 avant l'année suivant...
- Heu, c'est comme ça, désolé...

Dans Excel j'utilise ce calcul (qui fonctionne), mais je n'y comprends
rien, recopiage, lol:
=ENT((C2-SOMME(MOD(DATE(ANNEE(C2-MOD(C2-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)
C2 étant la date du jour
---------------

Mais là en VB, je n'arrive pas à retranscrire ces signes cabalistiques...

Alors si quelqu'un a une idée de calcul avec ma semaine 53 ???

Merci, au revoir et à bientôt :o)



ROUND(DateDiff("d", DateSerial(Year(Date), 1, 1), Date) + 1) / 7

--
Loïc
Avatar
LE TROLL
Salut, merci, cependant, quelques explications:

ROUND(DateDiff("d", DateSerial(Year(Date), 1, 1), Date) +
1) / 7

-1-
DateDiff -> est un mot clef comme "Date" ???


-2-
"d" -> est-ce la date, si oui, je présume qu'en variable
c'est accepté aussin donc:
Au lieu de ("d",
Nous aurions (variable_la_date,

Est-ce ok ???
Avatar
LE TROLL
Resalut, ça marche pas, lol !

J'ai fait:

Dim semaine
semaine = ROUND(DateDiff(ladate, DateSerial(Year(Date), 1,
1), Date) + 1) / 7
Text3 = Text3 & semaine

(j'ai remplacé "d" par la variable <ladate>


l'interpréteur me dit:

Erreur de compilation. Procédure sub ou fonction non définie
-->ROUND<--

???
Avatar
Loïc
Après mure réflexion, LE TROLL a écrit :
Resalut, ça marche pas, lol !

J'ai fait:

Dim semaine
semaine = ROUND(DateDiff(ladate, DateSerial(Year(Date), 1, 1), Date) + 1) /
7
Text3 = Text3 & semaine

(j'ai remplacé "d" par la variable <ladate>


l'interpréteur me dit:

Erreur de compilation. Procédure sub ou fonction non définie
-->ROUND<--

???



Désolé, problème de parenthèse:


Round((DateDiff("d", DateSerial(Year(Date), 1, 1), Date) + 1) / 7)

--
Loïc
Avatar
Vincent Guichard
LE TROLL a écrit :
Salut, merci, cependant, quelques explications:

ROUND(DateDiff("d", DateSerial(Year(Date), 1, 1), Date) +
1) / 7

-1-
DateDiff -> est un mot clef comme "Date" ???


DateDiff est une fonction. Voir l'aide en ligne de vb6.*

-2-
"d" -> est-ce la date, si oui, je présume qu'en variable
c'est accepté aussin donc:
Au lieu de ("d",
Nous aurions (variable_la_date,

Est-ce ok ???



Non. C'est un champs texte qui indique comment est calculée la
différence (ici en jours). Voir l'aide de DateDiff pour plus d'infos.*

Vincent Guichard

*Si tu n'as pas msdn, tu as au moins internet...
http://www.google.fr/search?qÚteDiff+vb
Avatar
LE TROLL
Lol, je n'y comprends rien, et en plus ça plante
toujours pour la même raison:

Interpréteur = Erreur de compilation. Procédure sub ou
fonction non définie
-->ROUND<--

La formule:

Round((DateDiff("d", DateSerial(Year(Date), 1, 1), Date) +
1) / 7)

Pour moi:
semaine = Round((DateDiff("d", DateSerial(Year(Date), 1, 1),
Date) + 1) / 7)

Le fameux paramètre chaîne "d" ???
VB, aide, dit:
DateDiff(interval, date1, date2[, firstdayofweek[,
firstweekofyear]])
Interval = Expression de chaîne correspondant à l'intervalle
de temps utilisé pour calculer la différence entre date1 et
date2.
L'argument interval peut prendre les valeurs suivantes :
Valeur Description
aaaa=Année, t=Trimestre, m=Mois, a=Jour de l'année, j=Jour,
e=Jour de la semaine, ee=Semaine, h=Heure, n=Minute,
s=Seconde

OU t'as vu un "d" là dedans ???

A part ça, je disais que la date commençais le lundi, et
dans les paramètres je vois davantage le dimanche = 1 ???

En plus je ne comprends pas la formule, j'imagine:
Arrondi(valeur, X_position)
Là X_position c'est /7), c'est de facto ce qui est avant la
dernière parenthèse fermante "/7" ??? Etrange comme
arrondi...
Et la seconde valeur ,Date) c'est la date du jour, et la
première valeur c'est la date de l'année, mais je ne vois
pas là-dedans où je mets ma date à moi, que j'appelle
ladate... Dans ma formule d'origine y avait une référence à
une cellule de la date à partir de laquelle on calculait,
une variable évidemment, là elle est où ma variable ???

Bref, si on pouvait me le faire marcher, ce serait
gentil :o)

???
---------------------






"Vincent Guichard" a écrit dans
le message de news:
42f087f2$0$22313$
LE TROLL a écrit :
Salut, merci, cependant, quelques explications:

ROUND(DateDiff("d", DateSerial(Year(Date), 1, 1), Date)
+ 1) / 7

-1-
DateDiff -> est un mot clef comme "Date" ???


DateDiff est une fonction. Voir l'aide en ligne de vb6.*

-2-
"d" -> est-ce la date, si oui, je présume qu'en variable
c'est accepté aussin donc:
Au lieu de ("d",
Nous aurions (variable_la_date,

Est-ce ok ???



Non. C'est un champs texte qui indique comment est
calculée la différence (ici en jours). Voir l'aide de
DateDiff pour plus d'infos.*

Vincent Guichard

*Si tu n'as pas msdn, tu as au moins internet...
http://www.google.fr/search?qÚteDiff+vb


Avatar
LE TROLL
Lol, je n'y comprends rien, et en plus ça plante
toujours pour la même raison:

Interpréteur = Erreur de compilation. Procédure sub ou
fonction non définie
-->ROUND<--

La formule:

Round((DateDiff("d", DateSerial(Year(Date), 1, 1), Date) +
1) / 7)

Pour moi:
semaine = Round((DateDiff("d", DateSerial(Year(Date), 1, 1),
Date) + 1) / 7)

Le fameux paramètre chaîne "d" ???
VB, aide, dit:
DateDiff(interval, date1, date2[, firstdayofweek[,
firstweekofyear]])
Interval = Expression de chaîne correspondant à l'intervalle
de temps utilisé pour calculer la différence entre date1 et
date2.
L'argument interval peut prendre les valeurs suivantes :
Valeur Description
aaaa=Année, t=Trimestre, m=Mois, a=Jour de l'année, j=Jour,
e=Jour de la semaine, ee=Semaine, h=Heure, n=Minute,
s=Seconde

OU t'as vu un "d" là dedans ???

A part ça, je disais que la date commençais le lundi, et
dans les paramètres je vois davantage le dimanche = 1 ???

En plus je ne comprends pas la formule, j'imagine:
Arrondi(valeur, X_position)
Là X_position c'est /7), c'est de facto ce qui est avant la
dernière parenthèse fermante "/7" ??? Etrange comme
arrondi...
Et la seconde valeur ,Date) c'est la date du jour, et la
première valeur c'est la date de l'année, mais je ne vois
pas là-dedans où je mets ma date à moi, que j'appelle
ladate... Dans ma formule d'origine y avait une référence à
une cellule de la date à partir de laquelle on calculait,
une variable évidemment, là elle est où ma variable ???

Bref, si on pouvait me le faire marcher, ce serait
gentil :o)

???
---------------------
"Vincent Guichard" a écrit dans
le message de news:
42f087f2$0$22313$
LE TROLL a écrit :
Salut, merci, cependant, quelques explications:

ROUND(DateDiff("d", DateSerial(Year(Date), 1, 1), Date)
+ 1) / 7

-1-
DateDiff -> est un mot clef comme "Date" ???


DateDiff est une fonction. Voir l'aide en ligne de vb6.*

-2-
"d" -> est-ce la date, si oui, je présume qu'en variable
c'est accepté aussin donc:
Au lieu de ("d",
Nous aurions (variable_la_date,

Est-ce ok ???



Non. C'est un champs texte qui indique comment est
calculée la différence (ici en jours). Voir l'aide de
DateDiff pour plus d'infos.*

Vincent Guichard

*Si tu n'as pas msdn, tu as au moins internet...
http://www.google.fr/search?qÚteDiff+vb


Avatar
LE TROLL
Lol, je n'y comprends rien, et en plus ça plante
toujours pour la même raison:

Interpréteur = Erreur de compilation. Procédure sub ou
fonction non définie
-->ROUND<--

La formule:

Round((DateDiff("d", DateSerial(Year(Date), 1, 1), Date) +
1) / 7)

Pour moi:
semaine = Round((DateDiff("d", DateSerial(Year(Date), 1, 1),
Date) + 1) / 7)

Le fameux paramètre chaîne "d" ???
VB, aide, dit:
DateDiff(interval, date1, date2[, firstdayofweek[,
firstweekofyear]])
Interval = Expression de chaîne correspondant à l'intervalle
de temps utilisé pour calculer la différence entre date1 et
date2.
L'argument interval peut prendre les valeurs suivantes :
Valeur Description
aaaa=Année, t=Trimestre, m=Mois, a=Jour de l'année, j=Jour,
e=Jour de la semaine, ee=Semaine, h=Heure, n=Minute,
s=Seconde

OU t'as vu un "d" là dedans ???

A part ça, je disais que la date commençais le lundi, et
dans les paramètres je vois davantage le dimanche = 1 ???

En plus je ne comprends pas la formule, j'imagine:
Arrondi(valeur, X_position)
Là X_position c'est /7), c'est de facto ce qui est avant la
dernière parenthèse fermante "/7" ??? Etrange comme
arrondi...
Et la seconde valeur ,Date) c'est la date du jour, et la
première valeur c'est la date de l'année, mais je ne vois
pas là-dedans où je mets ma date à moi, que j'appelle
ladate... Dans ma formule d'origine y avait une référence à
une cellule de la date à partir de laquelle on calculait,
une variable évidemment, là elle est où ma variable ???

Bref, si on pouvait me le faire marcher, ce serait
gentil :o)

???
---------------------
"Loïc" a écrit dans le message de news:

Après mure réflexion, LE TROLL a écrit :
Resalut, ça marche pas, lol !

J'ai fait:

Dim semaine
semaine = ROUND(DateDiff(ladate, DateSerial(Year(Date),
1, 1), Date) + 1) / 7
Text3 = Text3 & semaine

(j'ai remplacé "d" par la variable <ladate>


l'interpréteur me dit:

Erreur de compilation. Procédure sub ou fonction non
définie
-->ROUND<--

???



Désolé, problème de parenthèse:


Round((DateDiff("d", DateSerial(Year(Date), 1, 1), Date) +
1) / 7)

--
Loïc



Avatar
Loïc
Après mure réflexion, LE TROLL a écrit :
Lol, je n'y comprends rien, et en plus ça plante
toujours pour la même raison:

Interpréteur = Erreur de compilation. Procédure sub ou
fonction non définie
-->ROUND<--

La formule:

Round((DateDiff("d", DateSerial(Year(Date), 1, 1), Date) +
1) / 7)

Pour moi:
semaine = Round((DateDiff("d", DateSerial(Year(Date), 1, 1),
Date) + 1) / 7)

Le fameux paramètre chaîne "d" ???
VB, aide, dit:
DateDiff(interval, date1, date2[, firstdayofweek[,
firstweekofyear]])
Interval = Expression de chaîne correspondant à l'intervalle
de temps utilisé pour calculer la différence entre date1 et
date2.
L'argument interval peut prendre les valeurs suivantes :
Valeur Description
aaaa=Année, t=Trimestre, m=Mois, a=Jour de l'année, j=Jour,
e=Jour de la semaine, ee=Semaine, h=Heure, n=Minute,
s=Seconde

OU t'as vu un "d" là dedans ???

A part ça, je disais que la date commençais le lundi, et
dans les paramètres je vois davantage le dimanche = 1 ???

En plus je ne comprends pas la formule, j'imagine:
Arrondi(valeur, X_position)
Là X_position c'est /7), c'est de facto ce qui est avant la
dernière parenthèse fermante "/7" ??? Etrange comme
arrondi...
Et la seconde valeur ,Date) c'est la date du jour, et la
première valeur c'est la date de l'année, mais je ne vois
pas là-dedans où je mets ma date à moi, que j'appelle
ladate... Dans ma formule d'origine y avait une référence à
une cellule de la date à partir de laquelle on calculait,
une variable évidemment, là elle est où ma variable ???

Bref, si on pouvait me le faire marcher, ce serait
gentil :o)

???
---------------------
"Loïc" a écrit dans le message de news:

Après mure réflexion, LE TROLL a écrit :
Resalut, ça marche pas, lol !

J'ai fait:

Dim semaine
semaine = ROUND(DateDiff(ladate, DateSerial(Year(Date), 1, 1), Date) +
1) / 7
Text3 = Text3 & semaine

(j'ai remplacé "d" par la variable <ladate>


l'interpréteur me dit:

Erreur de compilation. Procédure sub ou fonction non définie
-->ROUND<--

???



Désolé, problème de parenthèse:


Round((DateDiff("d", DateSerial(Year(Date), 1, 1), Date) + 1) / 7)

-- Loïc






Tu dois avoir vb5 si le round ne marche pas.

Fais comme ca alors:

Dim nNumeroSemaine as INTEGER

nNumeroSemaine = (DateDiff("d", DateSerial(Year(Date), 1, 1), Date) +
1) / 7

--
Loïc
Avatar
LE TROLL
Re-lol²²² Oui, au début j'ai dit que j'avais vb5...
Merci, je vais voir...


"Loïc" a écrit dans le message de news:

Après mure réflexion, LE TROLL a écrit :
Lol, je n'y comprends rien, et en plus ça plante
toujours pour la même raison:

Interpréteur = Erreur de compilation. Procédure sub ou
fonction non définie
-->ROUND<--

La formule:

Round((DateDiff("d", DateSerial(Year(Date), 1, 1), Date)
+
1) / 7)

Pour moi:
semaine = Round((DateDiff("d", DateSerial(Year(Date), 1,
1),
Date) + 1) / 7)

Le fameux paramètre chaîne "d" ???
VB, aide, dit:
DateDiff(interval, date1, date2[, firstdayofweek[,
firstweekofyear]])
Interval = Expression de chaîne correspondant à
l'intervalle
de temps utilisé pour calculer la différence entre date1
et
date2.
L'argument interval peut prendre les valeurs suivantes :
Valeur Description
aaaa=Année, t=Trimestre, m=Mois, a=Jour de l'année,
j=Jour,
e=Jour de la semaine, ee=Semaine, h=Heure, n=Minute,
s=Seconde

OU t'as vu un "d" là dedans ???

A part ça, je disais que la date commençais le lundi, et
dans les paramètres je vois davantage le dimanche = 1 ???

En plus je ne comprends pas la formule, j'imagine:
Arrondi(valeur, X_position)
Là X_position c'est /7), c'est de facto ce qui est avant
la
dernière parenthèse fermante "/7" ??? Etrange comme
arrondi...
Et la seconde valeur ,Date) c'est la date du jour, et la
première valeur c'est la date de l'année, mais je ne vois
pas là-dedans où je mets ma date à moi, que j'appelle
ladate... Dans ma formule d'origine y avait une référence
à
une cellule de la date à partir de laquelle on calculait,
une variable évidemment, là elle est où ma variable ???

Bref, si on pouvait me le faire marcher, ce serait
gentil :o)

???
---------------------
"Loïc" a écrit dans le message de news:

Après mure réflexion, LE TROLL a écrit :
Resalut, ça marche pas, lol !

J'ai fait:

Dim semaine
semaine = ROUND(DateDiff(ladate,
DateSerial(Year(Date), 1, 1), Date) + 1) / 7
Text3 = Text3 & semaine

(j'ai remplacé "d" par la variable <ladate>


l'interpréteur me dit:

Erreur de compilation. Procédure sub ou fonction non
définie
-->ROUND<--

???



Désolé, problème de parenthèse:


Round((DateDiff("d", DateSerial(Year(Date), 1, 1), Date)
+ 1) / 7)

-- Loïc






Tu dois avoir vb5 si le round ne marche pas.

Fais comme ca alors:

Dim nNumeroSemaine as INTEGER

nNumeroSemaine = (DateDiff("d", DateSerial(Year(Date), 1,
1), Date) + 1) / 7

--
Loïc



1 2 3 4