Formulaire vba

Signaler
-
Messages postés
9882
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
23 juin 2021
-
Salut à tous, je viens solliciter votre aide.
J’ai un formulaire qui doit gérer la liste du personnel. Dans ce formulaire, j’ai une ComboBox appelé CB_Matricule qui récupère ces valeurs à partir d’une liste se trouvant dans la colonne A de la feuille PERSONNEL. Notons que dans la colonne B de cette même feuille, on a les noms des personnes correspondants aux matricules qui se trouve dans la colonne A.
je veux qu’en fonction des valeurs de la CB_Matricule, une TextBox appelé TB_Noms se trouvant sur le même formulaire puisse afficher le nom correspondant au matricule s’affiche.

Private Sub CB_ Matricul _Change()
If CB_Matricul.Value = Sheets("PERSONNELS").Range("A5").Value Then
TB_Noms.Value = Sheets("PERSONNELS").Range("B5").Value
ElseIf CB_Matricul.Value = Sheets("PERSONNELS").Range("A6") Then
TB_ Noms.Value = Sheets("PERSONNELS").Range("B6").Value
ElseIf CB_Matricul.Value = Sheets("PERSONNELS").Range("A7") Then
TB_ Noms.Value = Sheets("PERSONNELS").Range("B7").Value
End If
End Sub

Le problème est qu’en procédant ainsi, il sera difficile d’allé jusqu’à la ligne A1000000. Donc j’aimerais trouver un code qui me permettra résumer tout ça.
Quelqu'un peut-il m'aider?
Mercie d'avance.

1 réponse

Messages postés
9882
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
23 juin 2021
2 141
Bonjour

Sans le fichier, difficile de tester, mais je verrai un truc comme ça

Sub CB_Matricul_Change()
Dim obj As Object, liobj As Long, mat As String
mat = CB_Matricul.Value
' recherche mat dans la colonne A de la feuille PERSONNELS
Set obj = Sheets("PERSONNELS").Columns("A").Find(mat, , , xlWhole)
If Not obj Is Nothing Then
  ' si mat est trouvé liobj est sa ligne
  liobj = obj.Row
  TB_ Noms.Value = Sheets("PERSONNELS").Range("B" & liobj).Value
End If
End Sub

Cdlmnt