Private Sub Cmb_Code_Change()
Static isBusy As Boolean
If isBusy Then Exit Sub
isBusy = True
Dim WsCalculHS As Worksheet
Dim WsListe As Worksheet
Dim TblNoms As ListObject
Dim tblHeures As ListObject
Dim codeAgent As String
Dim Cell As Range
Dim NewRow As ListRow
Dim i As Integer
' Définir les feuilles de calcul
Set WsCalculHS = Sheets("CalculHS") ' Feuille de calcul contenant la ComboBox et le tableau structuré t_Heures
Set WsListe = Sheets("Liste_agents") ' Feuille de calcul contenant le tableau structuré t_Noms
' Définir les tableaux structurés
Set TblNoms = WsListe.ListObjects("t_Noms")
Set tblHeures = WsCalculHS.ListObjects("t_Heures")
' Récupérer la valeur sélectionnée dans la ComboBox
codeAgent = Me.Cmb_Code.Value
' Parcourir chaque cellule de la colonne "Code agent" du tableau structuré t_Noms
For Each Cell In TblNoms.ListColumns("Code agent").DataBodyRange
If Cell.Value = codeAgent Then
' Ajouter une nouvelle ligne au tableau structuré t_Heures
Set NewRow = tblHeures.ListRows.Add
' Alimenter les colonnes de t_Heures avec les données de t_Noms
NewRow.Range(1, 1).Value = codeAgent ' Ajouter le code agent dans la première colonne de t_Heures
NewRow.Range(1, 2).Value = Cell.Offset(0, 1).Value ' Colonne C de t_Noms dans la colonne C de t_Heures
NewRow.Range(1, 3).Value = Cell.Offset(0, 2).Value ' Colonne D de t_Noms dans la colonne D de t_Heures
NewRow.Range(1, 5).Value = Cell.Offset(0, 3).Value ' Colonne E de t_Noms dans la colonne F de t_Heures
End If
Next Cell
' Supprimer les codes présents dans la colonne "Code agent" de la ComboBox
For Each Cell In tblHeures.ListColumns("Code agent").DataBodyRange
Me.Cmb_Code = Cell 'on place la valeur dans le combo
If Me.Cmb_Code.ListIndex <> -1 Then 'si ca correspond à un listindex ==> ca veut dire que le code est listé dans le combo
Me.Cmb_Code.RemoveItem Me.Cmb_Code.ListIndex 'on supprime l'élement du combo
End If
Next Cell
Me.Cmb_Code.ListIndex = -1 'on déselectionne
isBusy = False
SommeHeure
CalculHeuresSup
End Sub