Récupération de liste

Bonjour à tous,

Merci pour la richesse d'information de ce site, et à tous pour vos contributions.

Je souhaite récupérer dans un UserForm grâce à un Combobox et une ListBox, l'ensemble des personnes (noms et dates) en alerte dans la feuil1 d'un fichier de suivi de personnel.

Idéalement, la ListBox devra s'adapter à la longueur de la liste.

Mon niveau en vba ne me permet pas cet exploit...

Vous trouverez en pièce jointe le détail de la demande et le modèle voulu.

Merci pour vos connaissances.

A tout à l'heure !

AL 22

Salut AL,

ton fichier à ma sauce...

L'USF s'ouvre en mode non-modale sur un double-clic en ligne 2 sur une cellule non-vide... évidemment!

  • pas besoin de mettre de côté la liste des en-têtes : la ComboBox s'alimente automatiquement ;
  • sur "USF" = ouverture standard ;
  • sur toute autre cellule, la ListBox se remplit automatiquement des données de la colonne cliquée ;
  • l'USF se met aux dimensions de la ListBox, comme demandé.

J'imagine que le but de ta recherche est de mettre les dates à jour selon le type d'alerte.

Une sélection dans la ListBox sélectionne la ligne correspondante sur la feuille où, grâce au mode non-modal, tu peux cliquer les dates à la volée.

Il me manque le calcul à effectuer sur ces dates en fonction du type d'alerte... A toi de voir si c'est nécessaire!

Private Sub Combo1_Change()
'
Dim iCol%, iHeight%, sCol$, sItem$, sMsg
'
Me.lstAlertes.Clear
With Worksheets("BDD")
    iCol = 2 + (CInt(Me.Combo1.ListIndex) * 2)
    sItem = UCase(.Cells(2, iCol)) & " !"
    sCol = Split(Columns(iCol + 1).Address(ColumnAbsolute:=False), ":")(1)
    For x = 3 To .Range(sCol & Rows.Count).End(xlUp).Row
        If .Range(sCol & x).Value = sItem Then
            Me.lstAlertes.AddItem .Range("A" & x).Value
            Me.lstAlertes.List(Me.lstAlertes.ListCount - 1, 1) = .Range(sCol & x).Offset(0, -1).Value
        End If
    Next
    iHeight = CInt(Me.lstAlertes.ListCount + 1) * 10
    Me.lstAlertes.Height = iHeight
    usfAlertes.Height = 55 + iHeight
End With
'
End Sub

A+

Bonjour à tous,

Merci beaucoup curulis57 pour cet excellent retour nocturne !

En effet, tout fonctionne très bien et pour l'instant il n'est pas nécessaire de corriger les dates directement.

Pour parfaire l'utilisation du UserForm, est-il possible de rajouter à la Combobox une ligne (type : "Pas d'alertes") en cas de liste sans alertes afin de ne pas avoir la ListBox vide. (c'est moche...)

De plus, comment borner la liste des alertes. J'entends par là que le fichier final contient pas mal d'autres infos après celles des alertes, que je ne veux pas retrouver dans la Combobox. Il y aura entre 8 et 10 alertes. Je n'ai pas pensé à la construction du fichier exemple à rajouter des informations fictives. Mince.

En tout cas, c'est sûr, bravo pour ce code que je n'aurai pas pu créer et pour lequel je me pose beaucoup de questions pour le comprendre. Bien vu le " !" pour aller chercher l'info, ou le "iHeight" pour la taille de la ListBox et du UserForm.

Chapeau !

Merci à toi si tu peux finaliser ce fichier et pour le temps que tu y as passé.

Bonne fin de journée et à très bientôt.

AL 22

Salut AL,

voici ton fichier modifié.

- l'USF ne s'ouvre que si tu cliques sur la cellule "USF" ou si la cellule (ou sa voisine) contient le mot "Alerte" ;

    If Target = "USF" Or InStr(Target, "Alerte") > 0 Or InStr(Target.Offset(0, 1), "Alerte") > 0 Then

- la ListBox affiche "Pas d'alerte !" si aucune entrée n'est trouvée ;

If Me.lstAlertes.ListCount = 0 Then Me.lstAlertes.AddItem "Pas d'alerte !"

- dans ce cas, la ListBox est désactivée pour éviter les bêtises et se colore de rouge pâle ;

    Me.lstAlertes.Enabled = IIf(Me.lstAlertes.List(0, 0) = "Pas d'alerte !", False, True)
    Me.lstAlertes.BackColor = IIf(Me.lstAlertes.Enabled = True, &H8000000F, &HC0C0FF)

- la mise à jour automatique des dates est retirée ainsi que le mode non modal de l'Usf.

Cela te convient-il ainsi ?

A+

Bonsoir,

@curulis57

Merci pour tes corrections sur le fichier. Tout est OK et fonctionnel pour moi. Bravo !

Le sujet est clos.

A bientôt sur le forum.

AL 22

Rechercher des sujets similaires à "recuperation liste"