Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Trouver la N° de la ligne des données correspondante à la Combobox

toto2403

XLDnaute Nouveau
Bonjour,

Dans le cadre d'un projet j'ai besoin de réaliser une succession de combobox.
Vous trouverez ci-joint mon fichier excel simplifié qui expose mon projet et problème (que j'ai essayé de résoudre tout l'après midi en vain).

Le tableau sur la feuille "base_de_donnee" présente une liste de produits.
Ces produits sont décomposés en plusieurs parties:


Jaune => partie_materiel
Orange clair=> sous_partie_matériel
Aucun remplissage=> Ce sont les produits

1) Je souhaite dans une Combobox 1 que l'on puisse sélectionner les "parties principales" ce que j'ai réussi à faire.
2) En fonction de la "partie principale" selectionnée dans la Combobox 1, il faudrait que l'on puisse choisir une des sous-parties correspondantes dans une combobox2.
3) Et enfin grâce au choix de la Combobox 3 sélectionner les produits disponibles de cette sous partie.

Pour le point N°1 j'ai utilisé cette méthode qui détecte les couleurs des parties principales:

Private Sub UserForm_Initialize()
sous_partie_materiel.Clear
Dim i As Integer
i = 1
Do While Worksheets("base_de_donnees").Cells(i, 2) <> ""
If Worksheets("base_de_donnees").Cells(i, 2).Interior.ColorIndex = 6 Then
partie_materiel.AddItem Worksheets("base_de_donnees").Cells(i, 2)
End If
i = i + 1
Loop

End Sub​

2) Pour le point N°2, il faudrait sur le même principe que je puisse commencer a balayer les lignes à partir de la partie principale choisi dans la Combobox1 afin de récupérer toutes les sous parties dans ma combobox2 qui sont en orange clair. Le problème est que je n'arrive pas à trouver comment trouver ce fameux numéro de ligne.

Il me manque donc une partie du code suivant pour le faire fonctionner :
Private Sub partie_materiel_Change()

Dim i as Integer

Comment définir i?

Do While Worksheets("base_de_donnees").Cells(i, 2).Interior.ColorIndex <> 6
If Worksheets("base_de_donnees").Cells(i, 2).Interior.ColorIndex = 19 Then
sous_partie_materiel.AddItem Worksheets("base_de_donnees").Cells(i, 2)
End If
Loop

End Sub



Une fois que j'aurai compris comment passer de l'étape 1 à 2, je devrais facilement me débrouiller pour continuer les étapes suivant et continuer mon projet.
J'espère avoir exposé mon problème le mieux possible
Je vous remercie par avance pour votre aide et le temps accordé !

Antoine
 

Pièces jointes

  • Classeur1.xlsm
    25.8 KB · Affichages: 32
  • Classeur1.xlsm
    25.8 KB · Affichages: 42

CPk

XLDnaute Impliqué
Re : Trouver la N° de la ligne des données correspondante à la Combobox

Bonjour essayez ceci par hasard

Code:
Private Sub partie_materiel_Change()
l = Feuil1.Columns(2).Find(Me.partie_materiel, lookat:=xlWhole).Row
While Feuil1.Cells(l + 1, 2).Interior.ColorIndex <> 6
If Feuil1.Cells(l + 1, 2).Interior.ColorIndex = 19 Then
sous_partie_materiel.AddItem Feuil1.Cells(l + 1, 2).Value
End If
l = l + 1
Wend
End Sub
 

Discussions similaires

Réponses
4
Affichages
450
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…