Combobox lié à autre combobox

  • Initiateur de la discussion Initiateur de la discussion kero_67
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

K

kero_67

Guest
Bonjour le forum !

J'ai déjà lu des discussions sur ce problème mais je n'arrive pas à appliquer les réponses...🙁
Lorsque je sélectionne un nom dans la combobox1 je souhaite que dans la combobox2 n'apparaisse que les noms lié à la combobox1.

Exemple avec mon fichier (anticorps secondaire): si je sélectionne React_1 dans la combobox1 je veux que n'apparaisse que Coupl_1, Coupl_2 et Coupl_3 dans la combobox2.

J'ai essayé l'équivalent de :
Private Sub Combobox1_change ()
Combobox2.ListIndex = Combobox1.ListIndex
End Sub
Mais sans succès.🙁

Et est-il possible d'également enlever les doublons dans la combobox 1 même si elle est lié à la combobox 2 ? 😕

Merci d'avance pour votre aide !
 

Pièces jointes

Re : Combobox lié à autre combobox

bonjour Kero,

voici une proposition.

Fais des test pas à pas pour le chargement des combobox et tu verras les conséquence d'un changement de la propriété Listindex. Attention aux réactions en chaine, lorsque tu change cette propriété.

voir en fin de module du UserForm3 la procédure de chargement de la deuxième Liste

A+

[Edition] Oups, le fichier n'est pas parti et je l'ai détruit! bougre d'âne😀
 
Dernière modification par un modérateur:
Re : Combobox lié à autre combobox

Bonjour à tous,

Ton fichier modifié, j'ai laissé ton code en commentaire.
Je n'ai repris que le USF3

A+

Edit : petit oubli, remplace le "L" par "M" dans cette ligne :
Code:
.Range("A2:[B][COLOR=Blue]M[/COLOR][/B]" & Ligne).Sort Key1:=.Range("A2"), Order1:=xlAscending
 

Pièces jointes

Dernière édition:
Re : Combobox lié à autre combobox

Bonjour bqtr,

Merci pour ton aide, effectivement cela correspond à ce que je voulais. N'étant qu'une débutante j'ai un peu de mal à comprendre tous tes changements mais je tacherais de m'y pencher 🙂

Par contre, lorsqu'il y a dans ma bdd une Reactivité 1 qui correspond à 2 Couplage du même nom, il m'affiche bien les 2 couplages du même nom dans la combobox 2 mais il ne complète pas correctement les autres champs 😕

Merci encore
Bonne soirée
 
Re : Combobox lié à autre combobox

Re,

Sur le fichier en PJ cela semble fonctionner correctement, vérifie dans la macro ChercheValeurs(Posit As Long) les différents décalages avec la propriété Offset par rapport à la cellule qui contient le Couplage (Dep.Offset(0,0).Value, correspond à cette cellule, le décalage se fait à partir de cette dernière).

As tu modifié le "L" par le "M" pour prendre en compte la colonne M dans l'instruction de tri (voir mon 1er message).

Si je comprends ton code d'initialisation du USF3 il se peut que la feuille
"Anticorps secondaires" ne contienne pas de donnée. Dans ce cas tu auras une erreur. Il faut donc prévoir ce cas avec par exemple une msgbox comme ceci:
Code:
Private Sub UserForm_Initialize()

Dim k As Long
Dim ColReac As Object
Dim TabReac

Set ColReac = CreateObject("Scripting.Dictionary")

With Sheets("Anticorps secondaires")
    If .Cells(65536, 1).End(xlUp).Row > 1 Then
      Ligne = .Cells(65536, 1).End(xlUp).Row
      .Range("A2:M" & Ligne).Sort Key1:=.Range("A2"), Order1:=xlAscending
        For k = 2 To Ligne
          If Not ColReac.Exists(.Cells(k, 1).Value) Then ColReac.Add .Cells(k, 1).Value, .Cells(k, 1).Value
        Next k
      TabReac = ColReac.items
      ListeReact2.List = Application.Transpose(TabReac)
      ListeReact2.ListIndex = 0
    Else
      MsgBox "Tableau vide.", vbCritical, "Erreur:"
    End If
End With
       
End Sub

A+
 
Re : Combobox lié à autre combobox

Re,

Oui j'ai bien modifié le L en M pour l'instruction du tri, merci.

Merci pour la modification du code dans le cas où la fiche est vide 🙂.

Par contre par rapport à ma question sur le remplissage je pense que je me suis mal exprimé : je joins le fichier avec une nouvelle incrémentation dans la bdd (ligne en rouge). Si tu cherches dans le USF3 : React_1 et Coupl_1 il existera 2 propositions de Coupl_1 dans le combobox couplage. Mais si je sélectionne l'un ou l'autre des "Coupl_1" j'ai toujours les infos de ma ligne en rouge.
Je ne sais pas si je suis claire. 😕
Cependant il arivera dans l'utilisation de ma bdd, qu'il y ait des lignes avec la même réactvité et couplage mais le reste des info différentes. Je ne sais pas torp comment gérer ça ?

