Menu

VBA et dates [Résolu]

T_Geb - 13 mars 2018 à 11:25 - Dernière réponse :  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

Afficher la suite 

Votre réponse

5 réponses

eriiic 21676 Messages postés mardi 11 septembre 2007Date d'inscriptionContributeurStatut 19 juin 2018 Dernière intervention - 13 mars 2018 à 11:54
0
Merci
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
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
eriiic 21676 Messages postés mardi 11 septembre 2007Date d'inscriptionContributeurStatut 19 juin 2018 Dernière intervention - 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
Peux tu me décrire comment faire ?

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

Merci pour tout
Commenter la réponse de eriiic