Supprimer les "0" de ma liste listbox et combobox
Bonjour, j'ai une liste d'une part avec une listebox (avec prédiction comme google) et d'une autre part une combobox (validation de donnée par liste).
Dans cette liste j'ai des "0" (zéro) qui me sert à rajouter un nouvel article (au lieu de "0" je marque le nom du produit)
Serais il possible de modifier le code vba pour ne pas que mes listes affiche les "0" ?
A) Listbox :
'liste déroulante avec stock'
Private Sub TextBox1_Change()
ListBox1.Clear
For Each cellule In Range("B43:B217")
If InStr(LCase(cellule), LCase(TextBox1.Value)) > 0 Then
ListBox1.AddItem
ListBox1.List(ListBox1.ListCount - 1, 0) = cellule.Value
ListBox1.List(ListBox1.ListCount - 1, 1) = Cells(cellule.Row, 7) 'stock'
ListBox1.List(ListBox1.ListCount - 1, 2) = Cells(cellule.Row, 4) 'ac client'
ListBox1.List(ListBox1.ListCount - 1, 3) = Cells(cellule.Row, 5) 'ac stock'
ListBox1.List(ListBox1.ListCount - 1, 4) = Cells(cellule.Row, 6) 'vendu'
End If
Next cellule
End Sub
B) combobox menu déroulant :
'liste déroulante choix de l'articles'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([B4:B39, I4:I39, M4:M39], Target) Is Nothing And Target.Count = 1 Then
a = Application.Transpose(Sheets("Stock").Range("liste"))
Me.ComboBox1.List = a
Me.ComboBox1.Height = Target.Height + 3
Me.ComboBox1.Width = Target.Width
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1 = Target
Me.ComboBox1.Visible = True
Me.ComboBox1.Activate
'Me.ComboBox1.DropDown ' ouverture automatique au clic dans la cellule (optionel)
Else
Me.ComboBox1.Visible = False
End If
End Sub
Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
Me.ComboBox1.DropDown
End If
ActiveCell.Value = Me.ComboBox1
End Sub
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.ComboBox1.List = a
Me.ComboBox1.Activate
Me.ComboBox1.DropDown
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then ActiveCell.Offset(1).Select
End Sub
Merci
Je suis nul en vba donc si quelqu'un saurais me dire quoi faire :p
Bonjour
Le fichier serait très utile dans ce cas
Et voici
Bonjour
Désolé mais pour les ComboBox je n'ai pas de solution, à moins de refaire la liste sans les 0
Pour la listBox, modifie le code
'liste déroulante avec stock'
Private Sub TextBox1_Change()
ListBox1.Clear
For Each cellule In Range("B43:B217")
If cellule <> 0 Then
If InStr(LCase(cellule), LCase(TextBox1.Value)) > 0 Then
ListBox1.AddItem
ListBox1.List(ListBox1.ListCount - 1, 0) = cellule.Value
ListBox1.List(ListBox1.ListCount - 1, 1) = Cells(cellule.Row, 7) 'stock'
ListBox1.List(ListBox1.ListCount - 1, 2) = Cells(cellule.Row, 4) 'ac client'
ListBox1.List(ListBox1.ListCount - 1, 3) = Cells(cellule.Row, 5) 'ac stock'
ListBox1.List(ListBox1.ListCount - 1, 4) = Cells(cellule.Row, 6) 'vendu'
End If
End If
Next cellule
End SubParfait merci pour la listbox sa fonctionne
Une idée de comment faire la même chose pour les listbox ? le même code avec la condition -> If cellule <> 0 Then ne fonctionnerais pas ?
Bonjour
On ne peut pas faire la même chose car tu utilises la zone nommée "liste" pour alimenter les ComboBox
a = Application.Transpose(Sheets("Stock").Range("liste"))
Me.ComboBox1.List = aMon idée (mais je ne sais pas faire) c'est de construire une autre liste à partir de "liste", mais sans les 0
Je pense qu'il doit y avoir une possibilité par formule (cela dépasse mes compétences)
Ensuite tu pourrais utiliser cette nouvelle liste dans ton code
a = Application.Transpose(Sheets("Stock").Range("NouvelleListe"))
Me.ComboBox1.List = aIl suffit d'avoir cette formule
Dans le fichier, un essai par macro
Une modification dans "liste" construit à partir de T43 "NouvelleListe" sans les 0
J'y avait pensé mais par exemple si ma nouvelle liste ce termine en B125 puis par après je rajoute des articles en B126 celui la ne sera pas prit dans la liste sauf si je modifie le code tout le temps ...
Ou alors je doit faire le code avec B300 par exemple pour avoir de la marche mais la dans cette exemple(j'ai une autre macro qui me copie ma liste) qui me copierais une liste de 300 cellule au lieu de 100 ... et pour le coller dans un mail ou autre sa posera problème.
bon mnt c'est de demi mal si on y arrive pas complètement car sur ces cellule déroulante elle sont prédictive comme google donc je ne verrais que rarement les "0" .. mais bon je voulais un rendu "pro"