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

fonction No.semaine indique #NOM? même si j'installe macro compl é

7 réponses
Avatar
Phi
Je n'arrive pas à obtenir cette fonction de calcul.
Des macro complémentaires sont déjà installées notamment;
"analysis toolpak" et "analysis toolpak-VBA"

7 réponses

Avatar
MichDenis
Une date valide en C1, le 1 -> semaine débutant le dimanche
2 -> si tu veux une semaine débutant le Lundi
=NO.SEMAINE(C1;1)

En VBA
x = Application.WeekNum(Date,1)



"Phi" a écrit dans le message de groupe de discussion :

Je n'arrive pas à obtenir cette fonction de calcul.
Des macro complémentaires sont déjà installées notamment;
"analysis toolpak" et "analysis toolpak-VBA"
Avatar
Daniel.C
Bonjour.
Tu as la version anglaise de ces utilitaires; essaie : WEEKDAY
Cordialement.
Daniel

Je n'arrive pas à obtenir cette fonction de calcul.
Des macro complémentaires sont déjà installées notamment;
"analysis toolpak" et "analysis toolpak-VBA"


Avatar
Daniel.C
Ou plutôt, comme l'écrit Denis : WEEKNUM

Je n'arrive pas à obtenir cette fonction de calcul.
Des macro complémentaires sont déjà installées notamment;
"analysis toolpak" et "analysis toolpak-VBA"


Avatar
Trèfle
Bonjour Phi,

Sauf erreur de ma part,
sous 2000 et 2003, si l'utilitaire d'analyse n'était pas coché avant
l'ouverture d'Excel (ou activé avant de solliciter la fonction ...), la
fonction NO.SEMAINE n'est pas disponible ... Il faut la rendre disponible
par Outil/Macro Complémentaire -> et sélectionner "Utilitaire d'analyse"
Par contre sous Excel 2007, elle est disponible sans activation de macro
complémentaire ! C'est le progrès ...

Trèfle

"Phi" a écrit dans le message de news:

Je n'arrive pas à obtenir cette fonction de calcul.
Des macro complémentaires sont déjà installées notamment;
"analysis toolpak" et "analysis toolpak-VBA"


Avatar
Laurent
Bonjour,
Plus besoin de la cocher mais à ne plus utiliser avec des versions
antérieurs à Office 2007.
Si vous ouvrez un document utilisant cette fonction avec Office 2003, puis
rouvrir ensuite avec Office 2007, on peut avoir #NOM?, il faut revalider la
fonction à la main. Ou recréer la fonction en macro (il y des exemples sur le
newsgroup)


Laurent

"Trèfle" a écrit :

Bonjour Phi,

Sauf erreur de ma part,
sous 2000 et 2003, si l'utilitaire d'analyse n'était pas coché avant
l'ouverture d'Excel (ou activé avant de solliciter la fonction ...), la
fonction NO.SEMAINE n'est pas disponible ... Il faut la rendre disponible
par Outil/Macro Complémentaire -> et sélectionner "Utilitaire d'analyse"
Par contre sous Excel 2007, elle est disponible sans activation de macro
complémentaire ! C'est le progrès ...

Trèfle

"Phi" a écrit dans le message de news:

> Je n'arrive pas à obtenir cette fonction de calcul.
> Des macro complémentaires sont déjà installées notamment;
> "analysis toolpak" et "analysis toolpak-VBA"





Avatar
Michel Angelosanto
Voici plusieurs formules de calcul:
La date est en A1
=NO.SEMAINE(A1;1) pour 2007 'pour Excel 97 cocher la macro complémentaire
"analysis toolpak"
=ENT((A1-SOMME(MOD(DATE(ANNEE(A1-MOD(A1-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)
on peut également utiliser cette formule (sauf en calendrier 1904)
=ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1
La fonction no.semaine renvoie le numéro de semaine selon la norme US,
pour obtenir le numéro de semaine ISO (utilisé en Europe) :
=ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28 ))+1
ou alors par VBA :
Function NumSemISO(XDATE As Date) As Integer
NumSemISO = ((Int(XDATE) - DateSerial(Year(Int(XDATE) + (8 -
Weekday(Int(XDATE))) _
Mod 7 - 3), 1, 1) - 3 + (Weekday(DateSerial(Year(Int(XDATE) + _
(8 - Weekday(Int(XDATE))) Mod 7 - 3), 1, 1)) + 1) Mod 7)) 7 + 1
End Function

ou
Dim c As Range
For Each c In Range([D1], [D65000].End(xlUp))
c.Offset(, 2) = Application.WeekNum(c)
Next c

ou
Public Function NoSem(UneDate As Date) As Integer
On Error Resume Next
NoSem = CInt(Format(UneDate, "ww", vbMonday, vbFirstFourDays))
End Function
Par formule , avec la date en A1:
'version français
="semaine: "&ENT((A1-(DATE(ANNEE(A1-JOURSEM(A1-1)+4);1;3)-
JOURSEM(DATE(ANNEE(A1-JOURSEM(A1-1)+4);1;3)))+5)/7)
'version anglais:
=INT((A1-(DATE(YEAR(A1-WEEKDAY(A1-1)+4),1,3)-WEEKDAY(DATE(YEAR(A1-WEEKDAY(A1
-1)+4),1,3)))+5)/7)
Par VBA:
Function ISOWeekNum(d1 As Date) As Integer
Dim d2 As Long
d2 = DateSerial(Year(d1 - WeekDay(d1 - 1) + 4), 1, 3)
ISOWeekNum = Int((d1 - d2 + WeekDay(d2) + 5) / 7)
End Function
Exemple: La date est saisie dans textbox1, on affiche la semaine dans label1
et la date complète dans label2
Private Sub textbox1_change()
Dim unedate As Date
On Error Resume Next
unedate = TextBox1.Text
If TextBox1.TextLength = 8 Then
Label2.Caption = unedate
NoSem = ISOWeekNum(unedate)
Label1.Caption = NoSem
End If
End Sub

Avec la fonction VBA de Laurent Longre
(http://xcell05.free.fr/pages/form/dateheure.htm#Numsemaine) :

Sub test()
MsgBox NOSEM(#2/22/2009#)
End Sub

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

ou la fonction version Excel (du même auteur) :
=ENT((A1-SOMME(MOD(DATE(ANNEE(A1-MOD(A1-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)

Function ISOWeekNum(d1 As Date) As Integer
Dim d2 As Long
d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
ISOWeekNum = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function

En VBA
x = Application.WeekNum(Date,1)

--
Michel Angelosanto, Bordeaux
Dernières mises à jour du site Voyage au pays Internet
http://angelosa.free.fr/index.php?t=8
Avatar
Daniel.C
> Bonjour,
Plus besoin de la cocher



Bonjour.
... pour les fonctions, mais l'analysis toolpack a bien d'autres
usages. Coche-le et regarde, dans l'onglet "Données", rubrique
"Analyse",le bouton "Utilitaire d'analyse".
Cordialement.
Daniel