Mise à jour ListView selon critère

Bonjour à tous,

Etant actuellement en BTS compta, je m’entraîne à coder en VBA en réalisant un petit programme de facturation automatique.

Ce programme simple permet de réaliser des factures et devis en deux clic, de gérer des bases de données CLIENTS et PRODUITS uniquement par USF (Ajout, Suppression, Modification), et de suivre les factures en attente de règlement...

Bref, tout cela pour dire que j'ai un petit soucis pour l'enregistrement des nouveaux règlements

Actuellement, lors de la réception d'un règlement, l'utilisateur va directement sélectionner la facture dans la ListView (incrémentée automatiquement de factures non réglées), puis ils choisira son mode de règlement et validera celui-ci (Cela permettra de retirer la facture de la liste des factures non réglées).

Sauf que (enfin !) lorsqu'on a 65 000 factures en attente, ça complique la chose. C'est pourquoi j'aimerai pouvoir avoir la possibilité de choisir un client dans la liste déroulante, et de mettre à jour la ListView avec les factures en attente de règlement du client sélectionné uniquement.

Et là ça coince :

  • Comment boucler les "NOM Prénom" de la listview, tout en les rajoutant sans doublons dans la combobox "Client"
  • Inversement lors du choix du client, comment boucler les "NOM Prénom" en supprimant les lignes dont le nom est différent de la combobox

Euh je ne sais pas si j'ai été suffisamment clair, si vous avez des questions n'hésitez pas et si vous avez des éléments de réponse, je suis preneur .

En vous remerciant d'avance,

Valentin

Bonjour

Ton fichier avec quelques données (en double - Comme en réalité dans ton fichier ) est indispensable

Bonjour et merci Banzai64,

J'ai trouvé une solution provisoire qui fonctionne plutôt bien et qui a été très simple à réaliser :

- Remplissage de la combobox grace à la base de donnée client (du coup on a tous les clients et non ceux qui ont des factures en cours)

- Lors du remplissage de la listview, on détecte si la combobox est vide. S'il elle est vide, remplissage normal de la liste des factures en attente de règlement. Si elle est pleine, remplissage de la listview uniquement si le "NOM prénom" de la combobox correspond avec celui de la facture.

La partie du code modifiée :

'************* LISTAGE REGLEMENTS ***************
Function ListageReglements()
With ListView2
    With .ColumnHeaders
        .Clear 'Supprime les anciens entêtes
        .Add , , "N°", 20
        .Add , , "Date Fact", 60, lvwColumnCenter
        .Add , , "NOM Prénom", 103, lvwColumnLeft
        .Add , , "Montant TTC", 60, lvwColumnRight
    End With

    .ListItems.Clear 'supprime les anciennes données
    .View = lvwReport 'affichage en mode Rapport
    .Gridlines = True 'affichage d'un quadrillage
    .FullRowSelect = True 'Sélection des lignes comlètes
    .MultiSelect = True

    For i = 2 To Sheets("Base de donnée").[A60000].End(xlUp).Row

        If Sheets("Base de donnée").Cells(i, 8) <> Sheets("Base de donnée").Cells(i, 6) Then
            If ListeClientsRGL = "" Then
            .ListItems.Add , , Sheets("Base de donnée").Cells(i, 1)
            .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Base de donnée").Cells(i, 2)
            .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Base de donnée").Cells(i, 3)
            .ListItems(.ListItems.Count).ListSubItems.Add , , Format(Sheets("Base de donnée").Cells(i, 6), "# ##0.00 €")
            Else
                If Sheets("Base de donnée").Cells(i, 3).Value = ListeClientsRGL.Value Then
                .ListItems.Add , , Sheets("Base de donnée").Cells(i, 1)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Base de donnée").Cells(i, 2)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Base de donnée").Cells(i, 3)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Format(Sheets("Base de donnée").Cells(i, 6), "# ##0.00 €")
                End If
            End If
        End If

    Next i
End With
End Function

Ah et évidemment :

- Lancement de la fonction lors d'un changement dans la combobox

Du coup il me semble que mon problème est résolu.

Bonjour

sokalbr a écrit :

Du coup il me semble que mon problème est résolu.

Donc tu peux clôturer le post

Rechercher des sujets similaires à "mise jour listview critere"