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

Affichage dans une listbox sous condition

  • Initiateur de la discussion Initiateur de la discussion lodam
  • Date de début Date de début

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 !

lodam

XLDnaute Occasionnel
Bonjour à tous et à toutes

Je vous joins un petit fichier démo.

J'ai un listing de clients, certains d'entre eux sont des sociétés.
Je dois choisir uniquement ces sociétés pour les afficher dans une listbox.

Je sais alimenter une listbox mais je ne sais pas
a) l'alimenter uniquement avec des cellules respectant la condition cidessus (mon code avec rowsource provoque une erreur)

b) quand je réussis à extraire les bonnes cellules, afficher les données sur les 3 colonnes

bref, j'aurais besoin de vos brillantes lumières

merci d'avance
lodam
 

Pièces jointes

Re : Affichage dans une listbox sous condition

Bonsoir Lodam

ta macro ci dessous modifiée :

Code:
Private Sub charger_liste_clients_actifs()
Dim x As Integer, i As Integer
Application.ScreenUpdating = False

Sheets("ListeCLients_GM").Select

'avec la feuille de données listeclientsGM
For i = 2 To Sheets("ListeCLients_GM").Range("A65536").End(xlUp).Row

With ListBox_choix_clients
  .ColumnCount = 6
  .ColumnWidths = "25;0;60;0;60"
'on charge le listBox  des données
If LCase(Sheets("ListeCLients_GM").Cells(i, 4).Value) = "société" Then
.AddItem Sheets("ListeCLients_GM").Cells(i, 1).Value
.List(x, 1) = Sheets("ListeCLients_GM").Cells(i, 2).Value
.List(x, 2) = Sheets("ListeCLients_GM").Cells(i, 3).Value
.List(x, 3) = Sheets("ListeCLients_GM").Cells(i, 4).Value
.List(x, 4) = Sheets("ListeCLients_GM").Cells(i, 5).Value
.List(x, 5) = Sheets("ListeCLients_GM").Cells(i, 6).Value
x = x + 1
End If

'.AddItem Sheets("ListeCLients_GM").Range("A" & i)
End With
Next i
Application.ScreenUpdating = True
End Sub

bonne soirée
@+
 
Re : Affichage dans une listbox sous condition

Bonjour

Je poursuis sur ma problématique après l'excellente solution de Pierrot93

Si la deuxième listbox s'appelle 'ListBox_clients_a_facturer et si on veut l'alimenter à partir d'un clic sélectionnant une ligne dans la première list box (ListBox_choix_clients), la formule n'est pas :

ListBox_clients_a_facturer.AddItem ListBox_choix_clients.Value

car cela me donne une erreur

Pourriez-vous m'aiguiller ?

merci
 

Pièces jointes

Re : Affichage dans une listbox sous condition

Bonjour Lodam

comme tu as des boutons prévus à cet effet j'ai rajouté les codes cidessous :

bouton 1 envoie tous les enregistrements vers la 2ème ListBox
Code:
Private Sub CommandButton1_Click()
Dim i As Byte
For i = 0 To ListBox_choix_clients.ListCount - 1
    ListBox_clients_a_facturer.AddItem ListBox_choix_clients.List(i, 4)
Next i
End Sub

bouton 2, envoie les enregistrements sélectionnés (propriété multi selection activé)
Code:
Private Sub CommandButton2_Click()
Dim i As Byte
For i = 0 To ListBox_choix_clients.ListCount - 1
    If ListBox_choix_clients.Selected(i) = True Then
        ListBox_clients_a_facturer.AddItem ListBox_choix_clients.List(i, 4)
   End If
Next i
End Sub

bon après midi
@+
 
Re : Affichage dans une listbox sous condition

FAntastique !
ça marche impecc
Il ne me reste plus qu'à trouver le moyen d'empêcher d'ajouter plusieurs fois la même sélection, peut être en rafraichissant la listbox

merci encore
lodam
 
Re : Affichage dans une listbox sous condition

ça avance,
J'ai enlevé la possibilité d'activer les boutons quand on a fait un transfert de toute la listbox et pour éviter une erreur

