Listbox conditonnelle

julien34

XLDnaute Occasionnel
Bonjour,

Je m'adresse à vous ce jour car confronté à un problème.

Je m'explique....

J'ai un formulaire en feuil 1 dont les infos sont renvoyées en feuil2 (base).
Pour chaque client, il est stipulé s'il faut effectuer une relance et a quelle date. Seulement certains clients n'ont pas besoin de relance, ils sont à jour.

Ma question est la suivante:
Est ce possible d'afficher une listbox (via bouton), me permettant de montrer uniquement les clients qui ont besoin d’être relancés (histoire d'avoir un bouton "consulter la liste des taches")

J’espère avoir été clair. Pas facile à expliquer.
D'avance merci
Julien
 

julien34

XLDnaute Occasionnel
Re : Listbox conditonnelle

Les numéros de colonnes sont OK puisque la listbox les affiche
C'est plutot la condition qui ne fonctionne pas!

Les cellules 105 et 106 sont renseignées uniquement en 1ère entrée dans la base

Pourtant la listbox affiche l'entrée 1,2 et 4...Je ne comprends vraiment pas pourquoi !

C'est exactement le même code que toi en changeant les num de colonnes !
 

julien34

XLDnaute Occasionnel
Re : Listbox conditonnelle

Bon ...... :(
Tu me confirmes que le code est le suivant

Code:
Private Sub UserForm_Initialize()
k = 0
With Sheets("Base") 'MA FEULLE QUI CONTIENT LA BASE DE DONNEES
For i = 2 To .[A65000].End(xlUp).Row
If Not IsEmpty(.Cells(i, 105)) And Not IsEmpty(.Cells(i, 106)) Then
Me.ListBox1.AddItem
Me.ListBox1.List(k, 0) = .Cells(i, 1) 'COLONNE NUM DOSSIER
Me.ListBox1.List(k, 1) = .Cells(i, 3) 'COLONNE NOM
Me.ListBox1.List(k, 2) = .Cells(i, 4) 'COLONNE PRENOM
Me.ListBox1.List(k, 3) = .Cells(i, 10) 'COLONNE MARQUE
Me.ListBox1.List(k, 4) = .Cells(i, 11) 'COLONNE MODELE
Me.ListBox1.List(k, 5) = .Cells(i, 105) 'COLONNE ACTIONS
Me.ListBox1.List(k, 6) = .Cells(i, 106) 'COLONNE RELANCE'
k = k + 1
End If
Next i
End With
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
 

Yaloo

XLDnaute Barbatruc
Re : Listbox conditonnelle

Oui, je confirme, je viens de remettre ton code dans ton fichier exemple et ça fonctionne.
J'ai juste changé le nom de la feuille en BDD, mais c'est tout.
A+
 

Pièces jointes

  • FORM SIMPLIFIE POUR AIDE FORUM.xlsm
    44.1 KB · Affichages: 62
  • FORM SIMPLIFIE POUR AIDE FORUM.xlsm
    44.1 KB · Affichages: 70
  • FORM SIMPLIFIE POUR AIDE FORUM.xlsm
    44.1 KB · Affichages: 71

julien34

XLDnaute Occasionnel
Re : Listbox conditonnelle

Re Yaloo,

OK
Écoutes ça doit être une étourderie de ma part mais je ne vois pas où !
Peux tu prendre la peine de regarder le fichier ci joint ? C'est sur celui ci que je souhaite intégrer ce code

Merci d'avance
A+
 

Pièces jointes

  • FORM V8.2 ESSAI TACHES 2011 11-1.xlsm
    102.2 KB · Affichages: 80

julien34

XLDnaute Occasionnel
Re : Listbox conditonnelle

Effectivement ça fonctionne ! Encore merci
Mais les cellules me semblaient vides. A quoi vois tu qu'elles ne l’étaient pas stp?

Et au fait si je mets
For i = 1 To .[A65000].End(xlUp).Row au lieu de For i = 2 To .[A65000].End(xlUp).Row

Histoire de voir les en têtes de colonnes ça ne pose pas de pbs particuliers ?

A+
Julien
 
Dernière édition:

julien34

XLDnaute Occasionnel
Re : Listbox conditonnelle

Effectivement ça fonctionne. Ca me rassure le ""

Et concernant les en têtes de colonnes dans les listbox
J'ai fais For i = 1 To .[A65000].End(xlUp).Row au lieu de For i = 2 To .[A65000].End(xlUp).Row

Ca ne m'a pas l'air très propre!

Dans les propriétés de la listbox j'affiche les en tetes de colonnes mais il n'y a rien dedans. Tu peux m'aiguiller peut etre ?
 

julien34

XLDnaute Occasionnel
Re : Listbox conditonnelle

Merci Klin89,

Mais en tant que bon débutant je n'arrive pas à utiliser le code vers le quel tu m'as orienté qui a l'air pourtant très efficace ! Quelqu'un peut il m'aider? Mon fichier est joint un peu plus haut si besoin

Code:
Private Sub UserForm_Initialize()
  NbCol = [clients].CurrentRegion.Columns.Count
  Me.ListBox1.ColumnCount = NbCol
  Me.ListBox1.List = Range("clients").Resize(, NbCol).Value
  x = 15
  For i = 1 To NbCol
    retour = Me.Controls.Add("Forms.Label.1", "Label" & i, True)
    Me("label" & i).Caption = Cells(1, i)
    Me("label" & i).Top = 40
    Me("label" & i).Left = x
    x = x + Columns(i).Width * 1.1
    temp = temp & Columns(i).Width * 1.1 & ";"
  Next
  Me.ListBox1.ColumnWidths = temp
  For b = 1 To NbCol: Set Lbl(b).GrLabel = Me("Label" & b): Next b
End Sub

Avec mon code de base sur mon fichier
Code:
Private Sub UserForm_Initialize()
k = 0
With Sheets("Base") 'MA FEULLE QUI CONTIENT LA BASE DE DONNEES
For i = 1 To .[A65000].End(xlUp).Row
If .Cells(i, 105) <> "" Then
Me.ListBox1.AddItem
Me.ListBox1.List(k, 0) = .Cells(i, 1) 'COLONNE NUM DOSSIER
Me.ListBox1.List(k, 1) = .Cells(i, 3) 'COLONNE NOM
Me.ListBox1.List(k, 2) = .Cells(i, 4) 'COLONNE PRENOM
Me.ListBox1.List(k, 3) = .Cells(i, 10) 'COLONNE MARQUE
Me.ListBox1.List(k, 4) = .Cells(i, 11) 'COLONNE MODELE
Me.ListBox1.List(k, 5) = .Cells(i, 105) 'COLONNE ACTIONS
Me.ListBox1.List(k, 6) = .Cells(i, 106) 'COLONNE RELANCE'
k = k + 1
End If
Next i
End With
End Sub
 

Yaloo

XLDnaute Barbatruc
Re : Listbox conditonnelle

D'après ce que j'ai pu tester, je ne pense pas que cela fonctionne. Car les données à mettre dans ta listbox ne sont pas dans des colonnes qui se suivent. De plus, comme l'a indiqué Klin les listbox sont limités à 10 colonnes, alors que là tu en as 106.

Mais comme tu ne fais pas de sélection, le fait de mettre ta plage à partir de la ligne 1, peut te permettre d'afficher tes entêtes.

A+
 

Discussions similaires