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

XL 2016 Llistbox filtrée ne se rafraichit pas

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 !

ptj75

XLDnaute Nouveau
Bonjour a tous,
j ai une listbox dans un userform qui ne se rafraichit pas après un filtre sur une colonne en testant si la valeur est "oui" ou "non".j agit sur le parametre Listbox.RowSource
la feuille BD est bien filtrée.ListBox1.RowSource prend bien les adresses correspondant bien aux lignes filtrées.
mais la visu de la listbox dans le userform est vide est vide .



Private Sub CommandButton8_Click()
'bouton recherche cable basculé
If Sheets("BD").Range("B2") <> "" Then
With Sheets("BD")
If Worksheets("BD").FilterMode Then Worksheets("BD").ShowAllData
End With
'ListBox1.Clear
Sheets("BD").Range("B1:B65000").AutoFilter 2, "=" & "OUI"
ListBox1.RowSource = _
Sheets("BD").Range("BD!A2:" & _
Sheets("BD").Range("AG2").End(xlDown).Address). _
SpecialCells(xlCellTypeVisible).Address
End If
End Sub
Cà marche quand on trouve 3 "OUI" à la suite dans toute la liste, par contre dès qu'il y un "OUI" de plus ,pas à la suite , la visu de la listbox est vide.
lorsque je veux faire une ListBox1.Clear, j 'ai une erreur.

Si quelqu'un peut m'aiguiller
Merci par avance
 
re
exemple
si en (B) il y a "oui et en (F) il y a "toto"
VB:
Private Sub CommandButton8_Click()
'bouton recherche cable basculé
    If Sheets("BD").Range("B2") <> "" Then
        With Sheets("BD").Range("A2:AG" & Sheets("BD").Cells(Rows.Count, "A").End(xlUp).Row)
            tableau = .Value 'on prend le tableau entier
         
            'on determine les ligne du tableau(A:Ag) ou il y a "oui" en col"B"
            For i = 1 To UBound(tableau)
                If tableau(i, 2) = "OUI" and tableau(i,6)="toto" Then it = it & " " & i
            Next
            lignes = Application.Transpose(Split(Trim(it), " "))
         
            colonnes = Evaluate("COLUMN(A:AG)") 'on créée un array d'index de colonnes
            tableau = Application.Index(.Value, lignes, colonnes) 'on créée le tableau avec les index lignes /colonnes
            ListBox1.ColumnCount = UBound(tableau, 2) 'on dimensionne le nombre de colonnes de la liste box idem a la plage de base
            ListBox1.List = tableau ' on fout le tableau dans la listbox
        End With
    End If
End Sub
 
bonjour patrick.
j'ai essayé le bout de sript que m 'a donné.
çà marche pour dès qu'il y a au moins deux oui ou deux non dans la colonne B .s'il n''y en a qu'un seul ,j'ai une erreur d'execution:" 9" l'indice n'appartient pas à la sélection.
it prend bien la valeur de la ligne où l'on trouve le NON.
et après ,je ne vois pas d'où l 'erreur peut venir
 
re
c'est normal .list n'acepte pas un array de 1 lignes,x colonnes c'es .column=tableau
donc on met les deux facon dans la condition lignes>1 avec else
VB:
Private Sub CommandButton8_Click()
'bouton recherche cable basculé
    If Sheets("BD").Range("B2") <> "" Then
        With Sheets("BD").Range("A2:AG" & Sheets("BD").Cells(Rows.Count, "A").End(xlUp).Row)
            tableau = .Value    'on prend le tableau entier
            'on determine les ligne du tableau(A:Ag) ou il y a "oui" en col"B"
            For i = 1 To UBound(tableau)
                If tableau(i, 2) = "OUI" And tableau(i, 6) = "toto" Then it = it & " " & i
            Next
            lignes = Application.Transpose(Split(Trim(it), " "))
            colonnes = Evaluate("COLUMN(A:AG)")    'on créée un array d'index de colonnes
            tableau = Application.Index(.Value, lignes, colonnes)    'on créée le tableau avec les index lignes /colonnes
            ListBox1.ColumnCount = UBound(colonnes)    'on dimensionne le nombre de colonnes de la liste box idem a la plage de base
            If UBound(lignes) > 1 Then ListBox1.List = tableau Else ListBox1.Column = tableau    ' on fout le tableau dans la listbox
        End With
    End If
End Sub

😉
comme ca @ChTi160 aura l'exercice N°7 (choix des lignes ) 🤣 🤣 🤣 🤣
la fleme de mettre cet exemple dans l'autre discussion 😜😜🥳🤣🤣
 
Dernière édition:
Re
Mdr !
au fait
pourquoi sur l'image de ptj75
c'est
VB:
 ListBox1.ColumnCount = UBound(colonnes)
qui est surligné ?
je pensé (mais pas de fichier à l'époque Lol) que c'était à ce niveau le Problème !
merci
jean marie
 
merci beaucoup, trop fort les mecs, .j'ai essayé de trouvé mais comme vous avez du le remarqué ,il me manque pas mal de notion en vba.je suis automaticien dans la vie.pour la suite , je m'attaque à refondre les filtres automatique existants.comme pour les 2 boutons, la listbox ne se raffrachit pas tout le temps
 
en fait quand il y en a q'une de ligne ca donne un array (1dim)(X items )
alors listbox1.columcount=ubound(tableau,2) donne une erreur forcement
c'est pour ca que j'ai remplacé par listbox.columncount=ubound(colonnes) car cela ca change pas
et comme il n'y a qu'une seule ligne c'est listbox1.column=tableau et non listbox1.list=tableau
voili voilou 😉
 
Dernière édition:
Re
lorsque j'utilise ce Bouton j'ai bien un msgbox qui apparait trois fois
puis message "L'indice n'appartient pas a la sélection" ?

peux tu nous dire qu'elle démarche t'a amené à:
çà marche pour dès qu'il y a au moins deux oui ou deux non dans la colonne B .s'il n''y en a qu'un seul ,j'ai une erreur
d'exécution:" 9" l'indice n'appartient pas à la sélection.
merci
jean marie
Ps Patrick Ok merci
 
re, j'ai rajouté un controle if sur it car si tout était basculé , on avait une erreur aussi

Private Sub CommandButton8_Click()
'bouton recherche cable basculé
If Sheets("BD").Range("B2") <> "" Then
With Sheets("BD")
If Worksheets("BD").FilterMode Then Worksheets("BD").ShowAllData
End With

With Sheets("BD").Range("A2:AR" & Sheets("BD").Cells(Rows.Count, "A").End(xlUp).Row)
tableau = .Value 'on prend le tableau entier

'on determine les ligne du tableau(A:Ag) ou il y a "oui" en col"B"
For I = 1 To UBound(tableau)
If tableau(I, 2) = "OUI" Then it = it & " " & I
Next
If it = "" Then

Else

lignes = Application.Transpose(Split(Trim(it), " "))
colonnes = Evaluate("COLUMN(A:Ar)") 'on créée un array d'index de colonnes
tableau = Application.Index(.Value, lignes, colonnes) 'on créée le tableau avec les index lignes /colonnes
ListBox1.ColumnCount = UBound(colonnes) 'on dimensionne le nombre de colonnes de la liste box idem a la plage de base
If UBound(lignes) > 1 Then ListBox1.List = tableau Else ListBox1.Column = tableau ' on fout le tableau dans la listbox
End If
End With
End If
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
10
Affichages
435
Réponses
4
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…