VBA listbox et filtres auto

aeque

XLDnaute Occasionnel
re bonjour le fofo

encore une fois j'ai besoin de vos lumières


j'essaie d'alimenter une listbox (dans une UF) avec des données au préalable filtrées

j'ai rentré ce code-ci et me retrouve avec une erreur 424 Objet requis .....

qq'un a une idée où est mon erreur?

Merci beaucoup

Code:
Private Sub UserForm_Initialize()
With ListBox1
    .List = Range("prog").AutoFilter(Field:=11, Criteria1:="=").Value
    .ColumnCount = 10
    .ColumnWidths = "100;100;50;50;50;50;100;100;100;100"
End With
End Sub
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : VBA listbox et filtres auto

Bonjour aeque,

En premier lieu, si ton contrôle est bien un ListBox, la propriété pour le remplir est RowSource et non List.

D'autre part, je crois que cette instruction ne fonctionne pas avec des données filtrées : il va sûrement falloir utiliser une boucle. Pour t'aider davantage, un exemple de ton classeur sans données confidentielles serait le bienvenu.

A +

Cordialement.
 

ChTi160

XLDnaute Barbatruc
Re : VBA listbox et filtres auto

Bonjour
Bonjour le Fil
Bonjour le Forum

Pourtant chez moi , ceci fonctionne Lol
Private Sub UserForm_Initialize()
Dim Tablo() As Variant
ReDim Preserve Tablo(3)
Tablo(1) = "A"
Tablo(2) = "B"
Tablo(3) = "C"
Me.ListBox1.List = Tablo
End Sub
Mais RowSource fonctionne aussi avec une référence de Plage par exemple
Private Sub UserForm_Initialize()
Me.ListBox1.RowSource = "Feuil1! A1: A5"
End Sub
le manque de fichier nuit gravement à la compréhension
Bonne fin de journée
Amicalement
Jean Marie
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : VBA listbox et filtres auto

Bonjour à tous

Je tombais sur ce Fil et cette phrase est probablement incomplète de la part de Papou-Net:

En premier lieu, si ton contrôle est bien un ListBox, la propriété pour le remplir est RowSource et non List.

Car List est bien un propriété de ListBox (ou de ComboBox) qui renvoie ou définit la liste des Entrées...
RowSource est aussi une propriété mais qui spécifie uniquement la source de données.


Les deux peuvent permettre d'alimenter une ListBox, mais ce sont deux méthodes bien différentes, tout dépend l'usage voulu, dans le cas présent, je ne pense pas que RowSource puisse être utilisée sur une plage filtrée, et pour List nous aurons à contruire, je pense, un Tableau séquentiel avant, ou alors il faudra s'orienter vers la Propriété AddItem (pour une colonne) ou bien remplacée ou bien combinée avec la propriété Column (pour une ListBox en multi-colonnes avec un maximum de 10)

Pour le reste, le fichier de mon ami Jean Marie répond je pense à la question. Restait à remplacer la MsgBox dans la boucle par l'incrémentation de la ListeBox ce que j'ai fait dans l'exemple ci-joint.

Bien à vous
@+Thierry
 

Pièces jointes

  • AEQUE_ListBoxAndFilter.xls
    57 KB · Affichages: 277

Papou-net

XLDnaute Barbatruc
Re : VBA listbox et filtres auto

Bonsoir à tous,

Merci pour ta précision, Thierry. J'ai dit que List n'est pas une propriété de ListBox car elle n'apparaît pas dans la fenêtre Propriétés.

Je ne savais pas qu'on pouvait l'utiliser dans le code VBA, encore merci de me le faire découvrir. Merci aussi à ChTi160 qui l'avait écrit mais que je n'avais pas lu.

Sinon, je disais bien qu'il fallait passer par une boucle, mais comme la liste est multi-colonnes et que le fichier n'est pas joint, je n'ai pas poursuivi.

Cordialement.
 

aeque

XLDnaute Occasionnel
Re : VBA listbox et filtres auto

Bonsoir à Tous

Merci pour vous réponse ainsi que pour les 2 versions du fichier celà va me servir c'est clair!!

Par contre je n'arrive pas à l'appliquer à mon fichier. Peut etre qu'utiliser les filtres auto est un mauvais choix, je ne sais pas.

Je joins un fichier pour que celà soit plus clair.

Merci beaucoup!!

ps: Juste pour info au lancement de l'USF il y a une erreur direct ...
 

Pièces jointes

  • test.xlsm
    131.6 KB · Affichages: 116
  • test.xlsm
    131.6 KB · Affichages: 129
  • test.xlsm
    131.6 KB · Affichages: 143

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : VBA listbox et filtres auto

Bonsoir Aeque, Jean Marie, Papou-Net, le Forum

Pour Papou-Net ben moi ca sort en Propriété dès que je tape un point après une ListBox... Mais comme ca heureux de t'avoir montré ca.

Pour jean Marie hello à toi

Pour Aeque, tu cherches la difficulté ... Un tableau plein de formules, avec VBA, ça ne fait rarement "bon ménage"
Ta plage "tout" est un champ nommé calculé sur une formule ...
=DECALER(Programacao!$B$2,0,0,NBVAL(Programacao!$B:$B),NBVAL(Programacao!$2:$2))

En plus je ne comprends pas ton code, tu cherches à ENLEVER l'auto-filter ? => .AutoFilterMode = False

