Microsoft 365 Afficher des données déjà filtrées dans une listbox

jsebt

XLDnaute Junior
Bonjour à tous,

J'ai un petit soucis avec une listbox :)

J'utilise une userform multipages, dans lequel j'ai un onglet(AGP) avec des lieux d'implantations. Dans cet onglet, j'ai un listbox pour afficher tous ces lieux.
Je souhaiterais n'afficher dans cette listbox uniquement les lieux correspondant a "AGP" ou "AA" dans la colonne type. Sans aucune action de filtrage manuel.
Je suis sur que c'est tout simple, mais je bloque..
Merci par avance pour votre aide.

Sébastien
 

Pièces jointes

  • GDV-FINAL - VIERGE.xlsm
    803.6 KB · Affichages: 8

ChTi160

XLDnaute Barbatruc
Bonsoir Sebastien
Bonsoir le Fil ,le Forum
tu Utilises la propriété RowSource pour charger ta ListBox donc pas possible de Trier .
il te faut passer par Un tableau TabAGV (reprise des données de la feuille "Aires et AGP" pour pouvoir trier .
je regarde cela (si tu n'y arrives pas!) j'attends lol
(As tu regarder le fichier que je t'ai mis sur l'autre Fil?)
jean marie
 
Dernière édition:

jsebt

XLDnaute Junior
Bonjour Jean Marie et le forum :)

Content de te revoir Jean Marie, les vacances ont été bonnes?

Merci pour ta réponse, et oui, la rowsource... C'était la solution la plus simple pour moi pour mettre en place la listbox. Je tâtonne encore beaucoup avec les tableaux. Mais je vais regarder ta solution, j'ai bien étudié ton code, et je crois que j'ai compris l'histoire des tableaux. Je vais essayer :)

Et pour ton fichier, j'ai regardé mes 3 sujets ouverts, mais je ne vois pas le fichier dont tu me parles, tu l'as mis dans quel fil? (Je n'aurai pas vu un de tes fichiers sans te faire un retour :) A chaque fois que tu en mets un j'ai plein de surprises dedans, comme à Noel :))
Bonne fin de journée à tous ou a plus tard.

Sébastien
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

VB:
Option Compare Text
Dim f, Rng, TblBD()
Private Sub UserForm_Initialize()
  Set f = Sheets("BD")
  Set d = CreateObject("Scripting.Dictionary")
  Set Rng = f.Range("A2:K" & f.[A65000].End(xlUp).Row)
  TblBD = Rng.Value
  Me.ListBox1.ColumnCount = Rng.Columns.Count
  EnteteListBox
  n = 0
  Dim Tbl()
  For i = 1 To UBound(TblBD)
     If TblBD(i, 3) = "AA" Or TblBD(i, 3) = "AGP" Then
        n = n + 1: ReDim Preserve Tbl(1 To UBound(TblBD, 2), 1 To n)
        For k = 1 To UBound(TblBD, 2): Tbl(k, n) = TblBD(i, k): Next k
     End If
   Next i
   Me.ListBox1.Column = Tbl
End Sub

Sub EnteteListBox()
  x = Me.ListBox1.Left + 8
  Y = Me.ListBox1.Top - 12
  For i = 1 To Me.ListBox1.ColumnCount
    Set lab = Me.Controls.Add("Forms.Label.1")
    lab.Caption = Rng.Offset(-1).Cells(1, i)
    lab.Top = Y
    lab.Left = x
    x = x + Rng.Columns(i).Width * 1.1
    temp = temp & Rng.Columns(i).Width * 1.1 & ";"
  Next
  temp = Left(temp, Len(temp) - 1)
  Me.ListBox1.ColumnWidths = temp
End Sub



Exemple d'affichage d'une zone filtrée dans un ListBox


Boisgontier
 

Pièces jointes

  • AGPAA.xls
    86 KB · Affichages: 10
Dernière édition:

jsebt

XLDnaute Junior
Merci Boisgontier pour ta proposition, je regarde çà.
Et bien evidemment, merci à Jean Marie, toujours là quand il faut :)
Pas trop de temps aujourd'hui et demain, j'essaye de m'y remettre vendredi et je vous tiens au courant.
Merci a vous 2 pour votre support en tout cas.
Bonne fin de journée

Sébastien
 

Discussions similaires

Réponses
21
Affichages
1 K
Réponses
4
Affichages
317

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87