Affichage automatique dans listbox en fonction de date

  • Initiateur de la discussion Initiateur de la discussion ifi77
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ifi77

XLDnaute Occasionnel
Bonjour à tous,

afin de suivre immédiatement des personnes en fonction d'une date j'aimerais que ceux dont la date (en colonne C dans le classeur) arrive à moins de 8 mois (par exemple )d'aujourd'hui apparaissent dans la lisbox à l'ouverture.

Je ne vois pas comment tourner la fonction pour alimenter la listbox

Merci @ tous

@ +
 

Pièces jointes

Re : Affichage automatique dans listbox en fonction de date

Bonjour ifi77,

peut-être en modifiant l'initialisation comme suit

Code:
Private Sub UserForm_Initialize()
    Dim hwnd As Long, Style As Long, i As Long, NbMois As Long
    hwnd = FindWindow(vbNullString, Me.Caption)
    Style = GetWindowLong(hwnd, -16) And Not &HC00000
    SetWindowLong hwnd, -16, Style
    DrawMenuBar hwnd
    'Alimentation listbox
    Me.ListBox1.Clear
    With Sheets("Feuil1")
        For i = 2 To .Range("A65536").End(xlUp).Row
             NbMois = DateDiff("m", .Cells(i, 3).Value, Date, vbMonday, vbFirstFourDays) + (Day(Date) < Day(.Cells(i, 3).Value))
             If NbMois < 8 Then Me.ListBox1.AddItem .Cells(i, 1).Value
        Next i
    End With
End Sub
 
Re : Affichage automatique dans listbox en fonction de date

Re,

Change les propriétés de Listbox1 comme suit :

ColumnCount : 3
ColumnWidths : 70;70;70

puis à tester

Code:
Private Sub UserForm_Initialize()
    Dim hwnd As Long, Style As Long, i As Long, NbMois As Long, LstNoms() As String
    hwnd = FindWindow(vbNullString, Me.Caption)
    Style = GetWindowLong(hwnd, -16) And Not &HC00000
    SetWindowLong hwnd, -16, Style
    DrawMenuBar hwnd
    'Alimentation listbox
    Me.ListBox1.Clear
    ReDim LstNoms(1 To 3, 1 To 1)
    With Sheets("Feuil1")
        For i = 2 To .Range("A65536").End(xlUp).Row
             NbMois = DateDiff("m", .Cells(i, 3).Value, Date, vbMonday, vbFirstFourDays) + (Day(Date) < Day(.Cells(i, 3).Value))
             If NbMois < 8 Then
                If LstNoms(1, 1) <> "" Then ReDim Preserve LstNoms(1 To 3, 1 To UBound(LstNoms, 2) + 1)
                LstNoms(1, UBound(LstNoms, 2)) = .Cells(i, 1).Value
                LstNoms(2, UBound(LstNoms, 2)) = .Cells(i, 2).Value
                LstNoms(3, UBound(LstNoms, 2)) = Format(.Cells(i, 3).Value, "DD/MM/YYYY")
             End If
        Next i
        Me.ListBox1.Column = LstNoms
    End With
End Sub
 
Re : Affichage automatique dans listbox en fonction de date

tototiti, je me permets de te demander uen dernièe chose, en fait il y aura plusieurs listbox reprenant les informations de plusieurs pas pour s'alimenter, en fait la listbox 1 alimenter par la feuil1; la listbox 2 par la feuil 2 (ou autre nom), j'essaye en fait de comprendre ton code pour l'adapter à cela mais je ne comprends pas toutes les finalités de ce que tu as écris, si tu peux m'éclairer pour cela encore merci.

@+
 
Re : Affichage automatique dans listbox en fonction de date

Re,

Je veux bien tout commenter mais le mieux serait de poser des questions sur ce qui coince vraiment

Code:
Private Sub UserForm_Initialize()
    Dim hwnd As Long, Style As Long, i As Long, NbMois As Long, LstNoms() As String
    hwnd = FindWindow(vbNullString, Me.Caption)
    Style = GetWindowLong(hwnd, -16) And Not &HC00000
    SetWindowLong hwnd, -16, Style
    DrawMenuBar hwnd
    'Alimentation listbox
    Me.ListBox1.Clear
    ReDim LstNoms(1 To 3, 1 To 1)
    With Sheets("Feuil1") 'Dans la Feuil1
        For i = 2 To .Range("A65536").End(xlUp).Row ' De la ligne 2 à la dernière ligne remplie colonne A
             NbMois = DateDiff("m", .Cells(i, 3).Value, Date, vbMonday, vbFirstFourDays) + (Day(Date) < Day(.Cells(i, 3).Value))
             'Calcul du nombre de mois entre la date du jour et la date colonne C
             If NbMois < 8 Then
                'Si le nombre de mois est inférieur à 8, on alimente un tableau (LstNoms) avec les données de la ligne
                If LstNoms(1, 1) <> "" Then ReDim Preserve LstNoms(1 To 3, 1 To UBound(LstNoms, 2) + 1)
                'On agrandit le tableau pour accueillir les nouvelles données
                LstNoms(1, UBound(LstNoms, 2)) = .Cells(i, 1).Value
                LstNoms(2, UBound(LstNoms, 2)) = .Cells(i, 2).Value
                LstNoms(3, UBound(LstNoms, 2)) = Format(.Cells(i, 3).Value, "DD/MM/YYYY")
                'On remplit la nouvelle "ligne" du tableau
             End If
        Next i
        Me.ListBox1.Column = LstNoms 'On utilise le tableau LstNoms pour alimenter la listbox
    End With
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
345
Réponses
16
Affichages
1 K
Retour