Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Une feuille par jour ouvré [ Divers / Débutants ] (anthonyo)

mercredi 12 septembre 2007 à 15:48:07 | Une feuille par jour ouvré

anthonyo

Bonjour,

J'aimerai un  peu d'aide pour créer une feuille pour chaque jour ouvré de l'année.

Voici le code qui me créé une feuille mais pour chaque jour de l'année saisie en inputbox:

Sub Calendjourfeuille()
Application.ScreenUpdating = False
année = Val(InputBox("Quelle année ?"))
If année = 0 Then Exit Sub
x = DateSerial(année, 1, 1)
y = DateValue("31 décembre " & année)
For I = 0 To y - x
ActiveWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Format(x + I, "dd-mm-yy")
Next
End Sub

Comment faire pour ne retenir que les jours ouvrés?
Merci pour votre aide

mercredi 12 septembre 2007 à 18:01:47 | Re : Une feuille par jour ouvré

mrdep1978

Réponse acceptée !

Salut,

Pour les week-end, tu peux utiliser la fonction DatePart pour identifier à quelle jour de la semaine correspondent chacune de tes dates
Ex :
'Si le jour n'est ni un samedi (6), ni un dimanche (7)
If Datepart("w", maDate, vbMonday) < 6 Then
   'Je crée ma feuille
End If

Pour les jours fériés, du type lundi de pâques, jeudi de l'ascencion ..., il parait qu'il y a de superbes formules mathématiques, mais je ne sais plus lesquelles.

Sinon, petits conseils en vrac :
- Evite les accents dans tes noms de variables (année -> annee) (risque de coincer avec un Windows non français)
- Remplace "y = DateValue("31 décembre " & année) " par "y = DateSerial(annee, 12, 31)" (risque de coincer sur un PC utilisant un autre format de date)


jeudi 13 septembre 2007 à 00:13:37 | Re : Une feuille par jour ouvré

JMO

Membre Club


 Bonsoir à tous,


Je n'ai fait qu'adapter un script, trouvé en vb6, sur l' algorithme de Oudin.
Testé en vbs et donc à ré-adapter pour vb6 + la partie Excel.

Option explicit

Dim Annee, DateDeb, DateFin, NbreJours,i
Annee = 2007

DateDeb = DateSerial(Annee, 1, 1) 
DateFin = DateSerial(Annee+1, 1, 1 - 1) 
NbreJours = DateDiff("d",DateDeb, DateFin)

For i=0 To NbreJours
    If IsFerie(DateSerial(Annee, 1, 1+i)) = False Then
       'ici écriture Excel ou autre
        MsgBox DateSerial(Annee, 1, 1+i) &vbCrLf& _
               IsFerie(DateSerial(Annee, 1, 1+i)),, _
               "IsFerie = False , jour ouvré"
    End If   
Next

Private Function IsFerie(datetoanalyse)           'As Date) As Boolean
    Dim jour, Mois, Annee, Ascension, Pentecote, Paques 'As Integer
    Dim G, C, C_4, E, H, k, P, Q, i, B, J1, J2    'As Integer

    If DatePart("w", CDate(datetoanalyse)) = vbSaturday Or _
       DatePart("w", CDate(datetoanalyse)) = vbSunday Then
       IsFerie = True : Exit Function
    End if 
 
    jour = Day(datetoanalyse)
    Mois = Month(datetoanalyse)
    Annee = Year(datetoanalyse)
  
    'Calcul des jours fériés "non fixes" (Lundi de Pâques, Ascension, Pentecôte)
    'Lundi de Pâques (Algorithme de Oudin)
    G = (Annee Mod 19)
    C = Fix(Annee / 100)
    C_4 = Fix(C / 4)
    E = Fix((8 * C + 13) / 25)
    H = Fix((19 * G + C - C_4 - E + 15) Mod 30)
    k = Fix(H / 28)
    P = Fix(29 / (H + 1))
    Q = Fix((21 - G) / 11)
    i = ((k * P * Q - 1) * k + H)
    B = (Fix(Annee / 4) + Annee)
    J1 = (B + i + 2 + C_4 - C)
    J2 = (J1 Mod 7)
  
    'Ici on obtient le jour de Pâques (dimanche), on lui ajoute 1 pour avoir le jour du lundi
    paques = 28 + i - J2 + 1
  
    'Ascension
    Ascension = paques - 23
  
    'Pentecôte
    Pentecote = paques - 12
  
    Select Case Mois
        Case 1
            'Jour de l'An
            If jour = 1 Then IsFerie = True
        Case 3
            'Pâques si paques<=31
            If paques <= 31 Then
                If jour = paques Then IsFerie = True
            End If
        Case 4
            'Pâques si paques>31
            If paques > 31 Then
                paques = paques - 31
                If jour = paques Then IsFerie = True
            End If
        Case 5
            'Fête du travail, Victoire, Ascension et Pentecôte
            If jour = 1 Or jour = 8 Or jour = Ascension Or jour = Pentecote Then IsFerie = True
        Case 7
            'Fête Nationale
            If jour = 14 Then IsFerie = True
        Case 8
            'Assomption
            If jour = 15 Then IsFerie = True
        Case 11
            'Toussaint et Armistice
            If jour = 1 Or jour = 11 Then IsFerie = True
        Case 12
            'Noël
            If jour = 25 Then IsFerie = True
        Case Else
            IsFerie = False
    End Select
