Listbox is null

Bonjour,

mes listbox ont une valeur null pourtant ils sont bien rempli.

Quand je le clique j'ai une erreur.

quelqu'un aurais une solution à mon problème svp ?

Merci pour votre aide

Dim dictProjetToProduit As Object
Dim dictProduitToProjet As Object
Dim dictDateToProjetProduit As Object

Private Sub btnFiltrer_Click()
    Dim projet As String, produit As String, dateMaj As String

    projet = lstProjets.Value
    produit = lstProduits.Value
    dateMaj = lstDates.Value

    If lstDates.ListIndex <> -1 Then
        dateMaj = CStr(lstDates.List(lstDates.ListIndex))
    Else
        MsgBox "Veuillez sélectionner une date.", vbExclamation
        Exit Sub
    End If

    If projet <> "" And produit <> "" And dateMaj <> "" Then
        Call FiltrerProjetProduitDate(projet, produit, dateMaj)
    Else
        MsgBox "Veuillez sélectionner un projet, un produit et une date.", vbExclamation
    End If

    UseformProjet.Close
End Sub

Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim projet As Variant, produit As Variant, dateMaj As Variant

    Set dictProjetToProduit = CreateObject("Scripting.Dictionary")
    Set dictProduitToProjet = CreateObject("Scripting.Dictionary")
    Set dictDateToProjetProduit = CreateObject("Scripting.Dictionary")
    Set ws = ThisWorkbook.Sheets("DATA_Graphs")

    ' Désactiver les filtres pour lire toutes les lignes
    If ws.AutoFilterMode Then ws.AutoFilterMode = False

    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

    For i = 2 To lastRow

        If Not IsNull(ws.Cells(i, "B").Value) Then projet = Trim(ws.Cells(i, "B").Value) Else projet = ""
        If Not IsNull(ws.Cells(i, "C").Value) Then produit = Trim(ws.Cells(i, "C").Value) Else produit = ""
        If Not IsNull(ws.Cells(i, "E").Value) Then dateMaj = Trim(ws.Cells(i, "E").Text) Else dateMaj = ""

        If projet <> "" And produit <> "" And dateMaj <> "" Then
            If Not dictProjetToProduit.Exists(projet) Then
                dictProjetToProduit.Add projet, CreateObject("Scripting.Dictionary")
            End If
            dictProjetToProduit(projet)(produit) = True

            If Not dictProduitToProjet.Exists(produit) Then
                dictProduitToProjet.Add produit, CreateObject("Scripting.Dictionary")
            End If
            dictProduitToProjet(produit)(projet) = True

            If Not dictDateToProjetProduit.Exists(dateMaj) Then
                dictDateToProjetProduit.Add dateMaj, CreateObject("Scripting.Dictionary")
            End If
            dictDateToProjetProduit(dateMaj)(projet & "|" & produit) = True
        End If
    Next i

    ' Remplir les ListBox
    lstProjets.Clear
    For Each projet In dictProjetToProduit.Keys
        lstProjets.AddItem projet
    Next

    lstProduits.Clear
    For Each produit In dictProduitToProjet.Keys
        lstProduits.AddItem produit
    Next

    Dim dateList As Object
    Set dateList = CreateObject("Scripting.Dictionary")

    lstDates.Clear
    For Each dateMaj In dictDateToProjetProduit.Keys
        If Not dateList.Exists(dateMaj) Then
            dateList.Add dateMaj, True
            lstDates.AddItem dateMaj
        End If
    Next

End Sub

Private Sub lstProjets_Change()
    Dim projet As String, produit As Variant, dateMaj As Variant

    If Not IsNull(lstProjets.Value) Then
        projet = lstProjets.Value
    Else
        MsgBox "aucun projet"
    End If

    ' Produits associés
    lstProduits.Clear
    If dictProjetToProduit.Exists(projet) Then
        For Each produit In dictProjetToProduit(projet).Keys
            lstProduits.AddItem produit
        Next
    End If

    ' Dates associées
    lstDates.Clear
    For Each dateMaj In dictDateToProjetProduit.Keys
        For Each pair In dictDateToProjetProduit(dateMaj).Keys
            If Split(pair, "|")(0) = projet Then
                lstDates.AddItem dateMaj
                Exit For
            End If
        Next
    Next