Pour arriver à passer le premier bug d'ouverture, il faut que tu adaptes cette ligne :
LastLig = .Cells(.Rows.Count, 2).End(xlUp).Row '(2 pour colonne B)

Sinon ca plante ensuite sur la ligne où il y a ce fameux nom "tout"... et là je n'ai plus le temps de regarder, je dois m'absenter... Ce que je vois c'est que tu ne place pas de critère de filtre... Donc ... Pas normal ...

Bon courage
@+Thierry
 

aeque

XLDnaute Occasionnel
Re : VBA listbox et filtres auto

Thierry

Merci pour ta réponse, oui il y a bcp de formules dans ce fichier.

quand tu dis
Ce que je vois c'est que tu ne place pas de critère de filtre... Donc ... Pas normal ...

justement si je souhaite uniquement que les données vides de la colonne s'affiche ...

maintenant je ne sais pas du tout si passé par un filtre auto est la meilleure des solutions, si qqun a une proposition je suis preneur
 

ChTi160

XLDnaute Barbatruc
Re : VBA listbox et filtres auto

Bonsoir

voila ce que j'ai mis dans le Private Sub UserForm_Initialize()
Code:
Private Sub UserForm_Initialize()
Dim Lgn As Integer
Dim LastLig As Long
Dim Col As Byte
Dim LastCol As Byte
Dim x As Integer
Dim Tab_Recup As Variant
Dim Tab_Recap() As Variant

DTPicker1.Value = Now()

x = 0

With Me.ListBox1
             .ColumnCount = 11 'on definie le nombre de colonne de la ListBox
             .ColumnWidths = "90;70;50;50;50;50;90;70;90;90;90"  'on définie la largeur des colonnes
End With
With Worksheets("Programacao") 'avec la feuille
          
    LastLig = .Cells(.Rows.Count, 2).End(xlUp).Row  'on détermine la dernière ligne non vide de la page de données
    LastCol = .Cells(2, .Columns.Count).End(xlToLeft).Column  'ici la dernière colonne
         Tab_Recup = .Range(.Cells(3, 2), .Cells(LastLig, LastCol)).Value  'on remplie le tableau des donnees de la plage ainsi définie
End With
    
     For Lgn = 1 To UBound(Tab_Recup, 1)  'pour chaque ligne du tableau
            If Tab_Recup(Lgn, 11) = "" Then  'si colonne 11 vide alors
                    
             ReDim Preserve Tab_Recap(11, x) 'on redimensionne le tableau temporaire
             
                For Col = 1 To UBound(Tab_Recup, 2) - 1  'pour chaque colonne du Tableau de s données
                  Tab_Recap(Col, x) = Tab_Recup(Lgn, Col)   'on colle les valeurs
                
                Next Col  'autre colonne
                  x = x + 1  'on incremente 
             End If
     Next Lgn
   With Me.ListBox1  'avec la listBox
          .Clear 'on l'efface
          .List = Application.Transpose(Tab_Recap)  'on colle le tableau temporaire
   End With
End Sub

Bonne fin de Soirée
Amicalement
Jean marie
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : VBA listbox et filtres auto

RE coucou à tous

Jean Marie, c'est pas Ocean 11 or 12 or 13 les ListBox, elles s'arrêtent à OceanCount = 10 :)

Sinon je vais regarder le reste ...
@+Thierry

EDITION,
mais tu n'as pas mis de fichier Jean Marie ? ARF Je vais pas le fabriquer LoL
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : VBA listbox et filtres auto

Re Bonsoir à tous

Jean Marie j'ai repris ton code tel quel dans le UserForm2 de notre ami Aeque.

Le Setup à 11 Colonnes dans la ListBox ne plantent pas mais donc la 11ième est pûrement et simplement ignorée.

Par contre je me rends compte mon cher ami tu as eu un souci avec la Base 0 de ton Tableau "Tab_Recap"... Soit tu mets l'Option Base 1, soit tu ne peux pas incrémenter de la sorte Jean Marie... Ca passe sans plantage, mais tu décales d'une colonne vide dans la ListBox au final...

Ci joint les deux possibilitée, moi perso j'ai pris tellement l'habitude en Base 0 (par défaut) que je "pense" toujours en base zéro... Mais c'est une question de choix dans la flexibilité de VB...
(Les modifs "Base 1" sont en ''''''''' commentaires)

En fait pour être sûr de ces Tableaux séquentiels transposés dans une ListBox, je me fais toujours deux ou trois Lignes Bidons de Tests (voir mon fichier), car on finit toujours par se planter à un moment où à un autre...

Bonne soirée
@+Thierry
 

Pièces jointes

  • AEQUE_CHTI160_REview_Thierry.xlsm
    119.2 KB · Affichages: 203
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re : VBA listbox et filtres auto

Bonjour Aeque
Bonjour Thierry
Bonjour le Forum

Merci pour ces petits rappels sur la ListBox (je Bidouille plus les ListView).
j'avais mis les 11 colonnes , car notre ami parle de la colonne Dates (la 11)
IL FAUDRAIT QUE DANS LA LISTBOX APPARAISSENT UNIQUEMENT LES CONTAINER DANS AUCUNE DATES DE RETOUR (COLONNE L)
je pense même que l'ensemble aurait été préférable. car ensuite je pense qu'il va falloir travailler sur la Ligne entière (report vers Userform2 ?????)
donc je l'ai incluse dans la ListBox , logique pour moi Lol
Merci Thierry
Bonne Journée
Amicalement
Jean Marie
 

Discussions similaires

Réponses
3
Affichages
649