IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA Excel] - création d'une listbox des jours ouvrés


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut [VBA Excel] - création d'une listbox des jours ouvrés
    Bonjour,

    Mon problème est le suivant :
    Je souhaite créer une liste comprenant les jours ouvrés du mois en cours.

    voici le code que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    '--------------------------------------------------------------------------
    'Définition du nb de jours dans le mois
    '--------------------------------------------------------------------------
            If Month(Date) = 4 Or Month(Date) = 6 Or Month(Date) = 9 Or Month(Date) = 11 Then
                n = 30
            ElseIf Month(Date) = 2 Then
                If (Year(Date) - 2008) / 4 = Int((Year(Date) - 2008) / 4) Then
                    n = 29
                Else
                    n = 28
                End If
            Else
                n = 31
            End If
    '--------------------------------------------------------------------------
    'Fin de Définition du nb de jours dans le mois
    '--------------------------------------------------------------------------
            i = 0
            UserForm1.ListBox1.Clear
            'pour chaque jour dans le mois
            For i = 0 To n - 1
                'si le jour n'est ni un samedi ni un dimanche
                If Not Weekday(DateSerial(Year(Date), Month(Date), i + 1)) = 1 Then
                    If Not Weekday(DateSerial(Year(Date), Month(Date), i + 1)) = 7 Then
    '--------------------------------------------------------------------------
    'Définition de la liste (correspondant aux jours ouvrés du mois)
    '--------------------------------------------------------------------------
                        For Each c In Fl1.Range("JFERIES")
                            If Month(c.Value) = Month(Date) Then
                                If Not DateSerial(Year(Date), Month(Date), i + 1) = c.Value Then
                                    If UserForm1.ListBox1.ListCount > 1 Then
                                        If Not UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 0) = DateSerial(Year(Date), Month(Date), i + 1) Then
                                            UserForm1.ListBox1.AddItem (DateSerial(Year(Date), Month(Date), i + 1))
                                        End If
                                    Else
                                        UserForm1.ListBox1.AddItem (DateSerial(Year(Date), Month(Date), i + 1))
                                    End If
                                End If
                            Else
                                If UserForm1.ListBox1.ListCount > 1 Then
                                    If Not UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 0) = DateSerial(Year(Date), Month(Date), i + 1) Then
                                        UserForm1.ListBox1.AddItem (DateSerial(Year(Date), Month(Date), i + 1))
                                    End If
                                Else
                                    UserForm1.ListBox1.AddItem (DateSerial(Year(Date), Month(Date), i + 1))
                                End If
                            End If
                        Next c
    '--------------------------------------------------------------------------
    'Fin de Définition de la liste
    '--------------------------------------------------------------------------
                    End If
                End If
            Next i
    UserForm1.Show
    Le souci est qu'il n'a pas l'air de prendre en compte les conditions pour l'ajout des lignes de la liste.

    Je m'explique : ma liste ne me donne bien que les jours ouvrés du mois, mais pour chaque date, j'ai autant de ligne que de cellules comprises dans JFERIES...

    Pourquoi ?

    Merci de vos contributions

  2. #2
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut
    Résolu pour ceux que ça intéresse !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    '-------------------------------------------------------------------------------------------------------
    'Définition du nb de jours dans le mois
    '--------------------------------------------------------------------------
            If Month(Date) = 4 Or Month(Date) = 6 Or Month(Date) = 9 Or Month(Date) = 11 Then
                n = 30
            ElseIf Month(Date) = 2 Then
                If (Year(Date) - 2008) / 4 = Int((Year(Date) - 2008) / 4) Then
                    n = 29
                Else
                    n = 28
                End If
            Else
                n = 31
            End If
    '--------------------------------------------------------------------------
    'Fin de Définition du nb de jours dans le mois
    '--------------------------------------------------------------------------
            i = 0
            UserForm1.ListBox1.Clear
            'pour chaque jour dans le mois
            For i = 0 To n - 1
                Dim madate As Date
                madate = DateSerial(Year(Date), Month(Date), i + 1)
                'si madate n'est ni un samedi ni un dimanche
                If Not Weekday(madate) = 1 And Not Weekday(madate) = 7 Then
    '--------------------------------------------------------------------------
    'Définition de la liste (correspondant aux jours ouvrés du mois)
    '--------------------------------------------------------------------------
                    m = 0
                    For Each c In Fl1.Range("JFERIES")
                        If c.Value = madate Then
                            m = 1
                        End If
                    Next c
                    'si madate n'est pas un jours férié
                    If m = 0 Then
                        UserForm1.ListBox1.AddItem (madate)
                    End If
    '--------------------------------------------------------------------------
    'Fin de Définition de la liste
    '--------------------------------------------------------------------------
                End If
            Next i

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-Excel] Création d'une boîte de dialogue interactive
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/07/2006, 11h55
  2. [VBA Excel] Ajouter, supprimer une ligne ou collone range
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/11/2005, 15h53
  3. vba excel - Comment saisir une cellule sans faire entrer
    Par brethomeau dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/11/2005, 17h50
  4. VBA EXCEL - Sélection d'une ligne suivant saisie
    Par brethomeau dans le forum Macros et VBA Excel
    Réponses: 48
    Dernier message: 15/11/2005, 17h41
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo