Remplir une ListBox

Bonsoir Forum,

Voilà j'ai fais un user form avec des combox, une lisbox, deux check box etc, j'aimerais pouvoir afficher le résultat du contenu du choix que je ferais a partir de la combo1 avec la checkbox1 qui sélectionne >= avec dans une combo voisine un chiffre et donc afficher le produit du résultat dans la listbox.

J'ai mis un fichier avec une photo du user form ça sera plus explicite. Et surtout est'on obliger de rajouter des formules avant sur la feuille Base ou pas ?

Merci de vôtre aide et de vôtre patience

25test.zip (35.12 Ko)

Bonsoir,

Ci-joint une proposition à tester, 100% VBA.

Bonne soirée

Bouben

Merci bouben pour ce code, il fonctionne mais finalement, avec mes checkbox je mis perd moi même donc le mieux ça serais la même listbox mais avec 4 colonnes. A noter que si par exemple je choisi la date du 1-8-17 et que je change le nom en ligne 18 il ira pas chercher la correspondance du même nom celui à la ligne 2 vu que théoriquement il pourrait y avoie bcp plus de lignes avec des noms différents.

Bonjour,

Ci-joint une nouvelle version :

>affiche toutes les marques

>pour chaque marque :

prix à la date choisie

prix antérieur (mois précédent, ou m-2 si absent, ou m-3, etc)

variation

muratime a écrit :

mais finalement, avec mes checkbox je mis perd moi même

>les critères de choix prix min / max sont supprimés

Bonne journée

Bouben

OK merci bouben ça fonctionne mis a part un petit détails.

J'ai vu aussi que la recherche se faisais sur les douze dernier mois c'est possible d'augmenter le délais a 5 ans par exemple.

Salut,

muratime a écrit :

ça fonctionne mis a part un petit détails voir la photo.

On affiche les marques qui existaient avant mais qui n'existent plus pour le mois sélectionné

ex : 205 peugeot Turbo : en août : 0 (aucune), en juillet : 10 000

Ci-joint une nouvelle version à tester :

> recherche sur 5 ans

