XL 2016 numéro semaine

sebastaupole

XLDnaute Nouveau
Bonjour a tous
Je recherche une formule ou un code VBA pouvant afficher les numéros de la semaine suivante de la semaine en cours, je m’explique j'ai 7 textbox dans la 1er la semaine en cours disons la 48 "la je n'ai pas de problème pour le faire avec une formule ou VBA" mais dans la 2eme je voudrais mettre la 49, puis 3eme 50, puis 4eme 51, 5eme 52, 6eme 1, et 7eme 2 et a chaque fois que la semaine en cours change les autres textbox doivent changer aussi. Avez vous une idée pouvant régler mon problème.
Merci d'avance
 

sebastaupole

XLDnaute Nouveau
Bonsoir le fil, sebastaupole

sebastaupole
Oui ;)
J'ai même trois idées.
(et tu devrais connaitre les deux premières ;))
Bonsoir Staple1600
en faite j'ai mon code après" Date, 2, 2) je rajoute +1 a chaque textbox mais bien sur arrivé a semaine 52 je revient pas a 1 et franchement je suis peut être fatigué mais je ne vois pas les deux premières idées, bon je vais réfléchir :D

VB:
Private Sub textbox3_change()
Dim NumSem As Byte
NumSem = DatePart("ww", Date, 2, 2) + 2    'ici je rajoute +2 pour semaine en cours +2 semaines'
 TextBox3.Value = " " & NumSem
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Voici ma 4ième idée ;)
VB:
Sub test()
Dim sh As Shape
NumSem = DatePart("ww", Date, 2, 2)
For Each sh In ActiveSheet.Shapes
On Error Resume Next
Select Case Split(sh.Name, "ox")(1) * 1
Case 1
sh.OLEFormat.Object.Object.Value = NumSem
Case 2
sh.OLEFormat.Object.Object.Value = NumSem + 1
Case 3
sh.OLEFormat.Object.Object.Value = NumSem + 2
Case 4
sh.OLEFormat.Object.Object.Value = NumSem + 3
Case 5
sh.OLEFormat.Object.Object.Value = NumSem + 4
Case 6
sh.OLEFormat.Object.Object.Value = NumSem + 5
Case 7
sh.OLEFormat.Object.Object.Value = NumSem + 6
End Select
Next
End Sub
A tester en ayant mis en commentaire le code existant dans la feuille PLAN.
(ou en le supprimant juste pour le test - avec une sauvegarde préalable avec un CTRL+C/V dans le bloc-notes)
 

sebastaupole

XLDnaute Nouveau
Re

Voici ma 4ième idée ;)
VB:
Sub test()
Dim sh As Shape
NumSem = DatePart("ww", Date, 2, 2)
For Each sh In ActiveSheet.Shapes
On Error Resume Next
Select Case Split(sh.Name, "ox")(1) * 1
Case 1
sh.OLEFormat.Object.Object.Value = NumSem
Case 2
sh.OLEFormat.Object.Object.Value = NumSem + 1
Case 3
sh.OLEFormat.Object.Object.Value = NumSem + 2
Case 4
sh.OLEFormat.Object.Object.Value = NumSem + 3
Case 5
sh.OLEFormat.Object.Object.Value = NumSem + 4
Case 6
sh.OLEFormat.Object.Object.Value = NumSem + 5
Case 7
sh.OLEFormat.Object.Object.Value = NumSem + 6
End Select
Next
End Sub
A tester en ayant mis en commentaire le code existant dans la feuille PLAN.
(ou en le supprimant juste pour le test - avec une sauvegarde préalable avec un CTRL+C/V dans le bloc-notes)
Merci, mais je passe toujours de la semaine 42 a la semaine 43 et pas semaine 1, en faite je ne sais pas si c'est possible
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,

52+1 fera toujours 53... Calcule plutôt le n° de semaine de date+x :
VB:
NumSem = DatePart("ww", Date + 7 , vbMonday, vbFirstFourDays)

à noter que Datepart est un peu bogué et donne des mauvais n° de semaine sur certaines dates dont, pas de pot, une cette année
Erroné sur dates :
29/12/1947 31/12/1951 30/12/1963 29/12/1975 31/12/1979 30/12/1991 29/12/2003
31/12/2007 30/12/2019 29/12/2031 31/12/2035 30/12/2047 29/12/2059
eric
 

Discussions similaires

Réponses
5
Affichages
537

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 838
dernier inscrit
Christelle.B86