Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Merci tototiti cela fonctionne parfaitement, si je peux te demander un dernier coup de pouce, juste pour afficher la ligne entière dans la listbox
merci encore

@+
 
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
 
Re : Affichage automatique dans listbox en fonction de date

Merci tototiti

grace à tes explication, j'ai compris le fonctionnement et ai réussi à adapter à plusieurs listbox.

Un grand merci

@ bientot
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…