Suppression dynamique d'items d'un combobox

dreamalain

XLDnaute Junior
Bonjour à tous

Voici un code qui fonctionne pour supprimer une ligne d'une base de donnée alimentée par combobox
Le problème et que la liste déroulante ne tiens pas compte des suppressions
Il faudrait que la mise à jour soit faite sans fermer complétement l'userform
Merci d'avance


[Private Sub ComboVM1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim Reponse As Variant
Dim Indexlist

Reponse = MsgBox("SUPPRIMER ?", 52, "Effacement de données")
If Reponse = vbNo Then Exit Sub

Indexlist = ComboVM1.ListIndex + 2
If Indexlist < 2 Then Exit Sub
Sheets("VIANDES").Rows(Indexlist).Delete
ComboVM1.ListIndex = -1
ComboVM1.Value = ""
Application.ScreenUpdating = False
End Sub]
 

Pierrot93

XLDnaute Barbatruc
Re : Suppression dynamique d'items d'un combobox

Re,

un exemple ci-dessous, si alimentation via la propriété "list" :
Code:
Option Explicit
Private Sub ComboBox1_Click()
With ComboBox1
    If .ListIndex <> -1 Then .RemoveItem (.ListIndex): .ListIndex = -1
End With
End Sub
Private Sub UserForm_Initialize()
ComboBox1.List = Range("A1:A10").Value
End Sub

@+
 

dreamalain

XLDnaute Junior
Re : Suppression dynamique d'items d'un combobox

Merci Pierrot

Ma base de donnée est bien alimentée via la propriété "liste" de cette maniere :

Private Sub ComboVM1_Change()
With Sheets("VIANDES")
If ComboVM1.ListIndex = -1 Then
Me.ComboPv1 = ""
Me.TextBoxEfv1 = ""
Me.TextBoxRv1 = ""
Me.ComboOuV1 = ""
Me.ComboCoV1 = ""
Exit Sub
End If
Me.ComboPv1 = .Cells(ComboVM1.ListIndex + 2, 2)
Me.TextBoxEfv1 = .Cells(ComboVM1.ListIndex + 2, 3)
Me.TextBoxRv1 = .Cells(ComboVM1.ListIndex + 2, 6)
Me.ComboOuV1 = .Cells(ComboVM1.ListIndex + 2, 9)
Me.ComboCoV1 = .Cells(ComboVM1.ListIndex + 2, 10)
End With
End Sub

En fait J'ai déjà
Private Sub UserForm_Initialize()
Dim cell As Range

With Sheets("VIANDES")
Me.ComboVM1.List = .Range("A2:A" & .Range("A65536").End(xlUp).Row).Value
Me.ComboVM2.List = .Range("A2:A" & .Range("A65536").End(xlUp).Row).Value
Me.ComboVM3.List = .Range("A2:A" & .Range("A65536").End(xlUp).Row).Value
......
......

Et mon code n'accepte pas


Private Sub UserForm_Initialize()
ComboBox1.List = Range("A1:A10").Value
End Sub

Que tu m'as donné

Une autre solution ?
 

Pierrot93

XLDnaute Barbatruc
Re : Suppression dynamique d'items d'un combobox

Bonjour,

Et mon code n'accepte pas

Private Sub UserForm_Initialize()
ComboBox1.List = Range("A1:A10").Value
End Sub
ce code n'était qu'un exemple pour te montrer comment j'alimentais ma combo, à noter que pour un même objet tu ne peux avoir qu'une seule procédure pour un événement donné, en l'occurence dans le module de ton usf tu n'auras qu'une procédure "Private Sub UserForm_Initialize" :


donc pour supprimer l'item, utiliser un code de ce type, nom de l'objet à adapter
Code:
With ComboBox1
    If .ListIndex <> -1 Then .RemoveItem (.ListIndex): .ListIndex = -1
End With

bonne journée
@+
 

Discussions similaires

  • Question
Microsoft 365 MsgBox
Réponses
9
Affichages
424

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado