[VBA] trouver le premier jour d'une annee

trouver le premier jour d'une annee [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 01-09-2006 à 13:17:01    

Salut a tous
 
j'aurais besoin d'aide pour une generation de calendrier en VBA.
pour le moment j'arrive a le generer en indiquant le premier jour de l'année.
par contre j'aimerais ameliorer ca, donc en indiquant directement une année, on en genere le calendrier.
 
Comment puis je faire pour retrouver le premier jour d'une annee qu'on indique en VBA ?!
 
apres, accessoirement (mais pas obligatoire), comment savoir quel jour on est dans la date, pour par exemple mettre un format special au samedi et dimanche.
 
Merci de votre aide.

Reply

Marsh Posté le 01-09-2006 à 13:17:01   

Reply

Marsh Posté le 01-09-2006 à 14:50:22    

chico008 a écrit :

Salut a tous
 
j'aurais besoin d'aide pour une generation de calendrier en VBA.
pour le moment j'arrive a le generer en indiquant le premier jour de l'année.
par contre j'aimerais ameliorer ca, donc en indiquant directement une année, on en genere le calendrier.
 
Comment puis je faire pour retrouver le premier jour d'une annee qu'on indique en VBA ?!
 
apres, accessoirement (mais pas obligatoire), comment savoir quel jour on est dans la date, pour par exemple mettre un format special au samedi et dimanche.
 
Merci de votre aide.


 
si tu veux tu as des algos informatiques pour trouver le jour de n'importe quelle année. te casse pas à faire un truc à la main, les librairies de calendrier existent déjà. D'autant que XL compte les jours depuis le 0 janvier 1900 en comptant le 29/02/1900 alors que 1900 n'est pas une année bissextile.
Voilà des infos en anglais mais c'est pas très compliqué:
http://en.wikipedia.org/wiki/Zeller%27s_congruence
http://en.wikipedia.org/wiki/Doomsday_rule

Reply

Marsh Posté le 01-09-2006 à 15:02:09    

et c'est lesquelles les instruction dans excel ?
j'ai bien trouver des fonctions en rapport avec les dates, mais j'ai pas saisie comment on les utilisaient

Reply

Marsh Posté le 01-09-2006 à 15:16:45    

Il suffit d'utiliser l'aide d'excel qui est compréhensible pour ce genre de fonctions.
A priori il s'agit des fonctions "dateval" et "joursem".
Le numéro de série est le nombre de jours écoulés depuis le 01/01/1900. Pour "joursem", tu spécifies la date dans le format que tu veux.

Reply

Marsh Posté le 08-09-2006 à 09:36:27    

chico008 a écrit :

Salut a tous
Comment puis je faire pour retrouver le premier jour d'une annee qu'on indique en VBA ?!


Caÿ pas le premier janvier ?  [:barthaliastoxik]


---------------
"Mon modèle, c'est moi-même."
Reply

Marsh Posté le 08-09-2006 à 09:48:32    

Plus sérieusement, fonction WeekDay, c'est pas ce que tu cherches ?
 
Sub JourDeLaSemaine()
    Dim semaine(7)
    semaine(0) = "Dimanche"
    semaine(1) = "Lundi"
    semaine(2) = "Mardi"
    semaine(3) = "Mercredi"
    semaine(4) = "Jeudi"
    semaine(5) = "Vendredi"
    semaine(6) = "Samedi"
    resultat = semaine(Weekday("01/01/" & Cells(1, 1)))
    Cells(1, 2) = resultat
End Sub


---------------
"Mon modèle, c'est moi-même."
Reply

Marsh Posté le 08-09-2006 à 09:51:01    

Par contre ce qui est louche, c'est que ça marche pour toutes les années, maÿ pas pour l'an 2000  [:canaille]


---------------
"Mon modèle, c'est moi-même."
Reply

Marsh Posté le 08-09-2006 à 10:31:01    

Salut à tous,
 
Pour revenir à la question initiale :
Fonction Excel DATE
=DATE(2006;1;1)
Fonction VBA équivalente DateSerial
Dim MaDate as Date
MaDate = DateSerial(2006, 1, 1)
 
Dans les deux cas on obtient le 1er janvier 2006 et l'on peut faire +1 pour obtenir le 2 janvier etc...
 
Attention au faux ami !
La fonction Date existe aussi en VBA mais elle équivaut à la fonction AUJOURDHUI() d'Excel.
 
A+
Horatio
 
 

Reply

Marsh Posté le 08-09-2006 à 13:33:46    

ok c'est bon, merci de votre aide. ;)

Reply

Marsh Posté le 08-09-2006 à 14:15:58    

le code de : http://www.altcal.com/download/AltCal.zip est à adapter mais si cela t'intéresse je l'ai déjà fait : contact par MP

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed