IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème Combobox avec Listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Août 2017
    Messages : 23
    Par défaut Problème Combobox avec Listbox
    Bonjour,
    J'essaie d'adapter du code que j'ai trouvé sur internet de manière à pouvoir lister dans une listbox les personnes habitant dans une commune.
    La liste totale s'affiche bien dans la listbox, la liste de choix s'affiche bien dans le combobox, mais quand je clic sur la combobox pour effectuer le tri, un message d'erreur s'affiche et je n'arrive pas à comprendre pourquoi.
    Il me dit que la variable BD est vide.

    Merci d'avance



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Private Sub UserForm_Initialize()
    Set f = Sheets("INSCRIPTIONS")
    ColVisu = Array(1, 2, 5, 6, 7, 8, 9, 13, 11, 10, 14, 15, 20) ' Colonnes à visualiser
    Ncol = UBound(ColVisu) + 1
    Set d = CreateObject("Scripting.Dictionary")
    BD = f.Range("A2:U" & f.[A65000].End(xlUp).Row)
    '---- ComboBox trié
    For i = LBound(BD) To UBound(BD)
    If BD(i, 1) <> "" Then d(BD(i, 1)) = ""
    Next i
    'ComboBox1.List = d.keys ' sans tri
    Tmp = d.keys
    Tri Tmp, LBound(Tmp), UBound(Tmp)
    Me.ComboBox1.List = Tmp
    '-- en têtes de colonne ListBox
    x = 16
    y = Me.ListBox1.Top - 10
    For Each k In ColVisu
    Set Lab = Me.Frame1.Controls.Add("Forms.Label.1")
    Lab.Caption = f.Cells(1, k)
    Lab.Top = y
    Lab.Left = x
    x = x + f.Columns(k).Width * 1#
    temp = temp & f.Columns(k).Width * 1# & ";"
    Next
    temp = Left(temp, Len(temp) - 1)
    Me.ListBox1.ColumnCount = UBound(ColVisu) + 1
    Me.ListBox1.ColumnWidths = temp
    Me.Frame1.Width = 860
    Me.Frame1.ScrollWidth = Me.ListBox1.Width + 1
    Me.Frame1.ScrollBars = 1
    '---- Contenu ListBox initial
    Dim Tbl(): ReDim Tbl(1 To UBound(BD), 1 To Ncol)
    For i = 1 To UBound(BD)
    c = 0
    For Each k In ColVisu
    c = c + 1: Tbl(i, c) = BD(i, k)
    Next k
    Next i
    TriMultiCol Tbl, LBound(Tbl), UBound(Tbl), 1
    Me.ListBox1.List = Tbl
    Me.Label4.Caption = Me.ListBox1.ListCount & " Ligne(s)"
    End Sub
     
    Private Sub ComboBox1_click()
    Dim Tbl(): j = 0
    For i = 1 To UBound(BD) ' PLANTAGE A CE NIVEAU 
    If BD(i, 1) = Me.ComboBox1 Then
    j = j + 1: ReDim Preserve Tbl(1 To Ncol, 1 To j)
    c = 0
    For Each k In ColVisu
    c = c + 1: Tbl(c, j) = BD(i, k)
    Next k
    End If
    Next i
    Me.ListBox1.Column = Tbl
    Me.Label4.Caption = Me.ListBox1.ListCount & " Ligne(s)"
    End Sub

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    la portée de ta variable BD est la procédure initialize, pas au delà.

    Il faut augmenter sa portée (en la déclarant en haut du module par exemple), afin de pouvoir continuer à l'utiliser dans d'autres procédures

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,


    L'original en PJ


    Boisgontier
    Fichiers attachés Fichiers attachés

  4. #4
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Août 2017
    Messages : 23
    Par défaut
    Bonjour,

    Merci, effectivement, j'avais oublié la déclaration des variables. Cependant, le problème s'est déplacé, une fois les variables déclarées, il y a plantage au niveau de la ligne

    Me.ListBox1.List = Tbl

Discussions similaires

  1. [Toutes versions] Problème code avec listbox.list
    Par jib's dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/04/2013, 17h57
  2. Problème Jdk avec combobox
    Par donnadieujulien dans le forum Composants
    Réponses: 11
    Dernier message: 08/07/2008, 11h53
  3. Probléme avec ListBox
    Par groupe dans le forum GWT et Vaadin
    Réponses: 4
    Dernier message: 22/05/2008, 15h43
  4. AIDE pour lier un combobox avec le listbox a l'aide d'un bouton
    Par dricks dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/07/2007, 14h42
  5. VB6 - problème avec listbox a selection multiple
    Par captainamerica75 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/05/2007, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo