Se connecter avec
S'enregistrer | Connectez-vous
Votre question
Résolu

VBA Connaitre le nombre de semaine dans une année

Tags :
  • VBA
  • semaine
  • Microsoft Excel
  • connaître
  • année
  • Nombre
  • Programmation
Dernière réponse : dans Programmation
Partagez
7 Janvier 2013 14:09:45

Bonjour à toutes et à tous,

Je souhaiterai faire une macro en VBA (sur Excel) pour réaliser un "calendrier" de semaine.

Pour la conception de la maco, je suis parti sur un userform qui demande à l'utilisateur de rentrer la date du début et de fin de la période souhaitée à l'aide de deux DTPickers. Suite à ça, une boucle while rentre les nombres des semaines, horizontalement, et à la queue leu leu (pas facile à placer celui là xD) jusqu'à ce que la cellule en cours d'écriture soit égale au DTPicker de la date de fin.

Pour info les cellules sont égales à (DTPicker1.value, "ww",, vbFirstFourDays)
& "Year " & format(DTPicker1.value, "yyyy",, vbFirstFourDays)
Par exemple : 32 Year 2013

Donc le problème, c'est comment faire si l'utilisateur a choisi comme date de début la dixième semaine de 2013 et la trentième semaine de 2014 pour terminer.

En gros, actuellement, la macro incrémente non-stop le nombre des semaines sans changer d'année. Donc la cellule en cours d'écriture ne sera jamais égale à la valeur du DTPicker2 et ça fera une boucle infinie.

Autres pages sur : vba connaitre nombre semaine annee

a b L Programmation
8 Janvier 2013 11:18:13

Pourquoi ne pas utiliser un troisieme dtpicker (invisible) pour faire ta boucle et ta comparaison ? Il gerrera tout seul le passage a une nouvelle année.
m
0
l

Meilleure solution

a b L Programmation
8 Janvier 2013 14:53:18

Salut,

M'enfin vous deux, vous le faites exprès ?

  1. Dim d As Date
  2. d = DTPicker1.Value
  3. Do While d < DTPicker2.Value
  4. ...
  5. d = DateAdd("ww", 1, d)
  6. Loop


Et ton Format(), tu l'appliques sur d, pas sur DTPicker1.Value...
partage
Contenus similaires
8 Janvier 2013 16:39:09

Ah oui ! avec le DateAdd, ça fonctionne bien mieux.
J'ai envie de dire merci :love: 
m
0
l
a b L Programmation
10 Janvier 2013 14:14:45

LOL !
m
0
l