End Function




jean-marc

jeudi 13 septembre 2007 à 09:38:20 | Re : Une feuille par jour ouvré

anthonyo

Ok, je teste cela et je reviens vers vous!

Merci!

vendredi 14 septembre 2007 à 08:50:29 | Re : Une feuille par jour ouvré

anthonyo

Merci pour votre aide!

JMO, j'ai pris ton code et je le garde sous le coude; j'ai pas encore eu le tps de l'adapter!



Cette discussion est classé dans : aide, feuille, jour, année, ouvré


Répondre à ce message

Sujets en rapport avec ce message

debutant aide!!!!!!!!!!!! [ par Debutant ] Salut , comment faut faire pour donner le jour dans un label ?lundi mardi mercredi le jour qu on est quoi Mise à jour d'un DBCombo? [ par joul ] Bonjour,J'ai un problème avec un dbccombo : Dans 1 feuille j'ai un dbcombo qui affiche des fournisseurs. Dans une autre feuille, je peut créer des fou AIDE DATA SVP ! [ par Seb ] Je fais un programme jeu :j ai une basse access que j accede grace au data de vb et j aimerai mettre a jour le score d'une personne à la fin d un jeu. [b]HELP[/b] URGENT: mise à jour automatique d'une feuille Excel dans Word [ par morgane ] Bonjour,normalement, lorsqu'on veut mettre à jour une feuille de calcul excel insérée dans un document d'un autre format(Word par exemple) on est obli macro pour changer le nom de la feuille active exel en date du jour [ par taungkid ] qui peut me dire comment on fait une macro qui me permet de changer le nom de la feuille sur laquelle je travaille dans exel en date du jour ex:Feuil1 aide sur les feuilles MDI [ par AraGorN ] bonjour all,Je voudrais savoir comment marche les feuille MDI, en utilisant une feuille normale a l'interieur.Merci++AraGorN date [ par wareg ] bonjourqu'elle est le code qui permet de calculer la différence entre deux dates au format jour, mois et année, sachant qu'il y a des text1, 2 et 3 po BESOIN D'AIDE !!! [ par chris ] Bonjour,Je suis bloqué en VBVoila, pour une feuille de cours je fais un petit calcule du type pourcentage: LePrix.Value = (((LePrix.Value * 3)/100)+ L Do Loop pour avoir jour mois année [ par Testuo ] 'lut, suis nouveau, commence juste la programmation. Sur Vb il met demandé de vérifier la validité de l'entrée année, mois et jour.Seulement pour le j Existe-t-il une variable "quantième du jour de l'année" ???.... [ par JMO ] Bonjour,J'ai besoin d'une variable AAQQQ pour deleter des fichiers archivés sur serveur.La proc deleterait les fichiers TEST_AAQQQ (-5 jours) dans un


Nos sponsors

Sondage...

CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,172 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.