Bonjour le forum et Denis,
J'ai créé une fonction personnalisée qui calcule les N° de semaines d'un mois.
Dans le WorkBook_Open, j'ai :
Range("S_Sem_Mois") = "De la semaine " & Calcul_SemainesDuMois(Date).Premier & " Í la semaine " & Calcul_SemainesDuMois(Date).Dernier
J'ai créé une structure :
Public Type Semaine
Premier As Integer
Dernier As Integer
End Type
Et ma fonction :
Function Calcul_SemainesDuMois(Jour) As Semaine
Mois = Month(Jour)
Calcul_SemainesDuMois.Premier = NumSemaine(DateSerial(Range("Année"), Mois, 1))
Select Case Mois
Case 1, 3, 5, 7, 8, 10, 12
J = 31
Case 2
J = IIf(Bissextile(Range("Année")), 29, 28)
Case 4, 6, 9, 11
J = 30
End Select
Calcul_SemainesDuMois.Dernier = NumSemaine(DateSerial(Range("Année"), Mois, J))
End Function
La fonction NumSemaine :
Function NumSemaine(D As Date) As Long
D = Int(D)
NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod 7)) 7 + 1
End Function
Mon souci est que la fonction Calcul_SemainesDuMois s'exécute deux fois.... et je ne sais pas pourquoi !
J'ai essayé de placer un Exit Function mais ça ne change rien.
Si quelqu'un a une explication, je prend !!!
Merci d'avance,
ThierryP
Bonjour le forum et Denis,
J'ai créé une fonction personnalisée qui calcule les N° de semaines d'un mois.
Dans le WorkBook_Open, j'ai :
Range("S_Sem_Mois") = "De la semaine " & Calcul_SemainesDuMois(Date).Premier & " Í la semaine " & Calcul_SemainesDuMois(Date).Dernier
J'ai créé une structure :
Public Type Semaine
Premier As Integer
Dernier As Integer
End Type
Et ma fonction :
Function Calcul_SemainesDuMois(Jour) As Semaine
Mois = Month(Jour)
Calcul_SemainesDuMois.Premier = NumSemaine(DateSerial(Range("Année"), Mois, 1))
Select Case Mois
Case 1, 3, 5, 7, 8, 10, 12
J = 31
Case 2
J = IIf(Bissextile(Range("Année")), 29, 28)
Case 4, 6, 9, 11
J = 30
End Select
Calcul_SemainesDuMois.Dernier = NumSemaine(DateSerial(Range("Année"), Mois, J))
End Function
La fonction NumSemaine :
Function NumSemaine(D As Date) As Long
D = Int(D)
NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod 7)) 7 + 1
End Function
Mon souci est que la fonction Calcul_SemainesDuMois s'exécute deux fois.... et je ne sais pas pourquoi !
J'ai essayé de placer un Exit Function mais ça ne change rien.
Si quelqu'un a une explication, je prend !!!
Merci d'avance,
ThierryP
Bonjour le forum et Denis,
J'ai créé une fonction personnalisée qui calcule les N° de semaines d'un mois.
Dans le WorkBook_Open, j'ai :
Range("S_Sem_Mois") = "De la semaine " & Calcul_SemainesDuMois(Date).Premier & " Í la semaine " & Calcul_SemainesDuMois(Date).Dernier
J'ai créé une structure :
Public Type Semaine
Premier As Integer
Dernier As Integer
End Type
Et ma fonction :
Function Calcul_SemainesDuMois(Jour) As Semaine
Mois = Month(Jour)
Calcul_SemainesDuMois.Premier = NumSemaine(DateSerial(Range("Année"), Mois, 1))
Select Case Mois
Case 1, 3, 5, 7, 8, 10, 12
J = 31
Case 2
J = IIf(Bissextile(Range("Année")), 29, 28)
Case 4, 6, 9, 11
J = 30
End Select
Calcul_SemainesDuMois.Dernier = NumSemaine(DateSerial(Range("Année"), Mois, J))
End Function
La fonction NumSemaine :
Function NumSemaine(D As Date) As Long
D = Int(D)
NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod 7)) 7 + 1
End Function
Mon souci est que la fonction Calcul_SemainesDuMois s'exécute deux fois.... et je ne sais pas pourquoi !
J'ai essayé de placer un Exit Function mais ça ne change rien.
Si quelqu'un a une explication, je prend !!!
Merci d'avance,
ThierryP
Le 29/04/22 Í 04:36, ThierryP a écrit :Bonjour le forum et Denis,
J'ai créé une fonction personnalisée qui calcule les N° de semaines
d'un mois.
Dans le WorkBook_Open, j'ai :
Range("S_Sem_Mois") = "De la semaine " &
Calcul_SemainesDuMois(Date).Premier & " Í la semaine " &
Calcul_SemainesDuMois(Date).Dernier
J'ai créé une structure :
Public Type Semaine
    Premier As Integer
    Dernier As Integer
