Microsoft 365 ListBox Multipage

eric72

XLDnaute Accro
Bonjour à tous,
je fais un essai sur un userform "multipage", ma listbox de l'onglet "pot" s'alimente bien mais j'ai un souci sur la listbox de l'onglet "plaque", j'ai tout essayé en vain.
Mais je suis bien sur que l'un d'entre vous va trouver le bug en 15 secondes.
Merci pour votre aide
Eric
 

Pièces jointes

  • Fiche Produit test.xlsm
    268.5 KB · Affichages: 10

ChTi160

XLDnaute Barbatruc
Re Patrick
dans conception de la Table tu as "Ligne Total" en dessous de "ligne d'entêtes" !
il va dire : "aujourd'hui, j'ai appris quelque chose (donc bonne journée
Lol
)
Bon je n'ai rien dit Lol
Moi c'est tous les jours Lol
jean marie
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
Bonjour @ChTi160
bon ben voila vous l'avez avec la ligne "Total"

j'en ai même fait une fonction utilitaire
je l'ai appelé "IsEmpty_After_Filter" c'est suffisamment explicite je crois
c'est bo' la vie non ?
VB:
Sub test()
    With ActiveSheet.ListObjects("Tableau1").Range
        .AutoFilter Field:=1, Criteria1:="efrez"
    End With
        MsgBox IsEmpty_After_Filter(Range("Tableau1[#all]"), "Total")
End Sub


Function IsEmpty_After_Filter(rng As Range, title$)
   Dim t&
   With rng
        t = Abs(.Columns(1).Cells(.Columns(1).Cells.Count).Value = title)
        IsEmpty_After_Filter = Not .Columns(1).SpecialCells(xlVisible).Cells.Count - t > 1
    End With
End Function

demo7.gif
 

patricktoulon

XLDnaute Barbatruc
re
@ChTi160
et bien soit si on a accès a cette propriété alors
on prend les mêmes et on recommence
je precise que j'ai testé sur un tableau avec ligne total et un sans
VB:
Sub test()
    With ActiveSheet.ListObjects("Tableau1").Range
        .AutoFilter Field:=1, Criteria1:="cefrez"
    End With
        MsgBox IsEmpty_After_Filter(Range("Tableau1[#all]"), "Total")
End Sub

Sub test2()
    With ActiveSheet.ListObjects("Tableau2").Range
        .AutoFilter Field:=1, Criteria1:="cefrez"
    End With
        MsgBox IsEmpty_After_Filter(Range("Tableau2[#all]"), "Total")
End Sub

Function IsEmpty_After_Filter(rng As Range, title$)
   Dim t&
   With rng
        t = Abs(rng.ListObject.ShowTotals)
        IsEmpty_After_Filter = Not .Columns(1).SpecialCells(xlVisible).Cells.Count - t > 1
    End With
End Function
😁
 

ChTi160

XLDnaute Barbatruc
euh
Je sais pas si je me suis bien fait comprendre Lol
je parlais de ça !
On supprime "Total" et donc "title$"
VB:
Sub test()
    With ActiveSheet.ListObjects("Tableau1").Range
        .AutoFilter Field:=1, Criteria1:="cefrez"
    End With
        MsgBox IsEmpty_After_Filter(Range("Tableau1[#all]"))
End Sub

Sub test2()
    With ActiveSheet.ListObjects("Tableau2").Range
        .AutoFilter Field:=1, Criteria1:="cefrez"
    End With
        MsgBox IsEmpty_After_Filter(Range("Tableau2[#all]"))
End Sub

Function IsEmpty_After_Filter(rng As Range)
   Dim t&
   With rng
        t = Abs(rng.ListObject.ShowTotals)
        IsEmpty_After_Filter = Not .Columns(1).SpecialCells(xlVisible).Cells.Count - t > 1
    End With
End Function
Bonne journée
jean marie
 

ChTi160

XLDnaute Barbatruc
Re
Comment Lol, je conserve ma version, qui fonctionne très Bien !
Elle utilise une propriété du DataBodyRange qui n'a rien à voir avec le Chimilimblick !
soit
VB:
 Range("t_Test").Height = 0 'si pas de ligne visible
Bonne journée
Jean marie
 

Statistiques des forums

Discussions
312 745
Messages
2 091 593
Membres
105 006
dernier inscrit
bhabali