XL 2010 Ajouter dans une Listbox uniquement les infos qui respectes certaine conditions (VBA)

hiddens

XLDnaute Nouveau
Bonjour,

je cherche à afficher dans ma Listbox uniquement les ouvriers qui ne sont pas occupés entre les dates de la tache sélectionner dan mon Userforme.

exemple : si ouvrier 1 est occupé du 27/02/2020 au 29/02/2020 je veux qu'il n'apparaisse pas dans ma Liste ouvriers si je choisi une tache qui doit ce dérouler du du 25/02/2020 au 28/02/2020.
mon code :
VB:
Option Explicit
Dim i As Integer
Dim Lig As Integer
Dim Ligtache As Integer
Dim c As Integer


Private Sub Label5_Click()

End Sub

Sub UserForm_Activate()   'va chercher les projet en cours
   
    For i = 8 To 1000
    If Projet.ListIndex = -1 And Range("A" & i) <> "" Then _
        Projet.AddItem Sheets("Feuil1").Range("A" & i).Value
    Next
    If choix_Boite.ListIndex = -1 Then _
    choix_Boite.List = WorksheetFunction.Transpose(ActiveSheet.Range("G7:H7"))
   
    If Spe.ListIndex = -1 Then _
        Spe.Clear
        Spe.AddItem "Soudage"
End Sub

Private Sub Projet_Change()   'va chercher les diferente taches du projet selectionné
    If Projet.ListIndex = -1 Then _
        Me.TacheZone.Clear
   
        With Sheets("Feuil1")
            Lig = .Columns(1).Cells.Find(Me.Projet.List(Me.Projet.ListIndex)).Row
            Me.TacheZone.Clear
            For i = Lig + 1 To Range("B" & Lig + 1).End(xlDown).Row
                Me.TacheZone.AddItem Sheets("Feuil1").Range("B" & i).Value
            Next
        End With
    Exit Sub
End Sub

Private Sub Spe_Change()   'pas utile dand l'example
    If Spe.Value = "Soudage" Then
        Me.Label4.Visible = True
        Me.choix_Boite.Visible = True
        Me.Label5.Visible = True
        Me.List_Ouvr.Visible = True
        Label5.Caption = "Soudeurs :"
        Me.List_Ouvr.Clear
    End If
End Sub

Private Sub choix_Boite_Change()   'va chercher la liste des ouvriers en foction de la boite et la transpose dans la Listbox
    If choix_Boite.Value = "Boite 1" Then   'code que je veux modifier
        Me.List_Ouvr.Clear
        List_Ouvr.List = WorksheetFunction.Transpose(ActiveSheet.Range("I7:T7"))
       
'_____________________Partie du code que je n'arrive pas a ecrire __________________________________
'        For i = 8 To 21
'        Ligtache = Columns(2).Cells.Find(Me.TacheZone.List(Me.TacheZone.ListIndex)).Row
'          
'         If Range("C" & i) >= Range("C" & Ltache) Or Range("E" & i) <= ("E" & Ltache) Then
'                For c = 9 To 20
'                    If Cells(c, i) = "" Then
'                        List_Ouvr.List = WorksheetFunction.Transpose(ActiveSheet.Cells(c, 7))
'                    End If
'                Next
'            End If
'        Next
'__________________________________________________________________________________________________
    End If


    If choix_Boite.Value = "Boite 2" Then   'code sans filtrer les ouvriers occupés
        Me.List_Ouvr.Clear
        List_Ouvr.List = WorksheetFunction.Transpose(ActiveSheet.Range("U7:AP7"))
    End If
End Sub

je vous joint des captures d’écran et je peux vous fournir le fichier en exemple si besoin.
image demande1.jpgimage demande2.jpg
Merci d’avance pour votre aide et bonne journée.
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
281

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa