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 :

nb de colonnes dans une listebox?


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut nb de colonnes dans une listebox?
    bonjour à tous
    actuellment , je suis sur une listbox, qui contient 15 colonnes


    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
     
     
    ..................................
    ListBox1.Clear
     
    ListBox1.ColumnCount = 15 'nb de colonne
    ListBox1.ColumnWidths = "50;30;80;15;90;70;30;15;15;20;20;20;20;20"
    ListBox1.FontSize = 10
    'ListBox1.ColumnHeads = True
    ListBox1.BackColor = &HFFFF80    'font  de la liste boxe
    ListBox1.TextAlign = fmTextAlignCenter
     
     
     
     
     
    derniereligne = Sheets("feuil2").Range("A4").End(xlDown).Row 'derniere ligne occupee dans colonne A
     
    For lignedebut = 4 To derniereligne 'on test le contenu des combobox
     
         If ComboBox24.Value <> "" Then Cu1 = ComboBox24.Value Else Cu1 = Sheets("feuil2").Cells(lignedebut, 2)
         If ComboBox6.Value <> "" Then Cu2 = ComboBox6.Value Else Cu2 = Sheets("feuil2").Cells(lignedebut, 1)
         If ComboBox5.Value <> "" Then Cu3 = ComboBox5.Value Else Cu3 = Sheets("feuil2").Cells(lignedebut, 4)
         If ComboBox26.Value <> "" Then Cu4 = ComboBox26.Value Else Cu4 = Sheets("feuil2").Cells(lignedebut, 3)
         If ComboBox14.Value <> "" Then Cu5 = ComboBox14.Value Else Cu5 = Sheets("feuil2").Cells(lignedebut, 20)
         If ComboBox15.Value <> "" Then Cu6 = ComboBox15.Value Else Cu6 = Sheets("feuil2").Cells(lignedebut, 21)
         If ComboBox16.Value <> "" Then cu7 = ComboBox16.Value Else cu7 = Sheets("feuil2").Cells(lignedebut, 22)
         If ComboBox17.Value <> "" Then Cu8 = ComboBox17.Value Else Cu8 = Sheets("feuil2").Cells(lignedebut, 19)
     
     
        If ComboBox23.Value <> "" Then Cu9 = ComboBox23.Value Else Cu9 = Sheets("feuil2").Cells(lignedebut, 9)
         If ComboBox22.Value <> "" Then Cu10 = ComboBox22.Value Else Cu10 = Sheets("feuil2").Cells(lignedebut, 11)
         If ComboBox19.Value <> "" Then Cu11 = ComboBox19.Value Else Cu11 = Sheets("feuil2").Cells(lignedebut, 10)
         If ComboBox9.Value <> "" Then Cu12 = ComboBox9.Value Else Cu12 = Sheets("feuil2").Cells(lignedebut, 16)
         If ComboBox8.Value <> "" Then Cu13 = ComboBox8.Value Else Cu13 = Sheets("feuil2").Cells(lignedebut, 17)
     
     
     
     
     
     
     
     
        'test final avec toute les conditon imbriquee
        'affichage  dans listbox en multicolonne
        If Sheets("feuil2").Cells(lignedebut, 2) = Cu1 And Sheets("feuil2").Cells(lignedebut, 1) = Cu2 And Sheets("feuil2").Cells(lignedebut, 4) = Cu3 And Sheets("feuil2").Cells(lignedebut, 3) = Cu4 And Sheets("feuil2").Cells(lignedebut, 20) = Cu5 And Sheets("feuil2").Cells(lignedebut, 21) = Cu6 And Sheets("feuil2").Cells(lignedebut, 22) = cu7 And Sheets("feuil2").Cells(lignedebut, 19) = Cu8 Then
     
        'And Sheets("feuil2").Cells(lignedebut, 20) = Cu5 And Sheets("feuil2").Cells(lignedebut, 21) = Cu6 And Sheets("feuil2").Cells(lignedebut, 22) = Cu7 And Sheets("feuil2").Cells(lignedebut, 19) = Cu8
     
     
           ListBox1.AddItem
     
           ListBox1.Column(0, j) = Sheets("feuil2").Cells(lignedebut, 2).Value
           ListBox1.Column(1, j) = Sheets("feuil2").Cells(lignedebut, 1).Value
           ListBox1.Column(2, j) = Sheets("feuil2").Cells(lignedebut, 4).Value
           ListBox1.Column(3, j) = Sheets("feuil2").Cells(lignedebut, 3).Value
           ListBox1.Column(4, j) = Sheets("feuil2").Cells(lignedebut, 20).Value
           ListBox1.Column(5, j) = Sheets("feuil2").Cells(lignedebut, 21).Value
           ListBox1.Column(6, j) = Sheets("feuil2").Cells(lignedebut, 22).Value
           ListBox1.Column(7, j) = Sheets("feuil2").Cells(lignedebut, 19).Value
     
     
        ListBox1.Column(8, j) = Sheets("feuil2").Cells(lignedebut, 9).Value
           ListBox1.Column(9, j) = Sheets("feuil2").Cells(lignedebut, 11).Value
         ICI  'ListBox1.Column(10, j) = Sheets("feuil2").Cells(lignedebut, 10).Value
           'ListBox1.Column(11, j) = Sheets("feuil2").Cells(lignedebut, 16).Value
           'ListBox1.Column(12, j) = Sheets("feuil2").Cells(lignedebut, 17).Value
     
    ..............
    A partir de la 10 lcolonne (ICI) j'ai une erreur execution 380 .
    avec le bon message

    impossible de definir le propriete column. valeur propriete nom valide




  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Bin...tu as trouvé le maximum

    Le nombre max de colonnes dans une listbox est 10

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bon hum


    il y un moyen de faire mieux ?????

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    euuh oublie ce que je t'ai dit

    Je viens de créer une ListBox avec 20 colonnes

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    voila le code complet
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
     
    Private Sub recherche() 'recherche multicritere
    Dim lignedebut As Integer
    Dim derniereligne As Integer
     
    Dim jj As Long
    Dim Cu1$, Cu2$, Cu3$, Cu4$, Cu5$, Cu6$, cu7$, Cu8$, Cu9$, Cu10$, Cu11$, Cu12$, Cu13$
    Cu1 = ""
    Cu2 = ""
    Cu3 = ""
    Cu4 = ""
    Cu5 = ""
    Cu6 = ""
    cu7 = ""
    Cu8 = ""
    Cu9 = ""
    Cu10 = ""
    Cu11 = ""
    Cu12 = ""
    Cu13 = ""
    jj = 0
     
     
    ListBox1.Clear
     
    ListBox1.ColumnCount = 15 'nb de colonne
    ListBox1.ColumnWidths = "50;30;80;15;90;60;30;15;15;10"
    ListBox1.FontSize = 10
    'ListBox1.ColumnHeads = True
    ListBox1.BackColor = &HFFFF80    'font  de la liste boxe
    ListBox1.TextAlign = fmTextAlignCenter
     
     
     
     
     
    derniereligne = Sheets("feuil2").Range("A4").End(xlDown).Row 'derniere ligne occupee dans colonne A
     
    For lignedebut = 4 To derniereligne 'on test le contenu des combobox
     
         If ComboBox24.Value <> "" Then Cu1 = ComboBox24.Value Else Cu1 = Sheets("feuil2").Cells(lignedebut, 2)
         If ComboBox6.Value <> "" Then Cu2 = ComboBox6.Value Else Cu2 = Sheets("feuil2").Cells(lignedebut, 1)
         If ComboBox5.Value <> "" Then Cu3 = ComboBox5.Value Else Cu3 = Sheets("feuil2").Cells(lignedebut, 4)
         If ComboBox26.Value <> "" Then Cu4 = ComboBox26.Value Else Cu4 = Sheets("feuil2").Cells(lignedebut, 3)
         If ComboBox14.Value <> "" Then Cu5 = ComboBox14.Value Else Cu5 = Sheets("feuil2").Cells(lignedebut, 20)
         If ComboBox15.Value <> "" Then Cu6 = ComboBox15.Value Else Cu6 = Sheets("feuil2").Cells(lignedebut, 21)
         If ComboBox16.Value <> "" Then cu7 = ComboBox16.Value Else cu7 = Sheets("feuil2").Cells(lignedebut, 22)
         If ComboBox17.Value <> "" Then Cu8 = ComboBox17.Value Else Cu8 = Sheets("feuil2").Cells(lignedebut, 19)
     
     
        If ComboBox23.Value <> "" Then Cu9 = ComboBox23.Value Else Cu9 = Sheets("feuil2").Cells(lignedebut, 9)
         If ComboBox22.Value <> "" Then Cu10 = ComboBox22.Value Else Cu10 = Sheets("feuil2").Cells(lignedebut, 11)
         If ComboBox19.Value <> "" Then Cu11 = ComboBox19.Value Else Cu11 = Sheets("feuil2").Cells(lignedebut, 10)
         If ComboBox9.Value <> "" Then Cu12 = ComboBox9.Value Else Cu12 = Sheets("feuil2").Cells(lignedebut, 16)
         If ComboBox8.Value <> "" Then Cu13 = ComboBox8.Value Else Cu13 = Sheets("feuil2").Cells(lignedebut, 17)
     
     
     
     
     
     
     
     
        'test final avec toute les conditon imbriquee
        'affichage  dans listbox en multicolonne
        If Sheets("feuil2").Cells(lignedebut, 2) = Cu1 And Sheets("feuil2").Cells(lignedebut, 1) = Cu2 And Sheets("feuil2").Cells(lignedebut, 4) = Cu3 And Sheets("feuil2").Cells(lignedebut, 3) = Cu4 And Sheets("feuil2").Cells(lignedebut, 20) = Cu5 And Sheets("feuil2").Cells(lignedebut, 21) = Cu6 And Sheets("feuil2").Cells(lignedebut, 22) = cu7 And Sheets("feuil2").Cells(lignedebut, 19) = Cu8 Then
     
        'And Sheets("feuil2").Cells(lignedebut, 20) = Cu5 And Sheets("feuil2").Cells(lignedebut, 21) = Cu6 And Sheets("feuil2").Cells(lignedebut, 22) = Cu7 And Sheets("feuil2").Cells(lignedebut, 19) = Cu8
     
     
           ListBox1.AddItem
     
           ListBox1.Column(0, jj) = Sheets("feuil2").Cells(lignedebut, 2).Value
           ListBox1.Column(1, jj) = Sheets("feuil2").Cells(lignedebut, 1).Value
           ListBox1.Column(2, jj) = Sheets("feuil2").Cells(lignedebut, 4).Value
           ListBox1.Column(3, jj) = Sheets("feuil2").Cells(lignedebut, 3).Value
           ListBox1.Column(4, jj) = Sheets("feuil2").Cells(lignedebut, 20).Value
           ListBox1.Column(5, jj) = Sheets("feuil2").Cells(lignedebut, 21).Value
           ListBox1.Column(6, jj) = Sheets("feuil2").Cells(lignedebut, 22).Value
           ListBox1.Column(7, jj) = Sheets("feuil2").Cells(lignedebut, 19).Value
           ListBox1.Column(8, jj) = Sheets("feuil2").Cells(lignedebut, 9).Value
           ListBox1.Column(9, jj) = Sheets("feuil2").Cells(lignedebut, 11).Value
          ICI  'ListBox1.Column(10, jj) = Sheets("feuil2").Cells(lignedebut, 10).Value
           'ListBox1.Column(11, jj) = Sheets("feuil2").Cells(lignedebut, 16).Value
           'ListBox1.Column(12, jj) = Sheets("feuil2").Cells(lignedebut, 17).Value
     
     
     
     
           'ListBox1.Column(13, jj) = lignedebut '(il faut masque cette ligne en mettant o dans la larguer de la colonne)
     
     
     
     
     
           jj = jj + 1
        End If
    Next lignedebut
    End Sub

    c'est sur ICI que cela plante ??????

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bin...aucune idée, avec la propriété RowSource je crée 20 colonnes, avec AddItem en effet ça coince après 10 colonnes

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Il est vrai que, lors de la création d'une listbox, on peut lui définir un nombre illimité de colonnes (car ce nombre peut être supérieur à 10 dans le cas de données dépendantes)

    Si les données, toutefois, ne sont pas dépendantes, le nombre de colonnes traitées ne peut excéder 10.

    Or, AddItem implique que la donnée ajoutée est indépendante ===>> limite de 10, donc ...

  8. #8
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Merci Uc, j'avais pourtant bien lu cette limite quelque part mais je ne comprenais pas la différence entre le fait de les insérer via RowSource ou via AddItem, c'est clair maintenant, thank's

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    As-tu essayé en créant un tableau de tes données et de l'affecter à ta listbox ?

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Teste ça, j'ai bien toutes mes colonnes
    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
    Private Sub UserForm_Initialize()
    Dim Colonnes, tablo(), i As Long, j As Integer, derniereligne
    Dim FL2 As Worksheet
    Set FL2 = Worksheets("Feuil2")
        ListBox1.ColumnWidths = "50;50;60;50;80;60;30;50;50;40;50;40;40"
        derniereligne = FL2.Range("A65536").End(xlUp).Row
        Colonnes = Array(1, 2, 4, 20, 21, 22, 19, 9, 11, 10, 16, 17)
        ReDim tablo(derniereligne, UBound(Colonnes))
        For i = 4 To derniereligne
            For j = 0 To UBound(Colonnes)
                tablo(i, j) = FL2.Cells(i, Colonnes(j)).Value
            Next
        Next
        ListBox1.List() = tablo
     
    End Sub
    A+
    Tu as vu que je t'ai répondu sur l'autre discussion ?

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour que ta liste démarre sur la ligne 1 (il y a 3 lignes vides dans l'exemple que je t'ai mis) tu corriges (en rouge)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        For i = 4 To derniereligne
            For j = 0 To UBound(Colonnes)
                tablo(i - 3, j) = FL2.Cells(i, Colonnes(j)).Value
            Next
        Next
    Pour fixer la taille des caractères de ta listbox à 8, tu ajoutes en dernière ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ListBox1.List() = tablo
        ListBox1.FontSize = 8
    (je réponds à ton autre discussion )

  12. #12
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonsoir à tous.

    ouk , je suis perdu j'ai modifier le fichier

    mais la suis pommé

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Modifie simplement la propriété ColumnCount de la listbox : Clic droit sur la listbox -> Propriétés -> ColumnCount -> 12

  14. #14
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonsoir

    oup,

    par contre pourrais tu m'expliquer en mettant qql commentaire sur les lignes de codes

    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
    59
    60
    61
    62
    63
    64
    65
     
     
    Private Sub UserForm_initialize()
    'Dim derniereligne As Integer
     
     
    Dim Colonnes, tablo(), i As Long, j As Integer, derniereligne
    Dim FL2 As Worksheet
    Set FL2 = Worksheets("Feuil2")
        ListBox1.ColumnWidths = "50;50;60;50;80;60;30;50;50;40;50;40;40"
        derniereligne = FL2.Range("A65536").End(xlUp).Row
        Colonnes = Array(1, 2, 4, 20, 21, 22, 19, 9, 11, 10, 16, 17)
        ReDim tablo(derniereligne, UBound(Colonnes))
        For i = 4 To derniereligne
            For j = 0 To UBound(Colonnes)
                tablo(i, j) = FL2.Cells(i, Colonnes(j)).Value
            Next
        Next
        ListBox1.List() = tablo
    End Sub
     
    Sub InitList(derniereligne As Long)
    Dim tablo(), i As Long, j As Integer
    Dim combo As Variant
        'combo = Array("A", "B", "F", "G", "K")
        combo = Array(1, 2, 6, 7, 11)
        ReDim tablo(derniereligne, UBound(combo))
        For i = 4 To derniereligne
            For j = 0 To 4
                tablo(i - 4, j) = FL2.Cells(i, combo(j)).Value
            Next
        Next
        ListBox1.List() = tablo
    End Sub
     
    Sub Lister(Controle As String, Ligne As Long)
    Dim i As Integer, j As Integer
    Dim No As Integer, Donnee As String, NoCol As String, NoLig
        Donnee = Controls(Controle)
        If Not ok Then Exit Sub
        No = Val(Mid(Controle, 9, Len(Controle) - 8))
    Dim combo As Variant, tablo() As String
        combo = Array(1, 2, 6, 7, 11)
    ReDim tablo(derniereligne, UBound(combo))
        For i = 4 To derniereligne
            If FL2.Cells(i, No) = Donnee Then
                For j = 0 To 4
                    tablo(NoLig, j) = FL2.Cells(i, combo(j))
                Next
                NoLig = NoLig + 1
            End If
        Next
        ListBox1.List() = tablo
        Init
    End Sub
     
    Sub Init()
        ComboBox1 = ""
        ComboBox2 = ""
        ComboBox6 = ""
        ComboBox7 = ""
        ComboBox11 = ""
    End Sub
     
    merci a toi


    car je comprends pas tout

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    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
    Private Sub UserForm_Initialize()
    Dim Colonnes, tablo(), i As Long, j As Integer, derniereligne
    'Comme tu vas travailler sur deux feuilles je préfère les instancier (FL2 => Feuil2
    Dim FL2 As Worksheet
    Set FL2 = Worksheets("Feuil2")
     
        'Là, tu connais, définit la largeur des colonnes successives
        ListBox1.ColumnWidths = "50;50;60;50;80;60;30;50;50;40;50;40;40"
     
        derniereligne = FL2.Range("A65536").End(xlUp).Row
     
        'création d'un tableau des colonnes à reprendre dans la listbox...
        '... comme tu l'as compris puisque tu l'as modifiée (!)
        Colonnes = Array(1, 2, 4, 20, 21, 22, 19, 9, 11, 10, 16, 17)
     
        'Je dimensionne le tableau des données afin qu'il puisse toutes les contenir 
        ReDim tablo(derniereligne, UBound(Colonnes))
     
        'Pour chaque ligne (i) de la feuille, on renseigne l'index i - 3 du tableau...
        For i = 4 To derniereligne
     
            '... Pour chacune de ces lignes, on renseigne la deuxième dimension du tableau ...
            ' Pour ça, on utilise j comme index du tableau Colonnes
            'On a ainsi la ligne et la colonne de la cellule à lire.
            'Une fois toutes les colonnes lues, on passe à la ligne suivante
            For j = 0 To UBound(Colonnes)
                tablo(i, j - 3) = FL2.Cells(i, Colonnes(j)).Value
            Next
        Next
     
        'Ceci est la syntaxe qui permet d'affecter le tablo à deux dimensions à la listbox.
        ListBox1.List() = tablo 'voir la remarque
     
     
    End Sub
    Pour un projet comme celui-ci, je m'arrange toujours pour que les colonnes de ma liste correspondent bien aux colonnes de la feuille. En ne le faisant pas, tu te compliques la vie.
    Tu devrais intervertir tes colonnes pour qu'elles correspondent à leur affichage voulu dans la listbox.
    Comment-vas-tu faire à la relecture pour placer sans tatonner les données dans le bon ordre sur une autre feuille.
    Transformer ton fichier sera peut-être laborieux mais moins que de tenter de connaître la correspondance entre la liste et la feuille sur laquelle tu désires reporter tes données.
    Ce n'est qu'un avis mais, un conseil : Suis-le !
    D'ailleurs je n'aurais pas fait ça.
    Une liste n'est pas limitée quant à son nombre de colonnes
    J'aurais simplement mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Initialize()
    Dim Tablo as variant, derniereligne as long
    Dim FL2 As Worksheet
    Set FL2 = Worksheets("Feuil2")
        derniereligne = FL2.Range("A65536").End(xlUp).Row
        tablo = FL2.Range("A4:Q" & derniereligne).Value
        ListBox1.List() = tablo
    End sub
    et j'aurais masqué les colonnes à masquer en mettant leur largeur à zéro.
    Le résultat aurait été le même mais le code tout de même plus simple.
    Mais pour ça, tes colonnes doivent être dans le bon ordre.
    A+

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tiens, teste ça
    Tu crées deux listbox de 18 colonnes nommées Listbox1 et listbox2 et tu mets ce code dans userform_initialize
    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
    Private Sub UserForm_Initialize()
    Dim Colonnes, tablo(), tablo2 As Variant, i As Long, j As Integer, derniereligne
    Dim FL2 As Worksheet
    Set FL2 = Worksheets("Feuil2")
        derniereligne = FL2.Range("A65536").End(xlUp).Row
        ListBox2.ColumnWidths = "50;50;0;0;0;70;30;0;0;40;50;40;40;40;40;40;40;40"
        tablo2 = FL2.Range("A4:R" & derniereligne).Value
        ListBox2.List() = tablo2
        ListBox2.FontSize = 8
        ListBox2.Font.Bold = True
     
        ListBox1.ColumnWidths = "50;50;60;50;80;60;30;50;50;40;50;40;40"
        Colonnes = Array(1, 2, 4, 20, 21, 22, 19, 9, 11, 10, 16, 17)
        ReDim tablo(derniereligne, UBound(Colonnes))
        For i = 4 To derniereligne
            For j = 0 To UBound(Colonnes)
                tablo(i - 3, j) = FL2.Cells(i, Colonnes(j)).Value
            Next
        Next
        ListBox1.List() = tablo
        ListBox1.FontSize = 8
        ListBox1.Font.Bold = True
     
    End Sub
    Après, tu décides

  17. #17
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonjour à tous , bonjour ouskel'n'or


    d'avoir je vais suivre tes conseils et travailler en colonne masquée. C'est vrai que c'est plus simple


    j'ai donc utiliser à l'init du userform
    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
     
     
    Private Sub UserForm_Initialize()
     
     
     
     
     
    ListBox1.ColumnWidths ="50;80;0;0;0;80;70;0;0;50;80;60;50;60;20;30;20;40"
    ListBox1.ColumnCount = 18
     
    Dim Tablo As Variant, derniereligne As Long
    Dim FL2 As Worksheet
    Set FL2 = Worksheets("Feuil2")
        derniereligne = FL2.Range("A65536").End(xlUp).Row
        Tablo = FL2.Range("A4:R" & derniereligne).Value
        ListBox1.List() = Tablo
    End Sub
    bon jusque la ca va

    mais la on ca bug et je comprends pas , c'est sur la suite!!



    les combobox restent vide donc pas de filtre possible ????????????

    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
     
    Sub InitList(derniereligne As Long)
    Dim Tablo(), i As Long, j As Integer
    Dim combo As Variant
        'combo = Array("A", "B", "F", "G", "K")
        combo = Array(1, 2, 6, 7, 11, 12, 13, 14, 15, 16, 17, 18)
        ReDim Tablo(derniereligne, UBound(combo))
        For i = 4 To derniereligne
            For j = 0 To 11 'nb combobx
                Tablo(i - 4, j) = FL2.Cells(i, combo(j)).Value
            Next
        Next
        ListBox1.List() = Tablo
    End Sub
     
    Sub Lister(Controle As String, Ligne As Long)
    Dim i As Integer, j As Integer
    Dim No As Integer, Donnee As String, NoCol As String, NoLig
        Donnee = Controls(Controle)
        If Not ok Then Exit Sub
        No = Val(Mid(Controle, 9, Len(Controle) - 8))
    Dim combo As Variant, Tablo() As String
        combo = Array(1, 2, 6, 7, 11, 12, 13, 14, 15, 16, 17, 18)
    ReDim Tablo(derniereligne, UBound(combo))
        For i = 4 To derniereligne
            If FL2.Cells(i, No) = Donnee Then
                For j = 0 To 11 'nb combobox
                    Tablo(NoLig, j) = FL2.Cells(i, combo(j))
                Next
                NoLig = NoLig + 1
            End If
        Next
        ListBox1.List() = Tablo
        Init
    End Sub
     
    Sub Init() 'initialisation des combobox
        ComboBox1 = ""
        ComboBox2 = ""
        ComboBox6 = ""
        ComboBox7 = ""
        ComboBox11 = ""
        ComboBox12 = ""
        ComboBox13 = ""
        ComboBox14 = ""
        ComboBox15 = ""
        ComboBox16 = ""
        ComboBox17 = ""
        ComboBox18 = ""
     
    End Sub
    bon voila HELP

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Evidemment qu'ils sont vides, si tu ne les remplis pas. Le début du code ne doit pas changer.

    Regarde le fichier plus loin

  19. #19
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonjour

    bon voila j'ai modifier


    il reste l'action du filtre avec le resultat dans listebox .


    ps: l'offset, j'aime pas trop car si dans la feuil on insere ou supprime une colonne cela fout la zone ..... si mais souvenir sont bons.

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tiens, plutôt que devoir tout te ré-expliquer, je te passe le fichier modifié.
    Pièce jointe 27918
    Je supprime le dernier post.
    Dans le récap (réalisé dans Listbox1) des données filtrées, j'ai laissé les 18 colonnes.
    Pour n'en avoir que certaines, tu masques simplement le colonnes surnuméraires dans ListerCombo, en mettant leur largeur à zéro.
    Ça ne pose pas de pb puisque dans InitListe, quand aucune sélection n'est faite dans les combos, les colonnes sont redimensionnées.
    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Définir le nombre de decimale dans les colonnes d'une listebox
    Par souley90 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/08/2014, 12h34
  2. [SQL] Somme de 2 colonnes dans une même table
    Par Cyrilange dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/04/2005, 08h32
  3. Noms de colonne dans une colonne
    Par Digirom dans le forum Langage SQL
    Réponses: 14
    Dernier message: 23/04/2004, 11h51
  4. Changements de colonnes dans une BDD MySQL
    Par arnaud_verlaine dans le forum Requêtes
    Réponses: 8
    Dernier message: 07/08/2003, 11h33
  5. Ajout d'une colonne dans une table ...
    Par Djedjeridoo dans le forum SQL
    Réponses: 2
    Dernier message: 22/07/2003, 16h12

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