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

VB 6 et antérieur Discussion :

Semaine dans un combobox


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Homme Profil pro
    électricien
    Inscrit en
    Mars 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : électricien

    Informations forums :
    Inscription : Mars 2016
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Semaine dans un combobox
    Bonjour,

    comment afficher dans un combobox les semaines du mois de juillet et aout.
    par exemple pour l'année 2016 :
    S 27 du 04 au 08
    S 28 du 11 au 15
    S 29 du 18 au 22
    S 30 du 25 au 29
    etc....
    et que chaque année ça change automatiquement.
    est ce possible ?
    merci

    cordialement

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Essaie avec ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Form_Load()
     
       DateDebut = "04/07/" & Year(Date)
       DateFin = "31/08/" & Year(Date)
       nbWeeks = DateDiff("ww", DateDebut, DateFin)
     
       Combo1.AddItem "Semaine " & DatePart("ww", DateDebut, vbSunday, vbFirstFullWeek) & " du " & Right("00" & Day(DateDebut), 2) & " au " & Right("00" & Day(DateAdd("d", 4, DateDebut)), 2) & " " & MonthName(Month(DateDebut), False)
     
      For I = 2 To nbWeeks
        DateDebut = DateAdd("ww", 1, DateDebut)
        Combo1.AddItem "Semaine " & DatePart("ww", DateDebut, vbSunday, vbFirstFullWeek) & " du " & Right("00" & Day(DateDebut), 2) & " au " & Right("00" & Day(DateAdd("d", 4, DateDebut)), 2) & " " & MonthName(Month(DateDebut), False)
      Next I
      Combo1.ListIndex = 0
    End Sub
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Futur Membre du Club
    Homme Profil pro
    électricien
    Inscrit en
    Mars 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : électricien

    Informations forums :
    Inscription : Mars 2016
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Bonjour,
    merci pour ton code qui fonctionne super bien.
    j'ai changé l'année de mon pc (2017) pour essayer mais les semaines et les jours ne change pas.
    comment faire pour changer automatiquement tous les ans ?

    merci

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Teste alors ce
    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
    Option Explicit
    Dim DateDebut As Date, I%, DateFin As Date, nbWeeks%
     
    Private Sub Form_Load()
      ' Pour tester sur d'autres années, on n'a pas besoin de modifier la date du système
      ' La modification doit obligatoirement être la même et faite sur les 2 lignes suivantes :
     
       DateDebut = "01/07/" & Year(Date) ' Mettre ici + ou - un nombre par exemple: +1 pour avoir 2017 ou -1 pour 2015
       DateFin = "31/08/" & Year(Date) ' et ici :  +1 pour avoir 2017 ou -1 pour 2015
       DateDebut = FindFirstDayOfWeekInMonth(DateDebut)
       nbWeeks = DateDiff("ww", DateDebut, DateFin)
     
       Combo1.AddItem "Semaine " & DatePart("ww", DateDebut, vbSunday, vbFirstFullWeek) & " du " & _
            Right("00" & Day(DateDebut), 2) & " au " & Right("00" & Day(DateAdd("d", 4, DateDebut)), 2) & _
            " " & MonthName(Month(DateDebut), False) & "  " & Year(DateDebut)
     
      For I = 2 To nbWeeks
        DateDebut = DateAdd("d", 7, DateDebut)
        Combo1.AddItem "Semaine " & DatePart("ww", DateDebut, vbSunday, vbFirstFullWeek) & " du " & _
           Right("00" & Day(DateDebut), 2) & " au " & Right("00" & Day(DateAdd("d", 4, DateDebut)), 2) & _
           " " & MonthName(Month(DateAdd("d", 4, DateDebut)), False) & "  " & Year(DateDebut)
      Next I
      Combo1.ListIndex = 0
     
    End Sub
    Function FindFirstDayOfWeekInMonth(newDate As Date) As Date
       Dim numWeek%, tb(6) As Date, K%
     
        numWeek% = DatePart("ww", newDate, vbSunday, vbFirstFullWeek)
        newDate = DateAdd("d", -8, newDate)
        K = 0
        For I = 0 To 15
           newDate = DateAdd("d", 1, newDate)
           If DatePart("ww", newDate, vbSunday, vbFirstFullWeek) = numWeek% Then
             tb(K) = newDate
             K = K + 1
           End If
        Next I
        FindFirstDayOfWeekInMonth = DateAdd("d", 1, tb(UBound(tb)))
    End Function
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Futur Membre du Club
    Homme Profil pro
    électricien
    Inscrit en
    Mars 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : électricien

    Informations forums :
    Inscription : Mars 2016
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    super,merci beaucoup , c'est nickel

    cordialement

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    J'ai constaté que parfois, la valeur retournée dans le ComboBox peut prêter à confusion. Par exemple, parmi les résultats, il y a : Semaine 31 du 31 au 04 août 2016.
    Alors pour lever tout équivoque, je propose la modification suivante affichant le jour et le mois de début et de fin de la semaine :
    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
    Private Sub Form_Load()
      ' Pour tester sur d'autres années, on n'a pas besoin de modifier la date du système
      ' La modification doit obligatoirement être la même et faite sur les 2 lignes suivantes :
     
       DateDebut = "01/07/" & Year(Date) ' Mettre ici + ou - un nombre par exemple: +1 pour avoir 2017 ou -1 pour 2015
       DateFin = "31/08/" & Year(Date) ' et ici :  +1 pour avoir 2017 ou -1 pour 2015
       DateDebut = FindFirstDayOfWeekInMonth(DateDebut)
       nbWeeks = DateDiff("ww", DateDebut, DateFin)
     
       Combo1.AddItem "Semaine " & DatePart("ww", DateDebut, vbSunday, vbFirstFullWeek) & " : du " & _
            Right("00" & Day(DateDebut), 2) & "  " & MonthName(Month(DateDebut)) & " au " & Right("00" & Day(DateAdd("d", 4, DateDebut)), 2) & _
            " " & MonthName(Month(DateDebut), False) & "  " & Year(DateDebut)
     
      For I = 2 To nbWeeks
        DateDebut = DateAdd("d", 7, DateDebut)
        Combo1.AddItem "Semaine " & DatePart("ww", DateDebut, vbSunday, vbFirstFullWeek) & " : du " & _
           Right("00" & Day(DateDebut), 2) & "  " & MonthName(Month(DateDebut)) & " au " & Right("00" & Day(DateAdd("d", 4, DateDebut)), 2) & _
           " " & MonthName(Month(DateAdd("d", 4, DateDebut)), False) & "  " & Year(DateDebut)
      Next I
      Combo1.ListIndex = 0
    End Sub
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  7. #7
    Futur Membre du Club
    Homme Profil pro
    électricien
    Inscrit en
    Mars 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : électricien

    Informations forums :
    Inscription : Mars 2016
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    bonjour,
    oui j'avais remarqué,car j'ai voulu séparé le mois de juillet et le mois d'aout ,
    donc j'ai créer un second combobox et j'ai fait un copier coller du code en changeant le non du combobox
    et au mois d'aout je n'avais pas la semaine 31 sauf en modifiant " DateDebut = "30/07/" et la j'ai la semaine 31 .
    j'ai du modifier ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FindFirstDayOfWeekInMonth = DateAdd("d", 2, tb(UBound(tb)))
    car il commencer le dimanche
    c'est bizarre qu'il ne prends pas la semaine 31 en commencant le 01/08 ?

  8. #8
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Quand j'ai eu un peu de temps, j'ai regardé le code de près et j'ai pu faire ceci :
    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
    Private Sub Form_Load()
      ' Pour tester sur d'autres années, on n'a pas besoin de modifier la date du système
      ' La modification doit obligatoirement être la même et faite sur les 2 lignes suivantes :
     
       DateDebut = "01/08/" & Year(Date) ' Mettre ici + ou - un nombre par exemple: +1 pour avoir 2017 ou -1 pour 2015
       DateFin = "31/08/" & Year(Date) ' et ici :  +1 pour avoir 2017 ou -1 pour 2015
     
       DateDebut = FirstDayOfWeekInMonth(DateDebut)
       nbWeeks = DateDiff("ww", DateDebut, DateFin)
     
       Combo1.AddItem "Semaine " & DatePart("ww", DateDebut, vbUseSystemDayOfWeek, vbFirstFourDays) & " : du " & _
            Right("00" & Day(DateDebut), 2) & "  " & MonthName(Month(DateDebut)) & " au " _
            & Right("00" & Day(DateAdd("d", 4, DateDebut)), 2) & _
            " " & MonthName(Month(DateDebut), False) & "  " & Year(DateDebut)
     
      For I = 2 To nbWeeks
        DateDebut = DateAdd("d", 7, DateDebut)
        Combo1.AddItem "Semaine " & DatePart("ww", DateDebut, vbUseSystemDayOfWeek, vbFirstFourDays) & " : du " & _
           Right("00" & Day(DateDebut), 2) & "  " & MonthName(Month(DateDebut)) & " au " _
           & Right("00" & Day(DateAdd("d", 4, DateDebut)), 2) & _
           " " & MonthName(Month(DateAdd("d", 4, DateDebut)), False) & "  " & Year(DateDebut)
      Next I
      Combo1.ListIndex = 0
     For I = 0 To Combo1.ListCount - 1
        List1.AddItem Combo1.List(I)
     Next I
     List1.ListIndex = 0
    End Sub
    Puis j'ai modifié la fonction de recherche d'une date valide pour le cas, voici la modification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function FirstDayOfWeekInMonth(myDate As Date) As Date
      Dim numWK%, newDate As Date
      numWK = DatePart("ww", myDate, vbUseSystemDayOfWeek, vbFirstJan1)
     
      myDate = DateAdd("d", -7, myDate)
      newDate = myDate
      Do While DatePart("ww", newDate, vbUseSystemDayOfWeek, vbFirstJan1) <> numWK
        newDate = DateAdd("d", 1, newDate)
        If DatePart("ww", newDate, vbUseSystemDayOfWeek, vbFirstJan1) = numWK Then
           FirstDayOfWeekInMonth = IIf(newDate >= DateAdd("d", 7, myDate), newDate, DateAdd("d", 7, newDate))
           Exit Do
        End If
     Loop
    End Function
    Avec cette fonction, si tu changes la date de début en mettant 01/08/2016 pour la même date de fin, tu auras ce que souhaites avoir. La fonction est valable pour tout autre mois à condition que la date entrée soit valide(nombre de jours max pour un mois donné).
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

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

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. lister des dossiers dans un ComboBox
    Par taulmaril dans le forum Windows
    Réponses: 7
    Dernier message: 01/05/2004, 14h31
  3. [VB6] suggestion des entrés dans un combobox
    Par s.rais dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/02/2004, 15h32
  4. [MFC]Value Controle dans un comboBox
    Par jul54 dans le forum MFC
    Réponses: 6
    Dernier message: 10/02/2004, 09h57
  5. manque de place dans un combobox
    Par liviertlse dans le forum Composants VCL
    Réponses: 4
    Dernier message: 24/10/2003, 16h19

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