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
Il faut mettre TxtPrixKgTrans = (CDec(TxtCoutBox) / CDec(TxtPoidsBox)) * CDec(TxtCoeffTransBox)
en fin de la procédure: Private Sub LisCoutTransAval_Click()
Bonjour
oui c'est pas mal @ChTi160 quand Tableau structuré les utiliser
alors oui mais on est pas obligé d'utiliser le range (....).listobject
range(nom du listobject tout court).value suffit!!!
apres malheureusement tu faille une erreur de conception
l'erreur ou est elle ?
et bien tu fait un test if not range(....).listobject is nothing then ....... et bien tiens imaginons un TS qui n'existe pas
pour tester on va changer le le nom if not range("tartampion").listobject is nothing then .......
on est bien d'accord que le TS "tartampion n'existe pas
que va t il se passer d’après toi mon cher @ChTi160
et bien c'est simple le range("tartampion") n'existe pas le (.listobject) encore moins donc !!!!!
je te le donne dans le mille ; le code va PLANTER
donc les seules solutions que nous avons sont :
lister dans une boucles les names pour chopper le TS
gestion d'erreur -->next
pour le coup fort de toutes ces constatations c'est simple on prend l'option de facilité
donc gestion d'erreur et range tout court
VB:
Sub Alimenter_ListPot()
On Error Resume Next
Me.LstPot.Clear
Me.LstPot.List = Range("TbPot").Value
End Sub
Sub Alimenter_ListPlaque()
On Error Resume Next
Me.LstPlaque.Clear
Me.LstPlaque.List = Range("TbPlaque").Value
End Sub
J'ai encore une interrogation, dans mon userform onglet "Comm.Centr, lorsque je le lance j'aimerais que le prix au Kg se mette à jour , j'ai donc mis une formule:
If TxtPoidsBox.Value <> "" And TxtCoutBox.Value <> "" And TxtCoeffTransBox.Value <> "" Then
TxtPrixKgTrans = (CDec(TxtCoutBox) / CDec(TxtPoidsBox)) * CDec(TxtCoeffTransBox)
Mais je ne sais pas si je la met au bon endroit, j'ai tenté sur le click de la listbox, ça ne marche pas, j'ai aussi essayé dans le change des textbox et ça ne marche pas non plus!!!
Auriez-vous une idée?
Merci Eric
if not range(....).listobject is nothing then .......
Ca ne me sert qu'à vérifié si mon tableau contient des lignes de données.
Je connais donc le mon de mon tableau .
Mais tu as raison , je vais y regarder de plus près .
Pour ce qui est de
Code:
Range( nomdutableau).value
Ca concerne donc que les lignes du DataBodyRange ?
Merci pour ton intervention
Amicalement
jean marie
heu non!!!
avec ça tu contrôle seulement si le TS est quelque chose ou pas
SAUF QUE CA NE PEUT PAS MARCHER SI LE TS N'EXISTE PAS ,CA PLANTERA
c'est donc faire pipi dans un violon
non pas parce que c'est pas un listobject mais parce que le nom n'existe pas
autrement dit (si je peux m'exprimer ainsi ) ça plante juste avant le ".listobject"
en tout cas l'erreur de conception est là
Re
j'ai dans la journée
travaillé sur comment savoir si après un filtre le ListObject est vide de lignes visibles (DataBodyRange )Lol
j'avais trouvé ceux ci
VB:
'j'ai trouvé cette méthode !
'On regarde la Hauteur du DataBodyRange si = à 0 c'est qu'il n'y a pas de ligne Visible !
If Worksheets("STOCK").ListObjects("Tableau2").DataBodyRange.Height = 0 Then Exit Sub
d'où mon erreur dans cette discussion lol
Ca ne me sert qu'à vérifié si mon tableau contient des lignes de données.
ben si le filtre est vide c'est simple le range visible du TS avec header contient qu'une ligne me semble til non ?
tiens comme ca vite fait
si c'est true il reste au moins une ligne sinon si il reste que le header c'est false
je filtre la colonne 1 et je contrôle si la colonne(1) du tableau contient plus d'une cellule de visible
c'est pas compliqué
VB:
Sub test()
With ActiveSheet.ListObjects("Tableau1").Range
.AutoFilter Field:=1, Criteria1:="cregerh"
MsgBox .Columns(1).SpecialCells(xlVisible).Cells.Count > 1
End With
End Sub
re
allons allons cesse tes enfantillages
tiens pour éviter les erreurs on prend le #all
VB:
Sub test()
With ActiveSheet.ListObjects("Tableau1").Range
.AutoFilter Field:=1, Criteria1:="blablabla"
MsgBox .Columns(1).SpecialCells(xlVisible).Cells.Count > 1
End With
End Sub
maintenant tu sais comment savoir si un filtre dans un TS donne un tableau visible ou pas