Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

remplir listbox avec des conditions

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

supercrapaud

XLDnaute Occasionnel
Bonjour à tous.

Après des recherches infructueuses, je viens vers vous pour avoir des précisions. Je souhaite créer un formulaire qui comprendrait une listbox avec quelques paramètres :
- cette listbox doit contenir 4 colonnes
- cette listbox doit contenir un titre pour chaque colonne
- cette listbox doit contenir des données provenant de 4 colonnes non adjacentes
- Les données ne doivent être inscrites dans la listbox que si 2 conditions sont remplies.

Ma question est simple comment faire ? Dois-je passer par un dictionnaire ou une boucle ou autre ? Voilà un petit fichier exemple pour vous montrer ce que je cherche car là je sèche.

En vous remerciant par avance.
 

Pièces jointes

Re : remplir listbox avec des conditions

Bonjour,

Faites la démarche suivante

1) dans votre UserForm replacez le code par le code suivant

Code:
Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim S As Worksheet
Dim R As Range
Dim var
Dim i&
If Client = "" Then Exit Sub
Set S = Sheets(FEUILLE_SOURCE)
S.Copy After:=Sheets(1)
Set S = ActiveSheet
S.Columns("H:I").Delete
S.Columns("E:F").Delete
S.Columns("A").Delete
S.Columns("C:C").Cut
S.Columns("A:A").Insert Shift:=xlToRight
S.Columns("C:C").Cut
S.Columns("B:B").Insert Shift:=xlToRight
var = S.[a1].CurrentRegion
For i& = UBound(var, 1) To 2 Step -1
  If var(i&, 1) <> Client Or UCase(Trim(var(i&, 5))) <> "N" Then S.Rows(i&).Delete
Next i&
i& = S.[a1].CurrentRegion.Rows.Count
If i& > 1 Then
  Set R = S.Range("a2:d" & i& & "")
  With ListBox1
    .ColumnCount = 4
    .ColumnWidths = "80;80;80;80"
    .ColumnHeads = True
    .RowSource = R.Address
  End With
End If
Application.DisplayAlerts = False
S.Delete
Application.DisplayAlerts = True
Client = ""
End Sub

2) dans un module standard copiez le code suivant

Code:
'### Constante à adapter ###
Public Const FEUILLE_SOURCE As String = "Liste doc émis"
'###########################

Public Client

Sub aff_form()
Dim var
Dim bool As Boolean
Dim i&
Client = InputBox("Entrez le nom du client recherché.")
If Client = "" Then Exit Sub
var = Sheets(FEUILLE_SOURCE).UsedRange
'--- On vérifie si le nom demandé figure dans la feuille ---
For i& = 2 To UBound(var)
  If UCase(Trim(var(i&, 4))) = UCase(Trim(Client)) Then
    bool = True
    Exit For
  End If
Next i&
If Not bool Then
  MsgBox "Le client ''" & Client & "'' est introuvable"
  Exit Sub
End If
UserForm1.Show 0
End Sub

Cordialement.

PMO
Patrick Morange
 
Re : remplir listbox avec des conditions

Bonjour et merci d'avoir pris le temps de regarder mon problème.

J'ai bien essayé votre solution sur le fichier (je n'ai pas eu le temps sur mon fichier à moi) mais en fait ce que je voudrait c'est que lorsque l'on choisit un client, une listbox apparaisse et contient la liste de toutes les factures non réglées et pas qu'une seule.

Je pensais à un truc du genre
for each c in range...
if c.value = "a1" then
if c.offset (0,5) then ajout de la facture dans la listbox.

Est-ce possible ou c'est moi qui n'a pas compris votre solution ? En tout cas merci pour votre proposition ^^.
 
Re : remplir listbox avec des conditions

Bonjour,

Ce que j'ai considéré :

A partir de la feuille "Liste doc émis", recherche des factures dont le client en colonne D correspond au client recherché à condition qu'en colonne J on trouve "N" (que j'ai interprété comme "non réglée")

Il est donc normal de ne pas trouver toutes les factures du client recherché, certaines (voire toutes) ayant été réglées.

Cordialement.

PMO
Patrick Morange
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
249
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…