XL 2019 Ignorer cellule vide liste combobox

Did25

XLDnaute Occasionnel
Bonjour le forum XLD , je reviens vers le forum dans la continuité de l'élaboration de mon fichier de suivi de stock et je souhaiterais trouver une solution pour mon USF de recherche de colis ,j'utilise pour ma combobox , la formule suivante :
Private Sub ComboBox1_Change()
'à chaque changement de la référence, met à jour les datas correspondantes
New_col = ComboBox1.Value
Set Rayon = Worksheets("Entrée").Range("A1:AC350").Find(New_col, LookIn:=xlValues)
If Rayon Is Nothing Then Exit Sub
lg = Rayon.Row + 1: col = Rayon.Column
place_col = ComboBox1.Value
Set Rayon = Worksheets("Entrée").Range("A1:AC350").Find(place_col, LookIn:=xlValues)
If Rayon Is Nothing Then Exit Sub
lg = Rayon.Row + 1: col = Rayon.Column
With Worksheets("Entrée")
TextBox1.Value = .Cells(lg - 2, col)
TextBox2.Value = .Cells(lg + 1, col)
TextBox3.Value = .Cells(lg + 2, col)
TextBox4.Value = .Cells(lg + 3, col)
TextBox5.Value = .Cells(lg + 4, col)
TextBox6.Value = .Cells(lg + 6, col)
End With
End Sub

Mais dans ma liste ,il y a des espaces vides en raison du fait de l'absence normale de colis sur certains rayons et je souhaiterais pouvoir faire apparaitre dans ma liste que les colis présents et ignorer les espaces vides .Merci de votre aide
 

cp4

XLDnaute Barbatruc
Bonjour le forum XLD , je reviens vers le forum dans la continuité de l'élaboration de mon fichier de suivi de stock et je souhaiterais trouver une solution pour mon USF de recherche de colis ,j'utilise pour ma combobox , la formule suivante :
Private Sub ComboBox1_Change()
'à chaque changement de la référence, met à jour les datas correspondantes
New_col = ComboBox1.Value
Set Rayon = Worksheets("Entrée").Range("A1:AC350").Find(New_col, LookIn:=xlValues)
If Rayon Is Nothing Then Exit Sub
lg = Rayon.Row + 1: col = Rayon.Column
place_col = ComboBox1.Value
Set Rayon = Worksheets("Entrée").Range("A1:AC350").Find(place_col, LookIn:=xlValues)
If Rayon Is Nothing Then Exit Sub
lg = Rayon.Row + 1: col = Rayon.Column
With Worksheets("Entrée")
TextBox1.Value = .Cells(lg - 2, col)
TextBox2.Value = .Cells(lg + 1, col)
TextBox3.Value = .Cells(lg + 2, col)
TextBox4.Value = .Cells(lg + 3, col)
TextBox5.Value = .Cells(lg + 4, col)
TextBox6.Value = .Cells(lg + 6, col)
End With
End Sub

Mais dans ma liste ,il y a des espaces vides en raison du fait de l'absence normale de colis sur certains rayons et je souhaiterais pouvoir faire apparaitre dans ma liste que les colis présents et ignorer les espaces vides .Merci de votre aide
Bonjour,

où est ton fichier?
 

ChTi160

XLDnaute Barbatruc
Bonsoir Did25
ce que j'ai mis dans le Initialize du Userform
VB:
Dim Tbl
Dim Lgn As Long
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim Cell As Range
Dim AdrC As String
With Sheets("Bdd")
DerLgn = .Cells(.Rows.Count, 1).End(xlUp).Row 'on détermine la ddernière ligne non vide de la Colonne 1
   Tbl = .Range(.Cells(2, 1), .Cells(DerLgn, 9)) 'On récupére les données de la plage ainsi définie
End With
With Me
ok_change = False 'on met la variable a False
  With .ComboBox1 'avec le Combobox
For Lgn = 1 To UBound(Tbl, 1) 'pour chaque ligne du tableau
 If Tbl(Lgn, 2) <> Empty Then 'si la colonne 2 n'est pas vide 
       .Text = Tbl(Lgn, 2) 'On affiche dans le Combobox cette valeur
     If .ListIndex = -1 Then 'si index du Combobox et -1 c'est que cettevaleur n'est pas dans la Liste
        .AddItem Tbl(Lgn, 2) 'on l'ajoute donc
        .List(.ListCount - 1, 1) = Lgn 'On récuépre la Ligne source
     End If 'fin de test 
 End If 'fin de Condition
Next Lgn
        .Text = Empty 'On vide la partie Text du Combobox
    End With
ok_change = True 'on met la variable a True
End With
End Sub
Bonne fin de Soirée
Jean marie
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

J'arrive encore à la bourre, mais maintenant que je l'ai pondu le voici tout de même :

VB:
Private Sub UserForm_Initialize()
'
Dim MaCellule As Range

    With Sheets("Bdd")
        For Each MaCellule In Sheets("Bdd").Range("B3:B" & .Cells(Rows.Count, 1).End(xlUp).Row)
            If MaCellule.Value <> 0 Then Me.ComboBox1.AddItem MaCellule.Value
        Next MaCellule
    End With

End Sub


/!\ Il me semble que tu as inversé Rd et Re dans ton UserForm.
 
Dernière édition:

cp4

XLDnaute Barbatruc
Bonsoir @ChTi160 ;), @Marcel32 ;), @Did25 ;),

Si j'ai compris ton problème du formulaire 'Recherche' pour alimenter la combobox, remplace la procédure initialize par la suivante et /!\ n'oublie pas de vider le champ de la propriété 'RowSource'
VB:
Private Sub UserForm_Initialize()
    Dim Cell As Range, dl As Long
    With Sheets("Bdd")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        For Each Cell In .Range("B2:B" & dl)
            If Cell.Value <> "" And Cell.Value <> 0 Then
                Me.ComboBox1.AddItem Cell
            End If
        Next Cell
    End With
End Sub
Bonne soirée.
 

Did25

XLDnaute Occasionnel
Bonsoir @ChTi160 ;), @Marcel32 ;), @Did25 ;),

Si j'ai compris ton problème du formulaire 'Recherche' pour alimenter la combobox, remplace la procédure initialize par la suivante et /!\ n'oublie pas de vider le champ de la propriété 'RowSource'
VB:
Private Sub UserForm_Initialize()
    Dim Cell As Range, dl As Long
    With Sheets("Bdd")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        For Each Cell In .Range("B2:B" & dl)
            If Cell.Value <> "" And Cell.Value <> 0 Then
                Me.ComboBox1.AddItem Cell
            End If
        Next Cell
    End With
End Sub
Bonne soirée.
Parfait ça fonctionne ,merci
 

TooFatBoy

XLDnaute Barbatruc
/!\ n'oublie pas de vider le champ de la propriété 'RowSource'
Ah oui, pardon, j'avais oublié de le préciser quand j'ai posté ma solution. :(


Ca plante direct et me ramène sur le module de démarrage avec erreur d'éxécution 70 accès refusé
cp4 a donné la solution à ce problème : vider la propriété RowSource de la ComboBox. ;)
 

Discussions similaires

Réponses
2
Affichages
137