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
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, sebastaupole

sebastaupole
Oui ;)
J'ai même trois idées.
(et tu devrais connaitre les deux premières ;))
 

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
 

Staple1600

XLDnaute Barbatruc
Re

Bah c'est évident, non?
J'utilise ton bout de code pour déterminer Numsem
Or qu'utilises-tu dans celui-ci?
Date
et Date correspond à quoi?
Je te laisse répondre ;)
 

eriiiic

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
 

Staple1600

XLDnaute Barbatruc
Bonsoir eriiiic

Je dépasse toujours le 52 mais de manière plus courte ;)
VB:
Sub test_II()
Dim sh As Shape, Z&
NumSem = DatePart("ww", Date, 2, 2)
For Each sh In ActiveSheet.Shapes
On Error Resume Next
Z = Split(sh.Name, "ox")(1) * 1
Select Case Z
Case 1
sh.OLEFormat.Object.Object.Value = NumSem
Case 2 To 7
sh.OLEFormat.Object.Object.Value = NumSem - 1 + Z
End Select
Next
End Sub
Sinon pour NumSem, j'ai cela en stock (mais je crois qu'il peut y avoir un souci, non ?)
NumSem = Evaluate("=WEEKNUM(TODAY(),21)")
 

eriiiic

XLDnaute Barbatruc
Re Staple,
à mon avis on ne peut pas faire numsem=numsem +/-1, ça serait trop simple.
Il faut le recalculer pour la date décalée.

Sinon je pense que ton stock est la meilleure solution :) (sur date décalée de +7, +14, etc bien sûr).
Je n'ai pas trouvé d'erreur sur une longue durée (au moins 100 ans) pour NO.SEMAINE(A4;21).
eric
 

Staple1600

XLDnaute Barbatruc
Re

eriiiic
La meilleure solution, c'est point plutôt ne pas utiliser des textbox, mais de simples cellules ;)
Et puis normalement, on travaille sur une année civile ;)
Donc s'arrêter sur la dernière semaine de l'année en cours me suffira, si j'étais moi ;)
Et je sais sans VBA, et sans même Excel, que la semaine qui suit la dernière semaine de l'année en cours est la première de l'année prochaine (même si des fois elles font de l'équitation ensemble ;))
 

sebastaupole

XLDnaute Nouveau
Re

eriiiic
La meilleure solution, c'est point plutôt ne pas utiliser des textbox, mais de simples cellules ;)
Et puis normalement, on travaille sur une année civile ;)
Donc s'arrêter sur la dernière semaine de l'année en cours me suffira, si j'étais moi ;)
Et je sais sans VBA, et sans même Excel, que la semaine qui suit la dernière semaine de l'année en cours est la première de l'année prochaine (même si des fois elles font de l'équitation ensemble ;))
Bonjour en faite pour faire mon fichier je prend exemple sur un ancien fichier sur lequel on bosse encore mais sur LOTUS et les dernières semaines se termine comme cela, 51 52 53 et 02 comme la 1er semaine de janvier en général mon entreprise est fermé donc cela ne gêne pas, je sais que c'est possible sur LOTUS mais je n'arrive pas a avoir ces codes
 

eriiiic

XLDnaute Barbatruc
Bonjour,

Et puis normalement, on travaille sur une année civile
Ah mais c'est là-dessus que je suis parti moi

sebastaupole, tu veux dire que la semaine 1 n'existe pas ? Jamais ?
Je trouve cela particulièrement étrange.
Que dois-tu avoir pour le 31/12/18, le 01/01/19, le 07/01/19,puis le 31/12/19 et le 01/01/20 ?
eric
 
Dernière édition:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas