Installation fonction NO.SEMAINE

  • Initiateur de la discussion Initiateur de la discussion klm
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

K

klm

Guest
Salut a tous! je vous explique mon probleme, j'ai besoin d'utiliser la fonction NO.SEMAINE pour une entreprise ou je fait mon stage,
la bas pas de souci pour l'installation
outils -> macro complementaire
et ca roule!

mais chez moi impossible de l'installer sachant que je n'ai pas le cd EXCEL, y a-t-il un endroit ou je pourrais telecharger la fonction?
ou par un autre moyen?

j'utilise Excel 2003, merci d'avance c'est trés important !!!
😱
 
Re : Installation fonction NO.SEMAINE

Bonsoir à tous,
Je n'ajouterai pas grand chose à cette discussion si ce n'est un "merci !" aux excellents Monique et JCGL pour la formule simple
Code:
=ENT(MOD(ENT((C2-2)/7)+0.6;52+5/28))+1
que je ne connaissais pas. Attention toutefois au domaine de validité : mer-31-déc-2104 renvoie 53 au lieu du 1 attendu. Mais d'ici-là, on a le temps de voir venir !
Je joins un tableau comparatif des résultats comparés de la fonction NO.SEMAINE(), version américaine (colonne MS-A) et européenne (colonne MS-I) avec la fonction ISO
Code:
=ENT((A3-SOMME(MOD(DATE(ANNEE(A3-MOD(A3-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)
(pour une date donnée en A3).
L'examen de ce tableau devrait conduire les utilisateurs à oublier définitivement la fonction NO.SEMAINE().​
Cordialement,
ROGER2327
 

Pièces jointes

Re : Installation fonction NO.SEMAINE

Bonjour à tous,

Tout d'abord un grand merci à monique pour cette formule qui fonctionne très bien.

Par contre, je me retrouve avec un tableau que l'on doit désormais prolonger sur une durée supérieure à un an, et la conversion date en semaine, ne précise pas l'année.

Cela occasionne donc des erreurs dans les graphes réalisés à partir de ce résultat en semaine car par exemple pour une date au 14/09/2010 ou 14/09/2011, le résultat est toujours 37, or je souhaite les différencier.

Je suis donc à la recherche d'une formule de conversion de "date" en "semaine/année".
En recherchant sur le net, je n'ai pour le moment pas trouvé de réponse à ma question.

J'espère que l'un de vous pourra éclairer ma lanterne.

Merci par avance.

Karine
 
Re : Installation fonction NO.SEMAINE

oh! merci Piga25! J'avais tenté de rajouter cette fonction ANNEE, mais j'avais omis de mettre le &.

Cela fait toute la différence! ; )

Allez, je continue l'exploration de mon fichier! Merci encore et bonne journée!

Karine
 
Re : Installation fonction NO.SEMAINE

Bonjour à tous

Un petit fichier repertoriant diverses fonctions relatives au N° de semaine
une de mon cru
une de Bigmousse
et surtout une de notre formidable ROGER grand specialiste des dates

Arf: Je suis vraiment en retard et n'avais même pas vu que ROGER s'etait manifesté !!
 

Pièces jointes

Dernière édition:
Re : Installation fonction NO.SEMAINE

Bonjour le Forum, Monique

Ta formule suivante affiche le n° de semaine 9 pour le jour par exemple 26/02/2012 mais devrait afficher encore 8 du fait que c'est un dimanche non:
=ENT(MOD(ENT((C2-2+(JOUR(1)=2)*6)/7)+0,6+((JOUR(1)=2)*208);52+5/28))+1

Cordialement
 
Re : Installation fonction NO.SEMAINE

Bonjour à tous,

La formule :
=ENT(MOD(ENT((A1-2+(JOUR(1)=2)*6)/7)+3/5+((JOUR(1)=2)*208);52+5/28))+1
renvoie 8 pour le 26/02/2012 en A1...

Tu remarqueras la suppression du +0,6 ou +0.6 et le remplacement par +3/5... Astuce de Roger qui permet de se départir du choix du séparateur décimal.

A+ à tous
 
Re : Installation fonction NO.SEMAINE

Hello
Une page assez complète sur ce sujet avec surtout le décorticage pas à pas par laurent Longre de ces formules alambiquées à souhait.
Ce lien n'existe plus

Une superbe démonstration !

Laurent y explique du reste les limites de la détermination par formule des N° de semaine à la norme européenne.
Et sinon pour les fonctions en VBA il y a ça aussi
Ce lien n'existe plus

Ca doit bien faire 15 ans qu'on demande à microsoft de se souvenir qu'il y a quelques personnes dans le monde qui n'utilisent pas la norme américaine. On verra dans la prochaine version d'excel si on a fini par être entendus !
 
Re : Installation fonction NO.SEMAINE

Bonjour

...
Ca doit bien faire 15 ans qu'on demande à microsoft de se souvenir qu'il y a quelques personnes dans le monde qui n'utilisent pas la norme américaine. On verra dans la prochaine version d'excel si on a fini par être entendus !

Idem pour le changement de semaine avec les filtres chronologiques : on aimerait bien que la rupture se fasse le lundi...
 
Re : Installation fonction NO.SEMAINE

Bonjour à tous


J'ai proposé, il y a quelque temps, des procédures de conversion de la date grégorienne en date à la norme ISO, mais elles sont devenues illisibles avec le temps.
Je les rappelle :
VB:
Function ISO(ByVal r, Optional X As Byte = 0)
' Transcription ISO d'une date grégorienne r.
'
'.__________________________________________________________________________________________.
'|           |                   |              |        |                                  |
'|     x     |       retour      |    format    |  type  |              exemple             |
'|___________|___________________|______________|________|__________________________________|
'|           |                   |              |        |                                  |
'| 0 ou omis | date ISO complète | "aaaa-WSS-J" | String |=ISO("3/3/2003")   | 2003-W10-1   |
'|     1     | semaine ISO       | "aaaa-WSS"   | String |=ISO("3/3/2003";1) | 2003-W10     |
'|     2     | semaine ISO       | SS           | Double |=ISO("3/3/2003";2) |           10 |
'|                                                                                          |
'|    Validité probable : lundi premier janvier 1900 - vendredi 31 décembre 9999 inclus.    |
'|__________________________________________________________________________________________|
'
Application.Volatile
Dim a&, b&
  r = CDate(r)
  r = r - (r < 61)
  a = r - Weekday(r, vbMonday)
  b = DateSerial(Year(a + 4), 1, 1)
  ISO = IIf(X < 2, Year(b) & "-W", 0) + (Format((a - b + Weekday(b, vbMonday)) \ 7 + (Weekday(b, vbMonday) > 4) + 1, "00") & IIf(X < 1, "-" & Weekday(r, vbMonday), ""))
End Function

Function GREG(ByVal r) As Date
' Transcription grégorienne d'une date ISO r.
'
'.__________________________________________________________________________________.
'|              |                        |        |                                 |
'|       r      |         retour         | format |             exemple             |
'|______________|________________________|________|_________________________________|
'|              |                        |        |                                 |
'| "aaaa-WSS-J" |    date grégorienne    |  Date  | =GRG("2003-W14-5") | 04/04/2003 |
'|  "aaaa-WSS"  | lundi de la semaine SS |  Date  | =GRG("2003-W14")   | 31/03/2003 |
'|                                                                                  |
'|                Validité probable : 1900-W01-1 - 9999-W52-5 inclus.               |
'|__________________________________________________________________________________|
'
Application.Volatile
Dim X, y, z As Date, u%
  X = Split(r, "-W", 2)
  y = Split(X(1) & "-1", "-")
  z = DateSerial(X(0), 1, 1) + 7 * y(0)
  u = Weekday(z, vbMonday)
  z = z - u + 7 * (u < 5) + y(1)
  GREG = z + (z < 61)
End Function


ROGER2327
#5529


Vendredi 27 Gueules 139 (Saint Tabagie, cosmogène - fête Suprême Quarte)
2 Ventôse An CCXX, 0,9081h - cornouiller
2012-W08-2T02:10:46Z
 
Re : Installation fonction NO.SEMAINE

Bonjour le forum,

Je déterre un vieux sujet mais c'est ce que je recherche : une macro qui me permet
d'afficher le numéro de semaine si il y a une date remplie en collone A.
Si A est vide O sera vide.

J'ai trouvé la fonction excel le problème est que mon fichier se charge chaque jour et
que si je recopie la fonction excel mon fichier fait plus de 12 Mo!!!

J'ai essayé (format("ww", vbMonday, firstfourdays) et ça ne fonctionne pas.

Je suis sous excel 2007 pro, je le précise car j'ai eu beaucoup de soucis pour paramétré mes critères
de tri sous format date en macro.

J'ai le sentiment que la fonction ci-dessous est un bout de solution mais je n'arrive pas à l'utiliser
merci de votre aide.

Bonjour,
Puisqu'on est en plein dans NO.SEMAINE voici quelques fonctions aussi très utiles

Code:
Function NOSEM(D As Date) As Long
   D = Int(D)
   NOSEM = DateSerial(Year(D + (8 - WeekDay(D)) Mod 7 - 3), 1, 1)
   NOSEM = ((D - NOSEM - 3 + (WeekDay(NOSEM) + 1) Mod 7)) \ 7 + 1
End Function

Code:
Public Function NumSemaine(D As Date)
Dim t As Long
  t = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
  NumSemaine = ((D - t - 3 + (Weekday(t) + 1) Mod 7)) \ 7 + 1
End Function
 
Re : Installation fonction NO.SEMAINE

J'y manquerais pas, un petit cou...cou en plein vol 😉

Une macro parce que mon fichier fait déjà plus de 5Mo et qu'il sera remplie de 40 lignes par jour de A à O,
je ne peux donc pas copier ma fonction sur TOUTE la colonne O sinon le fichier fera plus de 15 mo
sans les données journalières. (ou alors j'investi sur une bête de calcul)

Mais également parce que je ne veux pas que le fichier puisse être corrompue par erreur ce qui est souvent le cas lorsque des fonctions excels sont visible, une mauvaise manipulation est si vite arrivée (ooups pardon Madame j'ai glissée) 🙂

J'ai trouvé une fonction bidouille : (ici exemple avec 2009,2010, 2011 et 2012)
Range("O2:O65356").Value = Range("A2:A65356").Value
For Each X In Range("O2:" & Range("O65356").End(xlUp).Address)
If X < #1/1/2012# And X > #12/31/2010# Then
X.Value = DatePart("ww", X)
X.NumberFormat = "General"
X.Value = X - 1
ElseIf X < #1/1/2011# And X > #12/31/2009# Then
X.Value = DatePart("ww", X)
X.NumberFormat = "General"
X.Value = X - 1
ElseIf X < #1/1/2010# And X > #12/31/2008# Then
X.Value = DatePart("ww", X)
X.NumberFormat = "General"
X.Value = X
ElseIf X > #12/31/2011# Then
X.Value = DatePart("ww", X)
X.NumberFormat = "General"
X.Value = X
End If
Next

Je vais ainsi régler avec +1 ou -1 toutes les années ou le numéro de semaine est décalé jusqu'à 2020 🙂

Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

T
Réponses
6
Affichages
2 K
R
  • Question Question
Réponses
8
Affichages
919
Rolala
R
P
Réponses
11
Affichages
12 K
P
F
Réponses
5
Affichages
2 K
F
G
Réponses
3
Affichages
2 K
G
R
Réponses
8
Affichages
2 K
Rogerlamoule
R
L
Réponses
2
Affichages
2 K
Lauxile
L
Retour