ComboBox avec condition

Bonjour à tous et bonne année !

Je travaille sur un formulaire de location de véhicules de fonctions et j'ai un problème avec le formulaire de retour, j'aimerai que quand je clique sur le formulaire RETOUR n'apparaissent que les employés qui ont emprunté un véhicule, or quand je clique dessus tout les employés apparaissent.

Par exemple, dans la feuille employes, apparait le modèle du véhicule emprunté sur la ligne correspondant à un employé, j'aimerai que si il n'y a pas de véhicule emprunté sur la ligne de l'employé alors le nom ne doit pas apparaitre

J'apprécie toute aide qui me sera apportée

Bonjour,

Faut pas mettre toute la liste dans ce cas ! Mais ne prendre que ceux qui ont empruntés...

Private Sub UserForm_Initialize()
    Dim Empl(), e%, c As Range
    With Worksheets("employes")
        For Each c In .Range("C5").Resize(.Cells(.Rows.Count, 3).End(xlUp).Row - 4)
            If c.Cells(1, 3) = 1 Then
                ReDim Preserve Empl(e)
                Empl(e) = c: e = e + 1
            End If
        Next c
    End With
    With ComboBox1
        If e > 1 Then
            .List = Empl
        ElseIf e = 1 Then
            .AddItem Empl(0)
        End If
    End With
End Sub

Cordialement et bonne année.

Merci beaucoup ça a marché pour la liste déroulante

EDIT : en faite, j'ai un problème par la suite, au niveau du combobox, ça fait un décalage sur le formulaire de pret par rapport au nom de l'employé et à son numéro d'identification, le nom de l'employé ne correspond pas à son numéro d'identification

Quelles modifs je doit alors faire sur le ComboBox1_Change ??

Je n'avais pas regardé jusque là ! Mais il est bien évident que si tu filtres ta liste, tu ne peux plus par la suite utiliser le ListIndex...

Alors, c'est possible ! par exemple avec Une Combo à 2 colonnes, une colonne non visible dans la Combo qui conserve la ligne correspondant au nom... Mais il faut repenser l'ensemble et réécrire toutes les procédures, aussi je te conseillerais de ne pas modifier ton dispositif actuel en attendant !

Ce qui n'a pas été prévu au départ peut parfois faire l'objet de rustines qui s'harmoniseront plus ou moins mal mais il est des cas où l'on ne peut que tout reprendre...

Ce n'est pas que je n'ai pas envie de le faire, mais cela dépasse le cadre d'une réponse rapide en cours de journée (c'est aussi le jour qui veut ça !) et mes contraintes des prochains jours étant ce qu'elles sont, je reviendrai si personne n'a répondu à ton attente...

Mais souviens-toi tout de même : tu n'as pas soulevé cette question lors de la conception initiale du projet, tu ne retrouves donc pas ce que tu souhaiterais à l'arrivée. Logique ! La conception est le moment le plus important, ce qui n'a pas été pensé explicitement avant de commencer la réalisation, sera absent au résultat !

Cordialement.

Je comprends , en effet, la conception a été assez hasardeuse me concernant, je te remercie en tout cas de ton aide et de tes précieux conseils

Bonsoir et bonne année

Voici ce passage pour remplacer le tien :

Private Sub ComboBox1_Change()
Dim rng As Range
With Worksheets("employes")
    Set rng = .Range("C:C").Find(Me.ComboBox1.Text, LookIn:=xlValues, lookat:=xlWhole)
    If Not rng Is Nothing Then
        Lig = rng.Row
        Me.TextBox1.Value = .Range("B" & Lig).Value
        Me.TextBox2.Value = .Range("F" & Lig).Value
        Me.TextBox3.Value = .Range("G" & Lig).Value
    End If
End With
End Sub

Bon courage

A+

ça a marché merci beaucoup Patty !!

Suite à ta demande, e% équivaut à écrire e As Integer. % est dans ce cas ce qu'on appelle un caractère de déclaration de type.

Cordialement.

Rechercher des sujets similaires à "combobox condition"