End Type
Et ma fonction :
Function Calcul_SemainesDuMois(Jour) As Semaine
Mois = Month(Jour)
Calcul_SemainesDuMois.Premier = NumSemaine(DateSerial(Range("Année"),
Mois, 1))
Select Case Mois
    Case 1, 3, 5, 7, 8, 10, 12
        J = 31
    Case 2
        J = IIf(Bissextile(Range("Année")), 29, 28)
    Case 4, 6, 9, 11
        J = 30
    End Select
Calcul_SemainesDuMois.Dernier = NumSemaine(DateSerial(Range("Année"),
Mois, J))
End Function
La fonction NumSemaine :
Function NumSemaine(D As Date) As Long
   D = Int(D)
   NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
   NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod
7)) 7 + 1
End Function
Mon souci est que la fonction Calcul_SemainesDuMois s'exécute deux
fois.... et je ne sais pas pourquoi !
J'ai essayé de placer un Exit Function mais ça ne change rien.
Si quelqu'un a une explication, je prend !!!
Merci d'avance,
ThierryP
Bonjour,
A ) les fonctions vont dans un module standard. Tu peux les placer dans
un module feuille, si une procédure de ce module requiert exclusivement
cette fonction.
B ) je ne comprends pas ce que tu veux obtenir, tu utilises des
"expressions" dans les fonctions qui n'ont rien Í voir avec le VBA.
Une fonction pour déterminer si une année est bissextile ou non :
Pour qu'une année soit bissextile, elle doit respecter 2 conditions :
Le mois de cette année doit avoir 29 jours.
L'année 1900 n'est pas bissextile, on le teste par :
Application.mod(Année, 400) = 0
'---------------------------
Function EstBissextile(MaDate As Date) As Boolean
Dim Année As Long, Mois As Long
Année = Year(MaDate)
Mois = Month(MaDate)
If Day(DateSerial(Année, Mois + 1, 0)) = 29 Then
   If Right(Année, 2) = "00" Then
       If Application.mod(Année, 400) = 0 Then
           EstBissextile = True
       Else
         EstBissextile = True
       End If
   Else
       EstBissextile = True
   End If
End If
End Function
'---------------------------
Pour connaÍ®tre la semaine d'une date dans l'année, tu fonction :
Pour une version Microsoft Office 2016 ou plus récent :
'---------------------------
Function NumSemaine(MaDate As Date)
NumSemaine = Application.IsoWeekNum(MaDate)
End Function
'---------------------------
Pour toutes les versions d'Excel :
'---------------------------
Function NumSemaine(D As Date) As Long
  D = Int(D)
  NumSemaine = DateSerial(Year(D + (8 - _
           Weekday(D)) Mod 7 - 3), 1, 1)
  NumSemaine = ((D - NumSemaine - 3 + _
       (Weekday(NumSemaine) + 1) Mod 7)) 7 + 1
End Function
'---------------------------
Ces 2 fonctions peuvent être appelées par une procédure en VBA ou
directement dans une cellule de la feuille de calcul.
Le paramètre "MaDate" ou "D" peuvent être le contenu d'une cellule ayant
une date reconnue comme telle par Excel.
Ces fonctions seront appelées seulement si le contenu de la cellule
passée en paramètre est modifié.
MichD
Le 29/04/22 Í 04:36, ThierryP a écrit :
Bonjour le forum et Denis,
J'ai créé une fonction personnalisée qui calcule les N° de semaines
d'un mois.
Dans le WorkBook_Open, j'ai :
Range("S_Sem_Mois") = "De la semaine " &
Calcul_SemainesDuMois(Date).Premier & " Í la semaine " &
Calcul_SemainesDuMois(Date).Dernier
J'ai créé une structure :
Public Type Semaine
    Premier As Integer
    Dernier As Integer