Je travaille sur le transfert des éléments sélectionnés dans la première listbox vers la seconde et qui doivent donc être retirés de la première mais je n'y arrive pas avec "remove item"
Je continue de chercher

lodam
 

Pièces jointes

Re : Affichage dans une listbox sous condition

Re

déjà pour éviter les doublons dans listbox2 :

Code:
Private Sub CommandButton2_Click()
Dim i As Byte
ListBox2.Clear
For i = 0 To ListBox1.ListCount - 1
    ListBox2.AddItem ListBox1.List(i, 0)
Next i
End Sub
Private Sub CommandButton1_Click()
Dim i As Integer, x As New Collection
For i = 0 To ListBox2.ListCount - 1
    On Error Resume Next
    x.Add ListBox2.List(i, 0), CStr(ListBox2.List(i, 0))
    On Error GoTo 0
Next i
For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then
    On Error Resume Next
        x.Add ListBox1.List(i, 0), CStr(ListBox1.List(i, 0))
        If Err = 0 Then ListBox2.AddItem ListBox1.List(i, 0)
    On Error GoTo 0
   End If
Next i
End Sub

@+
 

Pièces jointes

Dernière édition:
Re : Affichage dans une listbox sous condition

Re

pour supprimer essaye le code ci dessous, je n'ai pas tenu compte de l'évolution précédente :

Code:
Dim i As Integer
For i = ListBox_choix_clients.ListCount - 1 To 0 Step -1
    If ListBox_choix_clients.Selected(i) = True Then
        ListBox_clients_a_facturer.AddItem ListBox_choix_clients.List(i, 4)
        ListBox_choix_clients.RemoveItem (i)
    End If
Next i

@+
 
Re : Affichage dans une listbox sous condition

merci pierrot93
j'ai essayé ce code mais ça ne fonctionne pas car j'ai une erreur avec 'selected(i)

je poursuis...
merci vraiment pour ton soutien
 
Re : Affichage dans une listbox sous condition

Re

j'ai modifié le code du bouton 2 comme suit,

Code:
Private Sub CommandButton2_Click()
Dim i As Integer, x As New Collection
For i = 0 To ListBox2.ListCount - 1
    On Error Resume Next
    x.Add ListBox2.List(i, 0), CStr(ListBox2.List(i, 0))
    If Err <> 0 Then ListBox2.RemoveItem (i)
    On Error GoTo 0
Next i
For i = ListBox1.ListCount - 1 To 0 Step -1
    If ListBox1.Selected(i) = True Then
    On Error Resume Next
        x.Add ListBox1.List(i, 0), CStr(ListBox1.List(i, 0))
        If Err = 0 Then ListBox2.AddItem ListBox1.List(i, 0): ListBox1.RemoveItem (i)
    On Error GoTo 0
   End If
Next i
End Sub

attention nom des listbox à adapter.
@+

Edition bouton 2 au lieu du 1
 
Dernière édition:
Re : Affichage dans une listbox sous condition

Re

je viens de re tester code cidessous et celui fonctionne chez moi (excel 2003)

Code:
Private Sub CommandButton2_Click()
Dim i As Integer, x As New Collection
For i = 0 To ListBox_clients_a_facturer.ListCount - 1
    On Error Resume Next
    x.Add ListBox_clients_a_facturer.List(i, 0), CStr(ListBox_clients_a_facturer.List(i, 0))
    If Err <> 0 Then ListBox_clients_a_facturer.RemoveItem (i)
    On Error GoTo 0
Next i
For i = ListBox_choix_clients.ListCount - 1 To 0 Step -1
    If ListBox_choix_clients.Selected(i) = True Then
    On Error Resume Next
        x.Add ListBox_choix_clients.List(i, 0), CStr(ListBox_choix_clients.List(i, 0))
        If Err = 0 Then ListBox_clients_a_facturer.AddItem ListBox_choix_clients.List(i, 0): ListBox_choix_clients.RemoveItem (i)
    On Error GoTo 0
   End If
Next i
End Sub

@+
 
- 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

J
Réponses
4
Affichages
1 K
Ju_De_Citron
J
S
Réponses
10
Affichages
7 K
sword56
S
L
Réponses
11
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…