End Sub

Private Sub lstProduits_Change()
    Dim produit As String, projet As Variant, dateMaj As Variant
    If Not IsNull(lstProduits.Value) Then
        produit = lstProduits.Value
    Else
        MsgBox "aucun produit"
    End If

    ' Projets associés
    'lstProjets.Clear
    If dictProduitToProjet.Exists(produit) Then
        For Each projet In dictProduitToProjet(produit).Keys
            lstProjets.AddItem projet
        Next
    End If

    ' Dates associées
    lstDates.Clear
    For Each dateMaj In dictDateToProjetProduit.Keys
        For Each pair In dictDateToProjetProduit(dateMaj).Keys
            If Split(pair, "|")(1) = produit Then
                lstDates.AddItem dateMaj
                Exit For
            End If
        Next
    Next
End Sub

Private Sub lstDates_Change()
    Dim dateMaj As String, pair As Variant
    dateMaj = lstDates.Value

    lstProjets.Clear
    lstProduits.Clear

    If dictDateToProjetProduit.Exists(dateMaj) Then
        For Each pair In dictDateToProjetProduit(dateMaj).Keys
            lstProjets.AddItem Split(pair, "|")(0)
            lstProduits.AddItem Split(pair, "|")(1)
        Next
    End If
End Sub

Bonkour,

Quand je le clique j'ai une erreur. A quel niveau?

Le code seul, ne nous aide pas beaucoup tant que nous n'avons pas de fichier pour tester, alors déposez le fichier (sans données confidentielles) et vous aurez peut-être une réponse.

Cdlt

Bonjour, voici le fichier, le bouton s'appel Filtre par projet tu le retrouve dans l'onglet complément

9picc-v4-0-copie.zip (854.07 Ko)

Bonjour,

image

Où est la feuille "Jour Férié"?

Cdlt

Bonjour, j'ai rajouter l'onglet jour férié

4picc-v4-0-copie.zip (859.68 Ko)
9picc-v4-0-copie.zip (859.68 Ko)

Et si vous expliquiez comment on s'en sert, qu'est-ce qui bloque? On ne peut pas tout deviner, alors faites un petit effort et mettez-vous à la place de quelqu'un qui n'a aucune connaissance de votre projet

Re-bonjour,

Merci encore pour ta disponibilité, c’est vraiment très gentil de ta part.

J’ai créé un formulaire qui permet de filtrer les données présentes dans l’onglet DATA_Graphs.

Pour y accéder, il faut aller dans l’onglet Compléments, puis cliquer sur Filtre par projet pour afficher le formulaire

filtre par projet

Fonctionnement du filtre :

Les filtres que je sélectionne permettent de suivre l’évolution de chaque produit sur les graphiques.

Le formulaire s’appelle UseFormProjet.

formfiltre

Problème rencontré :

Lorsque je clique sur la liste déroulante pour sélectionner un élément, j’obtiens l’erreur suivante :

Erreur : null

null

J’ai essayé d’ajouter une condition pour contourner le problème, mais l’erreur persiste.

formfilter2

Pour y accéder, il faut aller dans l’onglet Compléments, il n'y a pas l'onglet "Compléments"

ha mince c'est un élément externe qu'on a rajouter , sorry j'aurais du y penser.

j'ai rajouter un bouton dans l'onglet Data_Graphs

6picc-v4-0-copie.zip (864.63 Ko)

Voici le fichier avec quelques corrections:

Cdlt

Merci beaucoup pour ton aide @Arturo83

Rechercher des sujets similaires à "listbox null"