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

22version-10.xlsm (164.21 Ko)

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 Sub

Parfait 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 = a

Mon 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 = a

Il 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"

Rechercher des sujets similaires à "supprimer liste listbox combobox"