End Type
Et ma fonction :
Function Calcul_SemainesDuMois(Jour) As Semaine
Mois = Month(Jour)
Calcul_SemainesDuMois.Premier = NumSemaine(DateSerial(Range("Année"),
Mois, 1))
Select Case Mois
    Case 1, 3, 5, 7, 8, 10, 12
        J = 31
    Case 2
        J = IIf(Bissextile(Range("Année")), 29, 28)
    Case 4, 6, 9, 11
        J = 30
    End Select
Calcul_SemainesDuMois.Dernier = NumSemaine(DateSerial(Range("Année"),
Mois, J))
End Function
La fonction NumSemaine :
Function NumSemaine(D As Date) As Long
   D = Int(D)
   NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
   NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod
7)) 7 + 1
End Function
Mon souci est que la fonction Calcul_SemainesDuMois s'exécute deux
fois.... et je ne sais pas pourquoi !
J'ai essayé de placer un Exit Function mais ça ne change rien.
Si quelqu'un a une explication, je prend !!!
Merci d'avance,
ThierryP
Bonjour,
A ) les fonctions vont dans un module standard. Tu peux les placer dans
un module feuille, si une procédure de ce module requiert exclusivement
cette fonction.
B ) je ne comprends pas ce que tu veux obtenir, tu utilises des
"expressions" dans les fonctions qui n'ont rien Í voir avec le VBA.
Une fonction pour déterminer si une année est bissextile ou non :
Pour qu'une année soit bissextile, elle doit respecter 2 conditions :
Le mois de cette année doit avoir 29 jours.
L'année 1900 n'est pas bissextile, on le teste par :
Application.mod(Année, 400) = 0
'---------------------------
Function EstBissextile(MaDate As Date) As Boolean
Dim Année As Long, Mois As Long
Année = Year(MaDate)
Mois = Month(MaDate)
If Day(DateSerial(Année, Mois + 1, 0)) = 29 Then
   If Right(Année, 2) = "00" Then
       If Application.mod(Année, 400) = 0 Then
           EstBissextile = True
       Else
         EstBissextile = True
       End If
   Else
       EstBissextile = True
   End If
End If
End Function
'---------------------------
Pour connaÍ®tre la semaine d'une date dans l'année, tu fonction :
Pour une version Microsoft Office 2016 ou plus récent :
'---------------------------
Function NumSemaine(MaDate As Date)
NumSemaine = Application.IsoWeekNum(MaDate)
End Function
'---------------------------
Pour toutes les versions d'Excel :
'---------------------------
Function NumSemaine(D As Date) As Long
  D = Int(D)
  NumSemaine = DateSerial(Year(D + (8 - _
           Weekday(D)) Mod 7 - 3), 1, 1)
  NumSemaine = ((D - NumSemaine - 3 + _
       (Weekday(NumSemaine) + 1) Mod 7)) 7 + 1
End Function
'---------------------------
Ces 2 fonctions peuvent être appelées par une procédure en VBA ou
directement dans une cellule de la feuille de calcul.
Le paramètre "MaDate" ou "D" peuvent être le contenu d'une cellule ayant
une date reconnue comme telle par Excel.
Ces fonctions seront appelées seulement si le contenu de la cellule
passée en paramètre est modifié.
MichD
Le 29/04/22 Í 04:36, ThierryP a écrit :Bonjour le forum et Denis,
J'ai créé une fonction personnalisée qui calcule les N° de semaines
d'un mois.
Dans le WorkBook_Open, j'ai :
Range("S_Sem_Mois") = "De la semaine " &
Calcul_SemainesDuMois(Date).Premier & " Í la semaine " &
Calcul_SemainesDuMois(Date).Dernier
J'ai créé une structure :
Public Type Semaine
    Premier As Integer
    Dernier As Integer
End Type
Et ma fonction :
Function Calcul_SemainesDuMois(Jour) As Semaine
Mois = Month(Jour)
Calcul_SemainesDuMois.Premier = NumSemaine(DateSerial(Range("Année"),
Mois, 1))
Select Case Mois
    Case 1, 3, 5, 7, 8, 10, 12
        J = 31
    Case 2
        J = IIf(Bissextile(Range("Année")), 29, 28)
    Case 4, 6, 9, 11
        J = 30
    End Select