> modification de la règle : exclusion des marques absentes le mois sélectionné (c'est moins bien )

Bouben

Re ça marchais presque bien jusqu'a que si je met la date du 01-08-19 pour la peugeot 205 il va me mettre que la valeur nouvelle mais plus l'ancienne qui se trouve en ligne 18 de la date du 1-7-17.

J'ai mis des dates passé car je me suis dis que 2019 ça coince mais c'est pareil.

Sans fichier, pas facile.

Peut-être un espace à la fin de "205 Peugeot" ...

Bouben

Merci de ta patience je vais voir si il y a des espaces et t'envois ce que j'avais modifié


Bon bah écoute j'ai fais plusieurs test etc etc j'ai du mettre un espace même deux sur les deux peugeot 205 du haut c'est comme ça que j'arrive a reproduire l'image Excel il rigole pas un pet de travers et c'est la cata

Un grand merci a toi bouben et de ta patience ça fonctionne à merveille

Un petit dernier détail je vois que t'a mis ça si je veux mettre 1 an de plus ça change sur le code ou c'est bon ?

Public Property Get PrixPrec(pdtDate As Date) As clsPrix

    'Const I_MAX_DELAI As Integer = 12 'recherche jusqu'à 12 mois
    Const I_MAX_DELAI As Integer = 60 'recherche jusqu'à 5 ans

Sinon je reviens vers toi je voudrais rajouter une colonne supplémentaire que je nomme TOP 20 sur la feuille excel, ce qui rajouterais 2 colonnes supplémentaire dans la ListBox voir photo, est ce que c'est possible ? Après ça sera bon

Te remerciant d'avance

Hello,

muratime a écrit :

Un petit dernier détail je vois que t'a mis ça si je veux mettre 1 an de plus ça change sur le code ou c'est bon ?

Const I_MAX_DELAI As Integer = 60 'recherche jusqu'à 5 ans

Cette constante définit combien de mois en arrière on va rechercher la même voiture.

Peugeot 205 en août 2017, on va rechercher le prix en juillet, si non trouvé, en juin, etc, jusqu'à ce qu'on trouve.

Pour l'instant 60 mois = 5 ans. Ce qui veut dire qu'on recherche jusque 5 ans en arrière. A priori, c'est suffisant : si tu as une Twingo en août 2017, on ramènera au pire le prix en août 2012 (si aucun autre prix entre ces 2 dates). La comparaison n'a de plus trop d'intérêt à ce stade.

muratime a écrit :

Sinon je reviens vers toi je voudrais rajouter une colonne supplémentaire que je nomme TOP 20 sur la feuille excel, ce qui rajouterais 2 colonnes supplémentaire dans la ListBox voir photo, est ce que c'est possible ?

Possible, tout rajout de colonne entraîne une modification de la listbox et du code VBA.

Un fichier en exemple, c'est mieux qu'une image ...

Ci-joint une nouvelle version à tester.

Bouben

Bon bah merci nickel ça fonctionne à merveille merci encore, je voulais essayer une listview mais depuis que je suis passé sur Windows 7 j'ai un message d'erreur qui dit "ClassFactory ne peut fournir la classe demandée" ça viendrais d'un OCX sur quelque forum que j'ai lu soit pas enregistré ou soit manquant.

Hello Forum, Hello bouben

Je reviens vers toi, car j'avais un petit problème de Windows, après réinstallation complète je peux de nouveau avoir une listview dans excel .

Ma question est ce que ça serait possible d'avoir une listview à la place de la listbox ?

J'ai essayé quelque modif par moi même mais ça bloque vers la fin. Le code principal je pense se trouve ici, sinon tout est dans le dernier fichier. ( VariationMarques-V0.3.xls)

Voilà si toi ou quelqu'un d'autre pouvais me donner un coup de ça serait génial.

Private Sub Recherche()

    Dim dMtA As Double
    Dim dMtPrec As Double
    Dim dtA As Date
    Dim dtPrec As Date
    Dim sMtA As String 'pour affichage
    Dim sMtPrec As String 'pour affichage
    Dim sTopA As String
    Dim sTopPrec As String
    Dim sVariation As String 'pour affichage
    Dim oMarque As clsMarque
    Dim oPrixA As clsPrix
    Dim oPrixPrec As clsPrix

    'MsgBox mcolMarques.Count

    ListBox1.Clear  '>>>> j'avais mis ça ListView1.ListItems.Clear

    dtA = ComboBox1.Value
    dtPrec = DateAdd("d", -1, dtA) ' >>> "d" = day

    For Each oMarque In mcolMarques
        'recherche prix à date
        Set oPrixA = oMarque.PrixDate(dtA)
        If oPrixA Is Nothing Then
            dMtA = 0
            sMtA = ""
            sTopA = ""
        Else
            dMtA = oPrixA.Prix
            sMtA = Format(dMtA, "### ### ###")
            sTopA = oPrixA.TopX
        End If

        'recherche prix à date antérieure
        Set oPrixPrec = oMarque.PrixPrec(dtA)

        If oPrixPrec Is Nothing Then
            dMtPrec = 0
            sMtPrec = ""
            sTopPrec = ""
        Else
            dMtPrec = oPrixPrec.Prix
            sMtPrec = Format(dMtPrec, "### ### ###")
            sTopPrec = oPrixPrec.TopX
        End If

        'MsgBox oMarque.Marque & vbCrLf & "Mt A : " & dMtA & vbCrLf & "Mt préc : " & dMtPrec, vbExclamation
        If dMtA = 0 Or dMtPrec = 0 Then
            'un seul prix : pas de variation
            sVariation = ""
        Else
            sVariation = Format(dMtA - dMtPrec, "### ### ###")
        End If
        ' MsgBox "Marque : " & sMarque & vbCrLf & "Ecart : " & dVariation, vbExclamation

        'If dMtA <> 0 Or dMtPrec <> 0 Then
        If dMtA <> 0 Then
            ListBox1.AddItem oMarque.Marque ' >> et ici je commence a bloquer :-)

            ListBox1.List(ListBox1.ListCount - 1, 1) = sMtPrec
            ListBox1.List(ListBox1.ListCount - 1, 2) = sTopPrec
            ListBox1.List(ListBox1.ListCount - 1, 3) = sMtA
            ListBox1.List(ListBox1.ListCount - 1, 4) = sTopA
            ListBox1.List(ListBox1.ListCount - 1, 5) = sVariation
        End If

        Set oPrixA = Nothing
        Set oPrixPrec = Nothing

    Next oMarque

End Sub
Rechercher des sujets similaires à "remplir listbox"