Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Remplir une ComboBox à 3 colonnes avec les données d'un TS

  • Initiateur de la discussion Initiateur de la discussion NONO14
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

NONO14

XLDnaute Impliqué
Bonjour à toutes et à tous,
Voilà, j'ai une Combo ("Cbx_Salarié") dans un formulaire (UfGestTemps) et je souhaiterai l'alimenter avec les 3 premières colonnes d'un TS ("t_Noms") qui se trouve dans la feuille "Liste_agents". J'ai réussi à mettre la 1ère colonne, mais je n'arrive pas à insérer les 2 autres. La colonne 1 est le code de l'agent, la colonne 2 le NOM et la colonne 3 le Prénom.
Pouvez-vous m'aider s'il vous plaît ?
Voici le début du code et mon fichier
VB:
Private Sub UserForm_Initialize()
Application.ScreenUpdating = False

'Chargement des différents contrôles du formulaire
'On vide la ComboBox Cbx_Salarié
    Me.Cbx_Salarié.Clear

'On la remplie à nouveau avec le TS "t_Noms" de la feuille "Liste_agents"
    With Sheets("Liste_agents").ListObjects("t_Noms")
        For I = 1 To .ListRows.Count
            Me.Cbx_Salarié.AddItem .DataBodyRange(I, 1)
        Next I
    End With
 

Pièces jointes

Solution
Hello
@ChTi160 : 7 colonnes?? pourquoi faire??

tout ca me parait bien compliqué pour pas grand chose
un combo avec UNE colonne (utilisation originelle d'un combo==> sinon, on utilise un listbox)

VB:
'On vide la ComboBox Cbx_Salarié
    Me.Cbx_Salarié.Clear
    'On la remplie à nouveau avec le TS "t_Noms" de la feuille "Liste_agents"
    With Me.Cbx_Salarié
        .ColumnCount = 1
        For I = 1 To Tbl.ListRows.Count
            .AddItem Tbl.DataBodyRange(I, 2).Value & " " & Tbl.DataBodyRange(I, 3).Value & " " & Tbl.DataBodyRange(I, 1).Value 'on concatène les colonnes 
        Next I
    End With
ok vu
je ne sais pas.. et ce qui m'embete c'est que tu veux utiliser un combo pour faire ce qu'on fait habituellement avec une listbox.

PS: c'est quoi cette fonction cod qui met une formule au milieu de nulle part ..en IV1600
et qui fait planter l'appli quand on quitte...
 
Re
ce que j'ai modifié !(et qui pourrait être amélioré)
VB:
'On la remplie à nouveau avec le TS "t_Noms" de la feuille "Liste_agents"
    With Me.Cbx_Salarié
               .ColumnCount = 5
               .ColumnWidths = "1;0;0;0;0"
        For I = 1 To Tbl.ListRows.Count
            .AddItem Tbl.ListColumns(1).DataBodyRange(I, 2).Value & " " & _                      Tbl.ListColumns(1).DataBodyRange(I, 2).Value 
            .List(.ListCount - 1, 1) = Tbl.ListColumns(1).DataBodyRange(I, 1).Value
            .List(.ListCount - 1, 2) = Tbl.ListColumns(2).DataBodyRange(I, 2).Value
            .List(.ListCount - 1, 3) = Tbl.ListColumns(3).DataBodyRange(I, 3).Value
            .List(.ListCount - 1, 4) = Tbl.ListColumns(4).DataBodyRange(I, 4).Value
        Next I
    End With
jean marie
 
Dernière édition:
Ce serait plutôt un truc de ce genre (à tester) :
Code:
Me.Cbx_Salarié.rowsource = Range("t_Nom[[ID]:[Prénom]]").address
Ne pouvant ouvrir ton fichier jusqu'à maintenant, je m'étais basé sur la réponse #3 de Valtrase.

Mais maintenant que j'ai pu ouvrir ton fichier, je vois qu'il ne comporte pas de TS nommé "t_Nom", en revanche il y a un TS nommé "t_Noms".
Et ce TS n'a pas de colonne nommée "ID" mais "Code agent".

Donc, si javais pu ouvrir ton fichier dès le départ, ma proposition aurait été de remplacer ta boucle For ... Next par ceci :
Code:
Me.Cbx_Salarié.rowsource = "'Liste_agents'!" & Range("t_Noms[[Code agent]:[Prénom]]").address
 
Dernière édition:
PS: c'est quoi cette fonction cod qui met une formule au milieu de nulle part ..en IV1600
et qui fait planter l'appli quand on quitte...
Ah, c'est ça qui plante Excel !?! Je me demandais d'où ça venait.

Cette fonction existait déjà dans la version précédente du classeur mais ne faisait pas planter Excel.
Ceci dit, quelle idée d'aller écrire en IV1600... pourquoi pas IV65536... 😅


En bon Alsacien je dirai que c'est sûrement à cause du 1600 qu'Excel n'est pas staple.
 
Cette fonction m'a été proposé par Staple1600 et elle permet de générer un code. Chez moi, il n'y a aucun problème
 
Oui le TS se nomme bien "t_Noms" et les colonnes se nomment Code agent, NOM, Prénom.
 
J'ai déjà mis les propriétés column dans les propriétés de la Combo. Dois-je les supprimer ?
 
C'est certainement pour que le code généré soit hors d'atteinte d'un utilisateur, bien que cela pourrait lui être facile de le retrouver.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…