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

Microsoft 365 Supprimer de la liste d'une Combo les données déjà présentes dans une colonne d'un TS

NONO14

XLDnaute Impliqué
Bonjour le forum,
J'alimente une comboActiveX (Cmb_Code) qui se trouve dans la feuille "CalculHS" avec les données d'un TS (t_Noms) qui se trouve dans la feuille "Liste_agents".
Ma Combo s'alimente à l'activation de la feuille "CalculHS". Je souhaiterai que les codes déjà présent dans la colonne "Code agent" du TS "t-Heures" de la feuille "CalculHS" soient supprimés de la liste.
Voici mon début de code mais je n'arrive pas à insérer cette information. Pouvez-vous m'aider s'il vous plaît ?
Merci par avance
VB:
Sub AlimenterComboBox()
    Dim WsCalculHS As Worksheet
    Dim WsListe As Worksheet
    Dim Tbl As ListObject
    Dim Cell As Range
    Dim Cbx As ComboBox

    ' Définir les feuilles de calcul
    Set WsCalculHS = ThisWorkbook.Sheets("CalculHS") ' Feuille de calcul contenant la ComboBox
    Set WsListe = ThisWorkbook.Sheets("Liste_agents") ' Feuille de calcul contenant le tableau structuré

    ' Définir le tableau structuré
    Set Tbl = WsListe.ListObjects("t_Noms") ' Nom du tableau structuré

    ' Définir la ComboBox en utilisant OLEObjects
    Set Cbx = WsCalculHS.OLEObjects("Cmb_Code").Object

    ' Vider la ComboBox avant de la remplir
    Cbx.Clear
    Cbx.AddItem ""
    
    ' Parcourir chaque cellule de la colonne "Code agent" du tableau structuré et ajouter les valeurs à la ComboBox
    For Each Cell In Tbl.ListColumns("Code agent").DataBodyRange
        Cbx.AddItem Cell.Value
    Next Cell

End Sub
 
Solution
essaie ca

VB:
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")...

NONO14

XLDnaute Impliqué
tu ne cherches vraiment pas beaucoup..
il faut faire le meme test avec le tableau de la feuille CalculHS

If tblHeures.ListRows.Count <> 0 Then
For Each Cell In tblHeures.ListColumns("Code agent").DataBodyRange
J'ai réussi à corriger l'erreur voici le code et ça fonctionne :
VB:
    ' Supprimer les codes présents dans la colonne "Code agent" de la ComboBox
    If Not tblHeures.DataBodyRange Is Nothing Then
    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
    End If
 

Discussions similaires

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