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

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

 

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
 

patricktoulon

XLDnaute Barbatruc
re
ok avec ce contrôle par la propriété il est difficile de cerner l'expression
donc oui tu peux le supprimer
puisque de toute façon la dernière ligne si total même si je met une autre expression sera toujours la ligne total

+1 pour jean-marrie
 

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
 

Discussions similaires

Réponses
16
Affichages
518
Réponses
9
Affichages
828
Réponses
4
Affichages
448
Réponses
18
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…