Ajouter des lignes de données dans une listBox

Bonjour à tous

C'est la première fois que je poste sur ce forum donc je vais me présenter brièvement.

Je m'appelle Julien, j'ai 27ans et je suis étudiant en Master logistique que je fais en alternance.

Dans le cadre de mon travail, j'ai créé un fichier (avec un peu d'aide, étant novice en VBA) qui me permet de sélectionner des informations d'une Base de Données et les afficher dans une ListBox.

J'ai travaillé dessus sur mon ordinateur avec Excel 2016 et celui-ci fonctionne. Seulement quand j'ai voulu le transposer

sur les ordinateurs du "boulot", ces ordinateurs ayant une version Excel 2010 .... "A marche pû !!!".

J'ai beau le retourner dans tous les sens je n'arrive pas à en faire ce que je veux.

Pourriez vous me donner un coup de main pour adapter le premier fichier à la version 2010 de Excel SVP ?

Voici une aperçu de la base de données que j'utilise.

base

Et voici le UserForm que je souhaite obtenir

userform

Voici la partie du code sur ma version de Excel 2016 qui me sert pour le UserForm

Sub UserForm_Initialize()
    ' create table variable with database in Base sheet
    Set tbl = Sheets("Base").ListObjects("T_base")

    tRows = tbl.DataBodyRange.Rows.Count

    For i = 1 To tRows
        ListBox1.AddItem (tbl.DataBodyRange(i, 2).Value & "____" & tbl.DataBodyRange(i, 3).Value & "____" & tbl.DataBodyRange(i, 1).Value & "____" & tbl.DataBodyRange(i, 4).Value)
    Next

End Sub

Si possible j'aimerai que mes données dans le UserForm reste sous la forme "Index____Désignation____Implantation____Conditionnement" afin que ça corresponde avec la suite de mon code.

J'espère que vous avez assez d'informations pour comprendre où je veux en venir et je suis désolé de ne pas pouvoir mettre le fichier directement celui-ci est trop volumineux.

N'hésitez pas à me demander plus d'informations.

En espérant que quelqu'un ait une idée pour me dépanner,

Merci d'avance

Respect, Robustesse ...

Bonsoir,

Tu ne dis pas ce qui ne fonctionne pas... tu n'expliques pas les triangles verts de ta colonne B qui fait poser des questions sur le contenu des cellules...

Et pour diagnostiquer... (un fichier ça s'allège !)

Cordialement.

Bonjour,

Alors ...

  • Les petits triangles verts sont là parce que ce sont des nombres stockés sous format texte
  • Ce qui ne fonctionne pas, je ne sais pas trop justement si je me souviens bien Excel me dit "Erreur d'exécution13, type incompatible' "
Quand je veux lancer mon UserForm, Excel s’arrête au Sub qui me permet de faire apparaitre mon UserForm à Userform.Show . Apparemment le soucis vient après dans la partie du code que j'ai mis dans le message précédent, puisque quand je la supprime, le UserForm apparait, mais je n'ai plus mes données dedans. J'ai l'impression que la version 2010 ne prend pas en compte "DataBodyRange"

- Et pour la suite je suis en train d'essayer de réduire le fichier, mais même en réduisant grandement ma base de donnée j'arrive à 945Ko (La limite est bien à 500Ko ?). Je vais voir ce que je peux supprimer ou réduire de plus. Mais je préfère prévenir, si j'arrive à vous envoyer le fichier, mon code risque de faire grincer des dents les plus initiés d'entre vous ^^.

Bonjour,

Pas de problème en pricipe entre DataBodyRange et 2010 !

Essaie donc ainsi :

Sub UserForm_Initialize()
    With Sheets("Base").ListObjects("T_base").DataBodyRange
        For i = 1 To .Rows.Count
            ListBox1.AddItem .Cells(i, 2) & "____" & .Cells(i, 3) & "____" & .Cells(i, 1) _
             & "____" & .Cells(i, 4)
        Next i
    End With
End Sub

Cela ne change rien, mais ça la raccourcit juste un peu... !

Par contre vérifie avant que le nom du Tableau est bien T_base, et qu'il n'inclue pas de lignes vides à la fin (ou ailleurs) [ou éventuellement des données ne pouvant être concaténées, erreurs, etc.]

Cordialement.

Bonsoir,

Effectivement j'avais des lignes vides en trop.

recherchev

En fait j'avais une rechecheV dans ma colonne "D" qui allait me chercher les valeurs dans la feuille importation. Seulement je l'avais fait manuellement et pour que ça le prenne j'avais incrémenté sur un nombre de lignes élevé ce qui fait que j'avais des lignes vides et des valeurs fausses. Du coup j'ai fait en sorte que ça se fasse automatiquement avec le code suivant :

Range("D2").Select
    ActiveCell.Formula = "=VLOOKUP([@Implantation],IMPORTATION!A:K,11,FALSE)"
    Range("D2").Select
    Selection.AutoFill Destination:=Range("D2:D" & LastRow)

Donc mon premier code était bon, c'était le fait que j'ai des lignes en trop à cause de ma formule qui ne lui plaisait pas.

Par contre vérifie avant que le nom du Tableau est bien T_base, et qu'il n'inclue pas de lignes vides à la fin (ou ailleurs) [ou éventuellement des données ne pouvant être concaténées, erreurs, etc.]

@MFerrand merci pour ton aide !!!

Cordialement

C'est un inconvénient des tableaux Excel... Un avantage (qui peut servir, c'est que Excel introduit automatiquement une plage nommée au nom du tableau, laquelle correspond au DataBodyRange (c'est à dire le tableau hors en-tête) . Tu pouvais donc utiliser le nom en tant que plage dans ta procédure pour le même résultat.

Cela ne réglait pas le problème des lignes vides....

Bonne continuation.

Rechercher des sujets similaires à "ajouter lignes donnees listbox"