=NO.SEMAINE(A1;2)+1
=B1+1
Bonsoir et merci à tous les deux de m'avoir répondu. J'avais fais ça en VBA du genre :Bonjour Arpette
essaye ceci en B:
Dans C ceci à tirer vers la droite:Code:=NO.SEMAINE(A1;2)+1
@+Code:=B1+1
NumSemaineIso=DatePart("ww", [COLOR=red]LaDate[/COLOR], vbMonday, vbFirstFourDays)
Bonsoir Hasco, merci pour ta réponse ça renvoie bien la première semaine de Juillet 2010 (26) B1 , mais comment je fais pour renvoyer (27) en C2.Bonsoir le fil,
Numéro de semaine iso en vba:
Code:NumSemaineIso=DatePart("ww", [COLOR=red]LaDate[/COLOR], vbMonday, vbFirstFourDays)
Où laDate est la date on on veut le numéro de semaine
A+
Sub Truc()
Dim DateDepart As Date: DateDepart = DateValue("1/7/2010")
Dim c As Range
For Each c In Range("B1:F1")
c = DatePart("ww", DateDepart, vbMonday, vbFirstFourDays)
DateDepart = DateDepart + 7 'Incrémenter la date de 7 jours (1 semaine)
Next
End Sub
Re,Re,
Exemple:
Code:Sub Truc() Dim DateDepart As Date: DateDepart = DateValue("1/7/2010") Dim c As Range For Each c In Range("B1:F1") c = DatePart("ww", DateDepart, vbMonday, vbFirstFourDays) DateDepart = DateDepart + 7 'Incrémenter la date de 7 jours (1 semaine) Next End Sub
A+
Private Sub Workbook_Open()
Dim c As Range
Dim DateDepart As Date
'Date départ au 1er du mois
DateDepart = DateSerial(Year(Date), Month(Date), 1)
'Mettre une condition ici n'est pas absolument nécessaire
's'il y avait une vérification à faire ce serait peut-être
'de controler si la date affichée correspond au mois en cours
If IsEmpty(Sheets("Récap_Mensuelle").Cells(4, 1)) Then
Sheets("Récap_Mensuelle").Cells(4, 1) = "MOIS DE " & UCase(Format(DateDepart, " mmmm yyyy"))
End If
Sheets("Relevé_Hebdo").Select
Worksheets("Relevé_Hebdo").Unprotect
Cells(1, 1) = "Mois de " & UCase(Format(DateDepart, "mmmm"))
'Attention nous avons à faire à des cellules fusionnées!
'il faut donc alimenter 1 cellule sur 2 à partir de C1
For Each c In Range("C1,E1,G1,I1,K1")
c = "sem " & DatePart("ww", DateDepart, vbMonday, vbFirstFourDays)
DateDepart = DateDepart + 7 'Incrémenter la date de 7 jours (1 semaine)
Next
Worksheets("Relevé_Hebdo").Protect
End Sub
Option Explicit
Private Sub Workbook_Open()
Sheets("Récap_Mensuelle").Select
If Cells(4, 1) = Empty Then
Dim Mois As String
Dim Année As String
Dim Titre As String
Dim Récap_Mensuelle As String
Dim Relevé_Hebdo As String
Dim semaine As String
Dim Sme As String
Dim DateDepart As Date: DateDepart = DateValue("1/7/2010")
Dim c As Range
Sheets("Récap_Mensuelle").Select
Mois = Format(Now, "mmmm")
Année = Format(Now, "yyyy")
Titre = "MOIS DE" & " " & Mois & " " & Année
Cells(4, 1) = UCase(Titre)
Sheets("Relevé_Hebdo").Select
Worksheets("Relevé_Hebdo").Unprotect
Mois = Format(Now, "mmmm")
Année = Format(Now, "yyyy")
Titre = Mois & " " & Année
Cells(1, 1) = UCase(Titre)
'Worksheets("Relevé_Hebdo").Protect
End If
Worksheets("Relevé_Hebdo").Activate
Range("B1") = DatePart("ww", DateDepart, vbMonday, vbFirstFourDays)
Range("C1") = DatePart("ww", DateDepart + 7, vbMonday, vbFirstFourDays)
Range("E1") = DatePart("ww", DateDepart + 14, vbMonday, vbFirstFourDays)
Range("G1") = DatePart("ww", DateDepart + 21, vbMonday, vbFirstFourDays)
Range("I1") = DatePart("ww", DateDepart + 28, vbMonday, vbFirstFourDays)
End Sub
Bonjour Arpette;Hasco et le fil
Une autre proposition en partant de la macro fournie par Hasco:
En effet à cause des cellules fusionnées;il faut identifier les cellules à alimenter.Code:Option Explicit Private Sub Workbook_Open() Sheets("Récap_Mensuelle").Select If Cells(4, 1) = Empty Then Dim Mois As String Dim Année As String Dim Titre As String Dim Récap_Mensuelle As String Dim Relevé_Hebdo As String Dim semaine As String Dim Sme As String Dim DateDepart As Date: DateDepart = DateValue("1/7/2010") Dim c As Range Sheets("Récap_Mensuelle").Select Mois = Format(Now, "mmmm") Année = Format(Now, "yyyy") Titre = "MOIS DE" & " " & Mois & " " & Année Cells(4, 1) = UCase(Titre) Sheets("Relevé_Hebdo").Select Worksheets("Relevé_Hebdo").Unprotect Mois = Format(Now, "mmmm") Année = Format(Now, "yyyy") Titre = Mois & " " & Année Cells(1, 1) = UCase(Titre) 'Worksheets("Relevé_Hebdo").Protect End If Worksheets("Relevé_Hebdo").Activate Range("B1") = DatePart("ww", DateDepart, vbMonday, vbFirstFourDays) Range("C1") = DatePart("ww", DateDepart + 7, vbMonday, vbFirstFourDays) Range("E1") = DatePart("ww", DateDepart + 14, vbMonday, vbFirstFourDays) Range("G1") = DatePart("ww", DateDepart + 21, vbMonday, vbFirstFourDays) Range("I1") = DatePart("ww", DateDepart + 28, vbMonday, vbFirstFourDays) End Sub
@+
Bonsoir et merci à tous les deux. Les deux macro fonctionnent à merveille. Le seul problème est que dans celle Hasco ça renvoie le mois de septembre en A1et dans celle de Cmoa le début de mois est renseigné dans les variables. Ce fichier est mis à jour tous les mois et prend le mois du système.
Merci encore à tous les deux pour votre aide.