Microsoft 365 Créer un tableau dans une listbox

alexpoupp

XLDnaute Junior
Bonjour cher forum,

Je souhaite crée un tableau dans ma userform, après plusieurs essais via de l'apprentissage sur des forums je m'avoue vaincu !

Est-il d'avoir votre aide svp ?

Ci-joint le fichier, les informations qui apparaitront dans le userform viendront de la BDD.

Merci d'avance pour votre aide,
Alex
 

Pièces jointes

  • Palettes.xlsm
    98.5 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Alexpoupp,
Hier un post traitait du même domaine, mettre dans un userform un tableau.
Regardez ce fil :
Le code de Dadi marche correctement avec un userform et un tableau multicolonne.
 

alexpoupp

XLDnaute Junior
Bonjour Alexpoupp,
Hier un post traitait du même domaine, mettre dans un userform un tableau.
Regardez ce fil :
Le code de Dadi marche correctement avec un userform et un tableau multicolonne.
Bonjour sylvanu,

Merci pour ton retour !

Après analyse du code, j'ai du mal à comprendre malheuresement..
Je reste début dans le VBA.

Est-il possible d'avoir un exemple stp avec des commentaires pour que je puisse comprendre le code ?

En te remerciant par avance,
Bien cordialement,
Alex
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Je reste début dans le VBA.
Commencer le VBA avec un userform multipage et des modules de classe n'est, à mon avis, pas la bonne méthode. Trop de choses à assimiler d'un seul coup.
Comme je n'ai rien compris à votre code, en PJ j'ai fait un exemple simple de remplissage de ListBox par un tableau, avec :
VB:
Sub Exemple()
    Dim DL%, i%, tablo
    DL = [A1000000].End(xlUp).Row                       ' Dernière ligne du tableau
    tablo = Range("A4:G" & DL)                          ' Tranefert des données dans un tableau VBA
    For i = 2 To UBound(tablo)                          ' Pour la colonne 2 transforme en format heure
        tablo(i, 2) = Format(tablo(i, 2), "hh:mm")
    Next i
    With UserForm1                                      ' Avec Userform1
        .ListBox1.ColumnCount = 7                       ' Determine le nombre de colonnes
        .ListBox1.ColumnWidths = "40;70;70;70;70;70;70" ' Determine la largeur des colonnes
        .ListBox1.List = tablo                          ' Transfert le tableau dans la listbox
        .Show                                           ' Affiche l'userform
    End With
End Sub
 

Pièces jointes

  • Palettes (1).xlsm
    79.4 KB · Affichages: 4

alexpoupp

XLDnaute Junior
Re,

Commencer le VBA avec un userform multipage et des modules de classe n'est, à mon avis, pas la bonne méthode. Trop de choses à assimiler d'un seul coup.
Comme je n'ai rien compris à votre code, en PJ j'ai fait un exemple simple de remplissage de ListBox par un tableau, avec :
VB:
Sub Exemple()
    Dim DL%, i%, tablo
    DL = [A1000000].End(xlUp).Row                       ' Dernière ligne du tableau
    tablo = Range("A4:G" & DL)                          ' Tranefert des données dans un tableau VBA
    For i = 2 To UBound(tablo)                          ' Pour la colonne 2 transforme en format heure
        tablo(i, 2) = Format(tablo(i, 2), "hh:mm")
    Next i
    With UserForm1                                      ' Avec Userform1
        .ListBox1.ColumnCount = 7                       ' Determine le nombre de colonnes
        .ListBox1.ColumnWidths = "40;70;70;70;70;70;70" ' Determine la largeur des colonnes
        .ListBox1.List = tablo                          ' Transfert le tableau dans la listbox
        .Show                                           ' Affiche l'userform
    End With
End Sub

sylvanu,

Merci pour ton exemple qui très compréhensible et qui me permet de mieux comprendre l'approche. C'est exactement ce dont j'avais besoin.

Cela est vraiment compliqué de l'intégrer dans un multipage ? Car cela voudrait dire que je dois faire une refonte de mon "logiciel".

Merci d'avance,
Alex
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Cela est vraiment compliqué de l'intégrer dans un multipage ?
Non, mais pour comprendre la ListBox autant commencer pas le début. :)
En PJ le multipage. Juste le remplissage.
Evidemment j'ai viré la macro Workbook_Open car elle fait appel à l'ouverture à la feuille Accueil qui n'existe pas dans votre fichier.
 

Pièces jointes

  • Palettes (V2).xlsm
    76.4 KB · Affichages: 3

alexpoupp

XLDnaute Junior
Non, mais pour comprendre la ListBox autant commencer pas le début. :)
En PJ le multipage. Juste le remplissage.
Evidemment j'ai viré la macro Workbook_Open car elle fait appel à l'ouverture à la feuille Accueil qui n'existe pas dans votre fichier.
sylvanu,

C'est super merci, j'arrive à comprendre maintenant comment tu as fait.

Deux dernières petites questions :
Si je dois chercher les donnés dans une feuille (ex : "Feuil1") que celle ou se trouve le bouton ("BDD"), je dois rajouter quoi dans le code ?
Et, je compte faire la même chose dans la page planchettes, que dois-je rajouter dans le code pour qu'il détecte qu'il est dans la bonne page ?

Merci d'avance,
Alex
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
que dois-je rajouter dans le code pour qu'il détecte qu'il est dans la bonne page ?
Rien, vous remarquerez dans mon code que je n'appelle jamais la page "Palettes", ce n'est pas utile car une listbox est toujours unique dans un userform.
En PJ vous avez deux listbox en page Palettes et Planchettes.
( pour simplifier j'ai mis le même tableau )
VB:
    With Acceuil.ListBox1                               ' Avec Userform
        .ColumnCount = 7                                ' Determine le nombre de colonnes
        .ColumnWidths = "80;70;180;120;100;70;70"       ' Determine la largeur des colonnes
        .List = tablo                                   ' Transfert le tableau dans la listbox
    End With
    With Acceuil.ListBox2                               ' Avec Userform
        .ColumnCount = 7                                ' Determine le nombre de colonnes
        .ColumnWidths = "80;70;180;120;100;70;70"       ' Determine la largeur des colonnes
        .List = tablo                                   ' Transfert le tableau dans la listbox
    End With
 

Pièces jointes

  • Palettes (V3).xlsm
    77.3 KB · Affichages: 3

alexpoupp

XLDnaute Junior
Rien, vous remarquerez dans mon code que je n'appelle jamais la page "Palettes", ce n'est pas utile car une listbox est toujours unique dans un userform.
En PJ vous avez deux listbox en page Palettes et Planchettes.
( pour simplifier j'ai mis le même tableau )
VB:
    With Acceuil.ListBox1                               ' Avec Userform
        .ColumnCount = 7                                ' Determine le nombre de colonnes
        .ColumnWidths = "80;70;180;120;100;70;70"       ' Determine la largeur des colonnes
        .List = tablo                                   ' Transfert le tableau dans la listbox
    End With
    With Acceuil.ListBox2                               ' Avec Userform
        .ColumnCount = 7                                ' Determine le nombre de colonnes
        .ColumnWidths = "80;70;180;120;100;70;70"       ' Determine la largeur des colonnes
        .List = tablo                                   ' Transfert le tableau dans la listbox
    End With
Trop fort merci beaucoup.

Juste si je veux chercher les données dans une autre feuille, que dois-je modifier dans le code ?

Alex
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 246
Membres
103 163
dernier inscrit
Pelaez