Calcul_SemainesDuMois.Dernier = NumSemaine(DateSerial(Range("Année"),
Mois, J))
End Function
La fonction NumSemaine :
Function NumSemaine(D As Date) As Long
   D = Int(D)
   NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
   NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod
7)) 7 + 1
End Function
Mon souci est que la fonction Calcul_SemainesDuMois s'exécute deux
fois.... et je ne sais pas pourquoi !
J'ai essayé de placer un Exit Function mais ça ne change rien.
Si quelqu'un a une explication, je prend !!!
Merci d'avance,
ThierryP
Bonjour,
A ) les fonctions vont dans un module standard. Tu peux les placer dans
un module feuille, si une procédure de ce module requiert exclusivement
cette fonction.
B ) je ne comprends pas ce que tu veux obtenir, tu utilises des
"expressions" dans les fonctions qui n'ont rien Í voir avec le VBA.
Une fonction pour déterminer si une année est bissextile ou non :
Pour qu'une année soit bissextile, elle doit respecter 2 conditions :
Le mois de cette année doit avoir 29 jours.
L'année 1900 n'est pas bissextile, on le teste par :
Application.mod(Année, 400) = 0
'---------------------------
Function EstBissextile(MaDate As Date) As Boolean
Dim Année As Long, Mois As Long
Année = Year(MaDate)
Mois = Month(MaDate)
If Day(DateSerial(Année, Mois + 1, 0)) = 29 Then
   If Right(Année, 2) = "00" Then
       If Application.mod(Année, 400) = 0 Then
           EstBissextile = True
       Else
         EstBissextile = True
       End If
   Else
       EstBissextile = True
   End If
End If
End Function
'---------------------------
Pour connaÍ®tre la semaine d'une date dans l'année, tu fonction :
Pour une version Microsoft Office 2016 ou plus récent :
'---------------------------
Function NumSemaine(MaDate As Date)
NumSemaine = Application.IsoWeekNum(MaDate)
End Function
'---------------------------
Pour toutes les versions d'Excel :
'---------------------------
Function NumSemaine(D As Date) As Long
  D = Int(D)
  NumSemaine = DateSerial(Year(D + (8 - _
           Weekday(D)) Mod 7 - 3), 1, 1)
  NumSemaine = ((D - NumSemaine - 3 + _
       (Weekday(NumSemaine) + 1) Mod 7)) 7 + 1
