Listbox : afficher contenu d'une bdd selon conditions

Y compris Power BI, Power Query et toute autre question en lien avec Excel
l
lucrob
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 13 octobre 2019
Version d'Excel : 2016

Message par lucrob » 6 février 2020, 10:34

Bonjour à toutes et à tous :)

Je bloque pour un code VBA concernant une listbox d'un formulaire liée à une BDD (base de données)
la bdd est en plusieurs colonnes.
J'ai déjà encodé les 100 premières lignes mais je souhaite que la listbox se mette automatiquement à jour quand une nouvelle ligne de données est rentrée... Et si je définis la zone de ma listbox par exemple à 200 lignes, j'ai mes 100 lignes de contenu, mais les 100 autres lignes tout à fait vides s'affichent aussi...
Comment faire pour que les lignes vides ne s'affichent pas dans le formulaire et n'afficher que les lignes remplies et rafraichir automatiquement quand une nouvelle donnée est rentrée ?

Je vous mets en copie joint mon fichier.

Merci si quelqu'un trouve la solution, mes explications seront plus claires en consultant mon fichier il me semble.

Belle journée


Lucrob
formufactu_LR (1).xlsm
(102.95 Kio) Téléchargé 4 fois
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 2'143
Appréciations reçues : 234
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 6 février 2020, 10:46

Bonjour lucrob, le forum,

Essaie ainsi:
lbxBase.RowSource = "A1:J" & Range("A" & Rows.Count).End(xlUp).Row
cordialement,
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
l
lucrob
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 13 octobre 2019
Version d'Excel : 2016

Message par lucrob » 6 février 2020, 11:12

Bonjour,


Cela correspond à mes attentes.
Cependant, j'ai une page "Accueil" avec un bouton qui est censé ouvrir le formulaire (avec comme nom frmForm).
J'ai donc affecté une macro à ce bouton comme suit frmForm.show
Ça me montre le formulaire mais la listbox est.......vide.
En exécutant la macro simplement sans la fantaisie du bouton, la listbox correspond bien à mes attentes.
Comment faire pour que le formulaire avec la listbox s'affiche similairement ?
l
lucrob
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 13 octobre 2019
Version d'Excel : 2016

Message par lucrob » 6 février 2020, 11:34

édit de mes actions:
-j'ai deux feuilles pour le moment dont je me sers:
1. feuille "Accueil" avec mon bouton de controle "Formulaire de la base"
2. Base de données de clients en tant que telle "bddcli"
-j'ai mis un controle x dans la feuille "Accueil"
-j'ai affecté la macro au bouton
frmForm.show
-la listbox n'affiche rien (blanche)
-en revanche, si je fais une recherche de numéro de client, par exemple 120, les champs se remplissent correctement, mais la listbox est toujours vide...

Merci pour votre aide!
formufactulr1.xlsm
(104.41 Kio) Téléchargé 2 fois
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 2'143
Appréciations reçues : 234
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 6 février 2020, 12:08

Re,

Je ne maitrise pas trop les listbox :bof:
Un essai....mais ça rame un peu pour le chargement de la listbox....
Dans l'attente d'une meilleure proposition.... :wink:
Private Sub UserForm_Initialize()

Dim i As Integer, dl As Integer
 With Sheets("bddcli")
  dl = .Range("A" & Rows.Count).End(xlUp).Row
   j = 0
    For i = 2 To dl
     Me.lbxBase.ColumnCount = 10
     Me.lbxBase.ColumnWidths = "20;20;60;50;130;40;60;20;20;20"
     Me.lbxBase.AddItem
     Me.lbxBase.Column(0, j) = .Cells(i, 1)
     Me.lbxBase.Column(1, j) = .Cells(i, 2)
     Me.lbxBase.Column(2, j) = .Cells(i, 3)
     Me.lbxBase.Column(3, j) = .Cells(i, 4)
     Me.lbxBase.Column(4, j) = .Cells(i, 5)
     Me.lbxBase.Column(5, j) = .Cells(i, 6)
     Me.lbxBase.Column(6, j) = .Cells(i, 7)
     Me.lbxBase.Column(7, j) = .Cells(i, 8)
     Me.lbxBase.Column(8, j) = .Cells(i, 9)
     Me.lbxBase.Column(9, j) = .Cells(i, 10)
    j = j + 1
   Next i
  End With
  
     cbxFidelite.AddItem ("")
     cbxFidelite.AddItem ("Oui")
     cbxFidelite.AddItem ("Non")

     lblDateactu.Caption = Format(Date, "ddd d mmm yyyy")

End Sub

Cordialement,
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
l
lucrob
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 13 octobre 2019
Version d'Excel : 2016

Message par lucrob » 6 février 2020, 12:16

ça marche parfaitement
même si un peu lent à l'appel, ne pas chicaner, je serais trop exigent.
Si quelqu'un sait améliorer le code, tant mieux je suis preneur ;-) , si inaméliorable, je suis satisfait du code que tu m'as donné

Cordialement

Lucrob
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 2'143
Appréciations reçues : 234
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 6 février 2020, 13:13

Re,

Nouvel essai.....beaucoup plus rapide, :mrgreen:
Private Sub UserForm_Initialize()
Dim a(), f
Dim dl As Integer

Set f = Sheets("bddcli")
   dl = f.Range("A" & Rows.Count).End(xlUp).Row
    a = f.Range("A2:J" & dl).Value
    Me.lbxBase.List = a()
    Me.lbxBase.ColumnCount = 10
    Me.lbxBase.ColumnWidths = "20;20;60;50;130;40;60;20;20;20"

     cbxFidelite.AddItem ("")
     cbxFidelite.AddItem ("Oui")
     cbxFidelite.AddItem ("Non")

     lblDateactu.Caption = Format(Date, "ddd d mmm yyyy")

End Sub
formufactu_LR (1)-2.xlsm
(108.41 Kio) Téléchargé 5 fois


EDIT:
  • j'ai viré le deuxième Userform car inutile.
  • Un double-clic dans la listbox rempli tous les champs, possibilité alors de modifier où supprimer les données.
  • Le bouton recherche ne fonctionnant pas chez moi, j'ai essayé de bidouiller, il fonctionne uniquement si la valeur cherchée est du texte... :bof: .....idem, un double-clic dans la listbox rempli les champs.
formufactu_LR V2.xlsm
(111.8 Kio) Téléchargé 4 fois

Cordialement,
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message