Listbox et source de données

Bonjour à tou.te.s,

Dans l'exemple (minimal) ci-joint, je suis capable de connecter une listbox (ici listbox1) à une source de données sur le même onglet (ici Tableau1 dans Feuil1).

Par contre, avec les mêmes commandes, cela ne fonctionnera plus (pour supprimer un item) si la source est sur un autre onglet (iciTableau2 dans Feuil2).

Je fais appel à vos lumières pour savoir si une listbox nécessite la source liée dans le même onglet ou si c'est moi qui n'utilise pas les commandes adaptées...

D'avance merci beaucoup pour votre aide précieuse !

PS : Par connecter, j'entends ici initialiser la liste et ajouter / retirer un élément de cette liste (cf. les 3 boutons dans l'exemple).

20test-list.xlsm (35.49 Ko)

Bonjour,

A tester : J'ai modifié un de vos userforms. Comme les tables ont la même structure, c'est le tableau de l'onglet en cours qui est chargé dans le userform.

Utilisez le bouton rouge dans la barre d'accès rapide pour lancer le userform.

Bonjour,

Avant tout, merci pour votre réponse.

J'ai testé votre solution, et :

1/ le fichier Excel s'éteint tout bonnement lorsque j'essaie d'ajouter un item. Cela se produit à l'exécution de cette ligne :

Set TabLigne = TabNomPRenom.ListRows.Add

2/ vous utilisez des listbox liées à une userform et non plus des listbox (de type Control ActiveX) liées à un onglet Excel.
Or, malheureusement, dans l'application réelle, je suis contraint de manipuler des listbox d'un onglet Excel.

Les tables ont effectivement la même structure mais leurs noms diffèrent, ce qui devrait être suffisant

En fait, dans votre solution, l'activation de l'onglet correspondant avant l'application d'instructions m'a mis sur la piste de l'erreur : l'usage de Range("NomDuTableau") perd l'information de l'onglet lié à ce tableau.

Au lieu de :

Range("Tableau1").Rows(n + 1).Delete

il semble possible d'utiliser :

Feuil1.Range("Tableau1").Rows(n + 1).Delete

ou plus simplement encore :

[Tableau1].Rows(n + 1).Delete 

En espérant que ces solutions ne causent pas d'autres problèmes.

En tout cas, merci beaucoup pour votre aide, et au plaisir de lire vos éventuels commentaires.

8test-list-v2.xlsm (33.86 Ko)

Bonjour Fatos, Éric, bonjour le forum

En pièce jointe une autre proposition dans ton fichier modifié avec le code commenté :

38fatos-ep-v01.xlsm (39.21 Ko)

OK,

Je n'ai pas tenu compte de votre Listbox sur l'onglet. Si vous ajoutez un item depuis la boite de dialogue, vous n'aurez pas de problème.

Cordialement.

Bonjour ThauThème.

@ Eric : merci encore pour la réponse !

@ ThauThème : merci pour la solution particulièrement commentée !

  • Même si la syntaxe diffère, le nom de l'onglet est également précisé dans votre solution (lorsque, par exemple, vous déclarez les tableaux structurés). Il me semble que c'était le nœud principal de mon problème.
  • Je remarque que vous utilisez plutôt .List que .ListFillRange lorsque vous mettez à jour les listbox. Y a-t-il des avantages / inconvénients significatifs ?
    Merci encore par avance pour vos lumières.

Bonjour le fil, bonjour le forum,

Non, juste une habitude... J'ai dû galéré un jour avec ListFillRangeb et depuis...

Bonjour,

Merci encore pour le retour.

Depuis la semaine dernière, j'ai aussi eu des soucis avec ListFillRange.
La listbox est chargée par une variable nommée renvoyant à une partie d'un tableau structuré mais j'obtiens une erreur (très) problématique lors de suppressions de lignes.

buglistfillrange

Je me suis donc mis à .List, mais l'inconvénient majeur est la non gestion du format.

N'ai pas trouvé mieux pour l'heure d'ajouter une étape intermédiaire où, colonne par colonne, j'applique le format souhaité dans un Array avant de le charger dans .List.

Si vous avez une astuce, je suis preneur, dans tous les cas, merci, et problème initial résolu !

Rechercher des sujets similaires à "listbox source donnees"