Remplir combobox selon conditon
Résolu
New_VBA_User
Messages postés
84
Statut
Membre
-
New_VBA_User Messages postés 84 Statut Membre -
New_VBA_User Messages postés 84 Statut Membre -
Bonjour,
voir la Photo ci-dessous:
Je veux remplir un combobox avec les valeur qui se trouve dans la colonne G selon les valeurs qui se trouve dans la colonne F.
par exemple: pour tous les no qui se trouve dans la colonne F: Test N° "3005", le combobox doit être rempli de valeur de Tag "1,2,3,4" et pour "3062" de "xx, y", et "4244" de "test1, test2"
et aussi le nombre de Test N° dans la colonne F peut augmenter, dans ce cas le combobox doit s'adapter.
la sélection de Test N° se fait via un textbox.
lorsque je selectionne le dernier Test N° ex: 4244, ça plante, je pense que c'est la
Merci de votre aide.

voici le code utilisé:
voir la Photo ci-dessous:
Je veux remplir un combobox avec les valeur qui se trouve dans la colonne G selon les valeurs qui se trouve dans la colonne F.
par exemple: pour tous les no qui se trouve dans la colonne F: Test N° "3005", le combobox doit être rempli de valeur de Tag "1,2,3,4" et pour "3062" de "xx, y", et "4244" de "test1, test2"
et aussi le nombre de Test N° dans la colonne F peut augmenter, dans ce cas le combobox doit s'adapter.
la sélection de Test N° se fait via un textbox.
lorsque je selectionne le dernier Test N° ex: 4244, ça plante, je pense que c'est la
End(xlDownqui pose soucis.
Merci de votre aide.
voici le code utilisé:
Private Sub TextBox_TextN°_Change() Dim Noms As Range With ThisWorkbook.Sheets("Feuil1") .Select Set Noms = .Columns("F").Find(what:=Me.TextBox_TextN°.Value) If Not Noms Is Nothing Then Noms.Offset(0, 0).Select ' Select the active line Fill_Tag End If End With End Sub ________________________________________________________________________________________________ Private Sub Fill_Tag() Dim SearchRange As Range Dim Cell As Range Me.ComboBox_Find_SiteTag.Clear ' vide le combobox With ThisWorkbook.Sheets("Feuil1") Do While ActiveCell.Value <> Empty Set SearchRange = .Range(Selection.Offset(0, 0), Selection.Offset(1, 0).End(xlDown)) ' recherche la valeur dans la cellule For Each Cell In SearchRange If Cell.Offset(0, 1) <> "" Then ' Regarde la valeur de cellule de droite If Me.ComboBox_Find_SiteTag.ListIndex = -1 Then Me.ComboBox_Find_SiteTag.AddItem Cell.Offset(0, 1) Else If Me.ComboBox_Find_SiteTag.ListIndex = -1 Then Me.ComboBox_Find_SiteTag.AddItem Cell.Offset(-1, 1) End If Next Cell Exit Do Loop End With End Sub
Configuration: Windows / Edge 18.17763
A voir également:
- Remplir combobox vba
- Organigramme a remplir word - Guide
- Excel compter cellule couleur sans vba - Guide
- Comment remplir un document pdf - Guide
- Find vba - Astuces et Solutions
- Vba attendre 1 seconde ✓ - Forum VB / VBA
3 réponses
bonjour cela plante sur quelle ligne avec quel message d'erreur?
moi j'utiliserais une logique différente: chercher toutes les cellules de la colonne F contenant Me.TextBox_TextN°, et les utiliser directement.
remplace Mee par Me
moi j'utiliserais une logique différente: chercher toutes les cellules de la colonne F contenant Me.TextBox_TextN°, et les utiliser directement.
Dim bottefoin As Range, Cell As Range, premier As String 'Dim Mee Set bottefoin = ThisWorkbook.Sheets("Feuil1").Columns("F") Set Cell = bottefoin.Find(Mee.TextBox_TextN°.Value) Mee.ComboBox_Find_SiteTag.Clear If Not Cell Is Nothing Then premier = Cell.Address Do If Cell.Offset(0, 1) <> "" Then ' Regarde la valeur de cellule de droite If Mee.ComboBox_Find_SiteTag.ListIndex = -1 Then Mee.ComboBox_Find_SiteTag.AddItem Cell.Offset(0, 1) Else If Mee.ComboBox_Find_SiteTag.ListIndex = -1 Then Mee.ComboBox_Find_SiteTag.AddItem Cell.Offset(-1, 1) End If Set Cell = bottefoin.FindNext(Cell) Loop While premier <> Cell.Address End If
remplace Mee par Me
c'est la ligne 28 qui devrait être:
le premier offset est inutile, le second nuisible.
Set SearchRange = .Range(Selection , Selection.End(xlDown))
le premier offset est inutile, le second nuisible.
Déolé de te déranger, j'ai encore une petite questions,
voilà, maintenant que j'ai rempli le combobox, , j'ai par exemple 2 autres textbox qui me permet d'afficher les valeurs de colonne H et I, selon la valeur sélectionné de Combobox.
par exemple si on sélectionne la valeur 4 de combobox , je veux qu'on affiche les info de cette ligne qui sont dans les colonne H et I dans les Textbox. (descrip 4 et Type 4)
voir photo ci-dessous.

voilà, maintenant que j'ai rempli le combobox, , j'ai par exemple 2 autres textbox qui me permet d'afficher les valeurs de colonne H et I, selon la valeur sélectionné de Combobox.
par exemple si on sélectionne la valeur 4 de combobox , je veux qu'on affiche les info de cette ligne qui sont dans les colonne H et I dans les Textbox. (descrip 4 et Type 4)
voir photo ci-dessous.
quand je fais pas à pas, et je sélection les valeur de 4244 dernière dans la colonne F, il plante, et je pense qu'il va jusqu'à la dernière ligne vide alors il devrait s'arrêter juste après 2 ligne de 4244.
Ton idée peut être intéressant: Peux-tu faire un exemple concernant ta proposition..
Merci d'avance.
entre-temps, j'ai ajouté un exemple en #1.
. ou changer ta logique
Une autre facon de voir:
Pas de recherche inutile et en effet c'est la End(xlDown qui pose soucis.
données sont bien organisées
Non, aucune importance, car recherche dans la colonne les lignes quelque soit leur position.
La boucle permet de limiter au nombre de fois le texte contenu dans la colonne