UserForm - afficher valeurs avec 2 listes déroulantes (soit 1 soit l'autre)

Hello, je cherche à pouvoir afficher mes valeurs triées dans un UserForm depuis une liste déroulante (Colonne B - N° de Clé/arrivage) en haut à gauche dans le UserForm. Jusque là tout va bien mais ou ça se complique pour moi ce serait de pouvoir faire la même chose avec la 2ème liste déroulante (aussi triée !) (Colonne C - N° de Lot)

En résumé, j'ouvre mon UserForm (bouton Saisies) de la feuille Générale (f1) et lorsque je sélectionne l'une ou l'autre des Listes déroulantes, la liste désirée apparaît triée

A savoir : dans le code de ma feuille, il reste des traces (mises en remarques) d'essais de codes effectués avec un ami qui avait tenté de résoudre mon problème, mais ça n'a jamais fonctionné

32auto-userform.xlsm (168.41 Ko)

Bonjour,

Dans Private Sub UserForm_Initialize() la partie de code mis en commentaire ' init liste des lots fonctionne !

Il doit y avoir quelque chose dans la demande que je ne comprend pas.

A+

Oui ça fonctionne mais que pour la liste affichée et triée dans la liste déroulante, si tu sélectionnes une valeur dans N° de lot, il ne se passe rien et c'est là que ça coince
Je veux quand je sélectionne le N° de Lot dans la liste déroulante, que le UserForm soit complété avec les valeurs de ce numéro de Lot qui n'est pas le même que l'ID

Avec l'autre liste déroulante Clé/Arrivage ça fonctionne tip top

Bonjour à tous,

Tu as écris "LotCherchée. ..." > le e est de trop ...

Un essai ...

Private Sub UserForm_Initialize()
Dim Valeur As Long, f1 As Worksheet
    Set f1 = Sheets("Générale")
    TrieLesID
    LigneFin = f1.[B204].End(xlUp).Row
    If LigneFin > 4 Then

        ' init liste des IDs/Clés
        Clé = f1.Range("B4:B" & f1.[B204].End(xlUp).Row)
        Tri Clé, LBound(Clé), UBound(Clé)
        Me.CléCherchée.List = Clé
        Me.CléCherchée.ListIndex = -1

        Clé2 = f1.Range("C4:C" & f1.[C204].End(xlUp).Row)
        Tri Clé2, LBound(Clé2), UBound(Clé2)
        Me.LotCherché.List = Clé2
        Me.LotCherché.ListIndex = -1

    Else
        If LigneFin = 4 Then
            Me.CléCherchée.AddItem f1.Range("B4")
            Me.LotCherché.AddItem f1.Range("C4")
        End If
    End If

    IDMaximum = Application.WorksheetFunction.Max(Clé)    'cherche la valeur ID MAX

    ' pour remplir auto une liste déroulante ou mettre la plage de cellule ici RowSource
    '   Me.Frais.List = Array("190", "90", "100", "120")
    B_ajout_Click
End Sub

ric

@ Ric

J'ai remplacé mon code par le tien plus parlant pour le UserForm_Initialize()
Par contre toujours le même problème, la liste est bien affichée et triée dans les 2 listes déroulantes mais seul les valeurs sont affichées avec Clé/Arrivage et rien avec les N° de lot

Bonjour à tous,

Excuse-moi, j'ai oublié la 2e partie ...

Étant donné qu'un bout du code est identique à CléCherchée_Click et LotCherché_Click > et que tu as déjà déclaré "LigneEnreg" au haut du formulaire afin que sa valeur puisse passer d'une macro à l'autre ...

Private Sub CléCherchée_Click()
   Dim Valeur As Long, DateExp As Integer

   ligneEnreg = f1.[B:B].Find(Me.CléCherchée, LookIn:=xlValues).Row
   Me.enreg = ligneEnreg
   my_lot = f1.Cells(ligneEnreg, 3)
'test
   For i = 0 To Me.CléCherchée.ListCount - 1
        If my_id = Me.CléCherchée.List(i) Then
            Me.CléCherchée.ListIndex = i
            Exit For
        End If
    Next

    Call SuiteArrEtLot
End Sub

Private Sub LotCherché_Click()
Dim Valeur As Long, DateExp As Integer

   ligneEnreg = f1.[C:C].Find(Me.LotCherché, LookIn:=xlValues).Row
   Me.enreg = ligneEnreg
   my_lot = f1.Cells(ligneEnreg, 3)
'test
   For i = 0 To Me.LotCherché.ListCount - 1
        If my_id = Me.LotCherché.List(i) Then
            Me.LotCherché.ListIndex = i
            Exit For
        End If
    Next
    Call SuiteArrEtLot
End Sub

Sub SuiteArrEtLot()
   Me.IDMaximum = IDMaximum
   Me.nom = f1.Cells(ligneEnreg, 4)
   Me.Modele = f1.Cells(ligneEnreg, 5)
   Me.Service = f1.Cells(ligneEnreg, 6)
   Me.Salaire = f1.Cells(ligneEnreg, 7)
   Me.couleur = f1.Cells(ligneEnreg, 8)
   Me.Frais = f1.Cells(ligneEnreg, 9)
   Me.Paye = f1.Cells(ligneEnreg, 10)
   Me.Taux = f1.Cells(ligneEnreg, 11)
   Me.Estimation = f1.Cells(ligneEnreg, 12)
   Me.km = f1.Cells(ligneEnreg, 13)
   Me.DateExp = f1.Cells(ligneEnreg, 14)
   Me.Veteran = f1.Cells(ligneEnreg, 15)
   Me.Reserve = f1.Cells(ligneEnreg, 16)
   Me.Proprio = f1.Cells(ligneEnreg, 17)
   Me.Adresse = f1.Cells(ligneEnreg, 18)
   Me.Mobile = f1.Cells(ligneEnreg, 19)
   Me.Adjugee = f1.Cells(ligneEnreg, 20)
   Me.Clef = f1.Cells(ligneEnreg, 21)
   Me.PrixAtteint = f1.Cells(ligneEnreg, 22)
   Me.Evaluation = f1.Cells(ligneEnreg, 25)
   Me.Email = f1.Cells(ligneEnreg, 26)
   Me.Transport = f1.Cells(ligneEnreg, 27)
   Me.CoutT = f1.Cells(ligneEnreg, 28)
   Me.TPaye = f1.Cells(ligneEnreg, 29)
   Me.PermisCirc = f1.Cells(ligneEnreg, 30)
   Me.IBAN = f1.Cells(ligneEnreg, 31)
End Sub

ric

Trop fort ! ça fonctionne nickel en l'état MERCI

Encore 2-3 bricoles, comme par exemple si j'ajoute ou modifie une valeur et qu'ensuite je clic sur enregistrer, le UserForm se remet à 0 et n'affiche plus rien, y aurait-il la possibilité qu'il ré-affiche le ID ou Lot qui vient d'être enregistré ?

Mais comme il est actuellement, c'est déjà beaucoup plus exploitable et c'est super

Bonjour à tous,

Ou là! Ou là! Ou là!

Il va falloir que je revoie un peu le code, car si l'on passe par "No de Lot" et que "No de clé/arrivage" est vide, une nouvelle ligne est créée au lieu d'utiliser celle choisie ...

Je reviens ...

ric

Bonjour à tous,

Ce n'était pas si mal ...

À tester plus avant ...

ric

Encore une fois un gros STRIKE .... Bravo et MERCI

Rechercher des sujets similaires à "userform afficher valeurs listes deroulantes soit"