Salut.
Je plussoie Marcel sur l'utilisation du tableau structuré. Ca simplifie grandement le code => Mon tuto sur les tableaux structurés
Vu que ta combo se remplit à partir de la plage non triée, ce qui n'est pas le top point de vue ergonomie, soit, tu pourrais te passer de la recherche de la ligne. Ton combo commence en ligne 0, ton tableau en ligne 1. Tu peux donc utiliser la propriété ListIndex du combo pour pointer vers la bonne ligne de la plage. Je pars du principe que ton userform est déchargé après utilisation, ce qui implique que les contrôles sont vides.
Perso, je n'aime pas alimenter le combobox avec une référence à une plage en utilisant RowSource. Je préfère charger les données comme Marcel le propose (nettoyage en moins)
Pour préparer et ouvrir le userform:
https://fauconnier.developpez.com/tutoriels/tableaux-structures/
Sur changement du combobox:
1 2 3 4 5 6 7
| Private Sub ComboBox1_Change()
With ComboBox1
TextBox1 = Range("t_Contacts[Prenom]")(.ListIndex + 1).Value
TextBox2 = Range("t_Contacts[Adresse]")(.ListIndex + 1).Value
Label5.Caption = Range("t_Contacts[ID]")(.ListIndex + 1).Value
End With
End Sub |
Tu tagues Excel 365, donc tu pourrais trier les données du combobox, pour présenter la liste par ordre alphabétique:
1 2 3 4 5 6
| Sub Ouvre()
With UserForm1
.ComboBox1.List = Application.Sort(Range("t_Contacts[Nom]"))
.Show
End With
End Sub |
Tu devras alors utiliser Match, soit comme Marcel le propose, soit avec Application.Match, comme ci-dessous:
1 2 3 4 5 6 7 8
| Private Sub ComboBox1_Change()
Dim Index As Long
Index = Application.Match(ComboBox1.Value, Range("t_Contacts[Nom]"), 0)
TextBox1 = Range("t_Contacts[Prenom]")(Index).Value
TextBox2 = Range("t_Contacts[Adresse]")(Index).Value
Label5.Caption = Range("t_Contacts[ID]")(Index).Value
End Sub |
Je me demande comment tu vas faire si tu as plusieurs personnes du même nom. Perso, j'irais plus vite soit vers un listbox, soit vers un combobox à au moins deux colonnes pour afficher le nom et le prénom, éventuellement triés avec Sort.
Comme je vois que tu as les boutons Ajouter et Modifier, je me dis que tu vas vouloir échanger avec ta table de données. Je te conseillerais dès lors une approche plus générique.
Partager