End Function
'---------------------------
Ces 2 fonctions peuvent être appelées par une procédure en VBA ou
directement dans une cellule de la feuille de calcul.
Le paramètre "MaDate" ou "D" peuvent être le contenu d'une cellule ayant
une date reconnue comme telle par Excel.
Ces fonctions seront appelées seulement si le contenu de la cellule
passée en paramètre est modifié.
MichD
Bonjour le forum et Denis,
J'ai créé une fonction personnalisée qui calcule les N° de semaines d'un mois.
Dans le WorkBook_Open, j'ai :
Range("S_Sem_Mois") = "De la semaine " & Calcul_SemainesDuMois(Date).Premier & " Í la semaine " & Calcul_SemainesDuMois(Date).Dernier
J'ai créé une structure :
Public Type Semaine
Premier As Integer
Dernier As Integer
End Type
Et ma fonction :
Function Calcul_SemainesDuMois(Jour) As Semaine
Mois = Month(Jour)
Calcul_SemainesDuMois.Premier = NumSemaine(DateSerial(Range("Année"), Mois, 1))
Select Case Mois
Case 1, 3, 5, 7, 8, 10, 12
J = 31
Case 2
J = IIf(Bissextile(Range("Année")), 29, 28)
Case 4, 6, 9, 11
J = 30
End Select
Calcul_SemainesDuMois.Dernier = NumSemaine(DateSerial(Range("Année"), Mois, J))
End Function
La fonction NumSemaine :
Function NumSemaine(D As Date) As Long
D = Int(D)
NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod 7)) 7 + 1
End Function
Mon souci est que la fonction Calcul_SemainesDuMois s'exécute deux fois.... et je ne sais pas pourquoi !
J'ai essayé de placer un Exit Function mais ça ne change rien.
Si quelqu'un a une explication, je prend !!!
Merci d'avance,
ThierryP
Bonjour le forum et Denis,
J'ai créé une fonction personnalisée qui calcule les N° de semaines d'un mois.
Dans le WorkBook_Open, j'ai :
Range("S_Sem_Mois") = "De la semaine " & Calcul_SemainesDuMois(Date).Premier & " Í la semaine " & Calcul_SemainesDuMois(Date).Dernier
J'ai créé une structure :
Public Type Semaine
Premier As Integer
Dernier As Integer
End Type
Et ma fonction :
Function Calcul_SemainesDuMois(Jour) As Semaine
Mois = Month(Jour)
Calcul_SemainesDuMois.Premier = NumSemaine(DateSerial(Range("Année"), Mois, 1))
Select Case Mois
Case 1, 3, 5, 7, 8, 10, 12
J = 31
Case 2
J = IIf(Bissextile(Range("Année")), 29, 28)
Case 4, 6, 9, 11
J = 30
End Select
Calcul_SemainesDuMois.Dernier = NumSemaine(DateSerial(Range("Année"), Mois, J))
End Function
La fonction NumSemaine :
Function NumSemaine(D As Date) As Long
D = Int(D)
NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod 7)) 7 + 1
End Function
Mon souci est que la fonction Calcul_SemainesDuMois s'exécute deux fois.... et je ne sais pas pourquoi !
J'ai essayé de placer un Exit Function mais ça ne change rien.
Si quelqu'un a une explication, je prend !!!
Merci d'avance,
ThierryP
Bonjour le forum et Denis,
J'ai créé une fonction personnalisée qui calcule les N° de semaines d'un mois.
Dans le WorkBook_Open, j'ai :
Range("S_Sem_Mois") = "De la semaine " & Calcul_SemainesDuMois(Date).Premier & " Í la semaine " & Calcul_SemainesDuMois(Date).Dernier
J'ai créé une structure :
Public Type Semaine
Premier As Integer
Dernier As Integer
End Type
Et ma fonction :
Function Calcul_SemainesDuMois(Jour) As Semaine
Mois = Month(Jour)
Calcul_SemainesDuMois.Premier = NumSemaine(DateSerial(Range("Année"), Mois, 1))
Select Case Mois
Case 1, 3, 5, 7, 8, 10, 12
J = 31
Case 2
J = IIf(Bissextile(Range("Année")), 29, 28)
Case 4, 6, 9, 11
J = 30
End Select
Calcul_SemainesDuMois.Dernier = NumSemaine(DateSerial(Range("Année"), Mois, J))
End Function
La fonction NumSemaine :
Function NumSemaine(D As Date) As Long
D = Int(D)
NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod 7)) 7 + 1
End Function
Mon souci est que la fonction Calcul_SemainesDuMois s'exécute deux fois.... et je ne sais pas pourquoi !
J'ai essayé de placer un Exit Function mais ça ne change rien.
Si quelqu'un a une explication, je prend !!!
Merci d'avance,
ThierryP
Bonjour le forum et Denis,
J'ai créé une fonction personnalisée qui calcule les N° de semaines d'un mois.
Dans le WorkBook_Open, j'ai :
Range("S_Sem_Mois") = "De la semaine " & Calcul_SemainesDuMois(Date).Premier & " Í la semaine " & Calcul_SemainesDuMois(Date).Dernier
J'ai créé une structure :
Public Type Semaine
Premier As Integer
Dernier As Integer
End Type
Et ma fonction :
Function Calcul_SemainesDuMois(Jour) As Semaine
Mois = Month(Jour)
Calcul_SemainesDuMois.Premier = NumSemaine(DateSerial(Range("Année"), Mois, 1))
Select Case Mois
Case 1, 3, 5, 7, 8, 10, 12
J = 31
Case 2
J = IIf(Bissextile(Range("Année")), 29, 28)
Case 4, 6, 9, 11
J = 30
End Select
Calcul_SemainesDuMois.Dernier = NumSemaine(DateSerial(Range("Année"), Mois, J))
End Function
La fonction NumSemaine :
Function NumSemaine(D As Date) As Long
D = Int(D)
NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod 7)) 7 + 1
End Function
Mon souci est que la fonction Calcul_SemainesDuMois s'exécute deux fois.... et je ne sais pas pourquoi !
J'ai essayé de placer un Exit Function mais ça ne change rien.
Si quelqu'un a une explication, je prend !!!
Merci d'avance,
ThierryP
Bonjour le forum et Denis,
J'ai créé une fonction personnalisée qui calcule les N° de semaines d'un mois.
Dans le WorkBook_Open, j'ai :
Range("S_Sem_Mois") = "De la semaine " & Calcul_SemainesDuMois(Date).Premier & " Í la semaine " & Calcul_SemainesDuMois(Date).Dernier
J'ai créé une structure :
Public Type Semaine
Premier As Integer
Dernier As Integer
End Type
Et ma fonction :
Function Calcul_SemainesDuMois(Jour) As Semaine
Mois = Month(Jour)
Calcul_SemainesDuMois.Premier = NumSemaine(DateSerial(Range("Année"), Mois, 1))
Select Case Mois
Case 1, 3, 5, 7, 8, 10, 12
J = 31
Case 2
J = IIf(Bissextile(Range("Année")), 29, 28)
Case 4, 6, 9, 11
J = 30
End Select
Calcul_SemainesDuMois.Dernier = NumSemaine(DateSerial(Range("Année"), Mois, J))
End Function
La fonction NumSemaine :
Function NumSemaine(D As Date) As Long
D = Int(D)
NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod 7)) 7 + 1
End Function
Mon souci est que la fonction Calcul_SemainesDuMois s'exécute deux fois.... et je ne sais pas pourquoi !
J'ai essayé de placer un Exit Function mais ça ne change rien.
Si quelqu'un a une explication, je prend !!!
Merci d'avance,
ThierryP
Bonjour le forum et Denis,
J'ai créé une fonction personnalisée qui calcule les N° de semaines d'un mois.
Dans le WorkBook_Open, j'ai :
Range("S_Sem_Mois") = "De la semaine " & Calcul_SemainesDuMois(Date).Premier & " Í la semaine " & Calcul_SemainesDuMois(Date).Dernier
J'ai créé une structure :
Public Type Semaine
Premier As Integer
Dernier As Integer
End Type
Et ma fonction :
Function Calcul_SemainesDuMois(Jour) As Semaine
Mois = Month(Jour)
Calcul_SemainesDuMois.Premier = NumSemaine(DateSerial(Range("Année"), Mois, 1))
Select Case Mois
Case 1, 3, 5, 7, 8, 10, 12
J = 31
Case 2
J = IIf(Bissextile(Range("Année")), 29, 28)
Case 4, 6, 9, 11
J = 30
End Select
Calcul_SemainesDuMois.Dernier = NumSemaine(DateSerial(Range("Année"), Mois, J))
End Function
La fonction NumSemaine :
Function NumSemaine(D As Date) As Long
D = Int(D)
NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod 7)) 7 + 1
End Function
Mon souci est que la fonction Calcul_SemainesDuMois s'exécute deux fois.... et je ne sais pas pourquoi !
J'ai essayé de placer un Exit Function mais ça ne change rien.
Si quelqu'un a une explication, je prend !!!
Merci d'avance,
ThierryP
Range("S_Sem_Mois") = "De la semaine " & Calcul_SemainesDuMois.Premier & " Í
la semaine " & Calcul_SemainesDuMois.Dernier, qui appelle effectivement deux
fois la fonction, mais je sais pas comment faire autrement ! Ma fonction :
Range("S_Sem_Mois") = "De la semaine " & Calcul_SemainesDuMois.Premier & " Í
la semaine " & Calcul_SemainesDuMois.Dernier, qui appelle effectivement deux
fois la fonction, mais je sais pas comment faire autrement ! Ma fonction :
Range("S_Sem_Mois") = "De la semaine " & Calcul_SemainesDuMois.Premier & " Í
la semaine " & Calcul_SemainesDuMois.Dernier, qui appelle effectivement deux
fois la fonction, mais je sais pas comment faire autrement ! Ma fonction :
NumSemaine est la fonction de Laurent Longre
NumSemaine est la fonction de Laurent Longre
NumSemaine est la fonction de Laurent Longre
Si une fonction s'exécute 2 fois, c'est qu'elle est appelée 2 fois
Si une fonction s'exécute 2 fois, c'est qu'elle est appelée 2 fois
Si une fonction s'exécute 2 fois, c'est qu'elle est appelée 2 fois