VBA et dates

Résolu/Fermé
T_Geb - Modifié le 13 mars 2018 à 11:36
 T_Geb - 13 mars 2018 à 14:03
Bonjour,

Je suis en train de faire un programme VBA pour créer automatiquement un planning hebdomadaire dans lequel les dates sont inscrites automatiquement dans les cellules L3 à P3.
Voici le programme que j'ai récupérer d'internet et que j'ai remanié à ma sauce :

"Option Explicit

Sub creer_annee()

Dim cptr As Byte
Dim jour As Byte
Const annee As Integer = 2018

Application.ScreenUpdating = False

    For cptr = 2 To 53
        Sheets(1).Copy after:=Sheets(cptr - 1)
    With Sheets(cptr)
        .Name = "S" & cptr - 1
        
.Cells(3, 12) = 5 * (cptr - 1) + DateSerial(annee, 1, 1) - Weekday(DateSerial(annee, 1, 1)) - 3

    For jour = 12 To 16
        .Cells(3, jour) = .Cells(3, jour - 1) + 1
    Next

End With

Next

End Sub"


Mon problème est le suivant, les dates affichés dans les cellules L3 à P3 de la feuille S1 sont datées 1900... soit 118 ans trop tôt...

Une idée, un conseil ?

Cordialement.

T_Geb

1 réponse

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
13 mars 2018 à 11:54
Bonjour,

.Cells(3, jour) = .Cells(3, jour - 1) + 1

au 1er passage tu te réfères à la colonne jour - 1 (=11) qui est vide.
Excel comptant les années depuis 1900 tu te retrouves en cette année.
eric
0
Merci, un probleme de moins !
Un problème en cache souvent un autre par contre...

Maintenant que la feuille S1 est rempli correctement, c'est la feuille S2 et suivante qui se décallent... En effet, la feuille S2 affiche Samedi 6 Janvier 2018 jusqu'a Mercredi 10 Janvier 2018, comment faire pour que la semaine démarre le Lundi ?

Merci
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
13 mars 2018 à 12:41
mémorise le 1er lundi de l'année et fait +7 pour les autres semaines.
Ou bien :
Dim lundiSemaine As Date
lundiSemaine = (semaine - 1) * 7 + DateValue("05/01/" & annee) - Weekday(DateValue("04/01/" & annee), vbMonday)

eric
0
Peux tu me décrire comment faire ?

Tu l'auras compris, mon domaine de prédilection, c'est pas l'informatique...
0
c'est bon j'ai trouvé une solution viable

Merci pour tout
0