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.
Et voici le UserForm que je souhaite obtenir
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 SubSi 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...
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' "
- 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 SubCela 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.
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.