@+ et merci encore pour ton travail ! 🙂
 

Pièces jointes

Re : Combobox lié à autre combobox

Re,

Remplace les codes des combobox_Click par ceux-ci :
Code:
Sub ListeReact2_Click()

Dim k As Long

ListeCoupl2.Clear
ListeCoupl2.ColumnCount = 2
With Feuil4
   For k = 2 To Ligne
      If .Cells(k, 2).Offset(0, -1) = ListeReact2 Then
         ListeCoupl2.AddItem .Cells(k, 2).Value
         ListeCoupl2.List(ListeCoupl2.ListCount - 1, 1) = .Cells(k, 2).Row
      End If
   Next
End With

End Sub



Sub ListeCoupl2_Click()

Dim Pos As Long

Pos = ListeCoupl2.List(ListeCoupl2.ListIndex, 1)
Call ChercheValeurs(Pos)

End Sub

Le Combobox ListeCoupl2 à deux colonnes, la 1ère le nom du couplage et dans la deuxième le n° de la ligne de la feuille.
Ce n° est transmis à la macro ChercheValeurs.

Normalement ca devrait coller 🙂

A+
 
Re : Combobox lié à autre combobox

Re,

Tu peux même cacher cette colonne comme ceci :
Code:
Sub ListeReact2_Click()

Dim k As Long

With ListeCoupl2
  .Clear
  .ColumnCount = 2
  .ColumnWidths = "170;0"
End With

With Feuil4
  For k = 2 To Ligne
    If .Cells(k, 2).Offset(0, -1) = ListeReact2 Then
       ListeCoupl2.AddItem .Cells(k, 2).Value
       ListeCoupl2.List(ListeCoupl2.ListCount - 1, 1) = .Cells(k, 2).Row
    End If
  Next
End With

End Sub

A+
 
Re : Combobox lié à autre combobox

Re

Super ! je pensais expliquer aux personnes de ne pas en tenir compte, mais c'est mieux comme ça.😀
Pour savoir, les "170" correspondent à un nombre de caractère max ? ou c'est arbitraire ?

Là je suis entrain de batailler pour trouver pourquoi il ne me supprime pas la bonne ligne quand je clique "supprimer" et idem pour la modification...je vais encore chercher !

@+
 
Re : Combobox lié à autre combobox

Re,

170 correspond à la largeur de la colonne du ComboBox. C'est en Point.

Dans le module 3 j'ai mis tes variables Public, rajoute celle ci:
Code:
Public Pos As Long

Dans la macro du USF3 du ListeCoupl2 supprimer la déclaration de la variable Pos
Code:
Sub ListeCoupl2_Click()

Pos = ListeCoupl2.List(ListeCoupl2.ListIndex, 1)
Call ChercheValeurs(Pos)

End Sub

Pour la suppression sert toi du n° de ligne dans la deuxième colonne du Combobox comme ceci par exemple :

Code:
Private Sub BoutonSupprimer2_Click()

Dim Reponse As Variant

If ListeCoupl2.ListIndex = -1 Then Exit Sub

Reponse = MsgBox("Voulez-vous vraiment effacer cet enregistremement ?" & vbCrLf & _
ListeReact2 & " - " & ListeCoupl2, 52, "Effacement de données")
If Reponse = vbNo Then Exit Sub

With Sheets("Anticorps secondaires")
 .Rows(Pos).Delete
End With

End Sub

Enfin rajoute à la fin de la macro ListeReact2 ceci :
Code:
'.../...
End With

ListeCoupl2.ListIndex = -1

End Sub

Cela évitera peut-être les erreurs de click

Il ne te reste qu'à vider tes controls

A+
 
Dernière édition:
Re : Combobox lié à autre combobox

Re et Bonjour Hasco

Je n'avais pas pensé à utiliser le n°ligne c'est une bonne idée,😉 j'ai juste ajouté l'affichage du USF3 après suppression parce-que vu que la page restait après suppression je croyais d'abord que ça ne supprimait pas 😱



Private Sub BoutonSupprimer2_Click()

Dim Reponse As Variant
Reponse = MsgBox("Voulez-vous vraiment effacer cet enregistremement ?", 52, "Effacement de données")
If Reponse = vbNo Then Exit Sub
Unload UserForm3
With Sheets("Anticorps secondaires")
.Rows(Pos).Delete
End With
UserForm3.Show (0)
End Sub

Merci encore pour tout Pierre-Olivier !
Et à Hasco pur la petite remarque 😉
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
9
Affichages
386
Réponses
3
Affichages
332
Réponses
28
Affichages
2 K
Retour