Public EnableEvents As Boolean
Private Sub Worksheet_Activate()
    Application.EnableEvents = False
    EnableEvents = False
    
    Feuil1.Cbx_NomPrenom.Clear
    Feuil1.Cbx_DateCommande.Clear
    
    With Sheets("Lst_Clients").ListObjects("Lst_Tab_Clients")
        If .ListRows.Count = 0 Then Exit Sub 'pour éviter une erreur quand rien à mettre
        For i = 1 To .ListRows.Count 'pour chaque ligne
            Me.Cbx_NomPrenom.Value = .DataBodyRange(i, 4)
            If Me.Cbx_NomPrenom.ListIndex = -1 Then Me.Cbx_NomPrenom.AddItem Me.Cbx_NomPrenom.Value
        Next i
    End With
    
    With Sheets("Evt_Achat").ListObjects("Lst_Tab_Achat")
        If .ListRows.Count = 0 Then Exit Sub 'pour éviter une erreur quand rien à mettre
        For i = 1 To .ListRows.Count 'pour chaque ligne
            Me.Cbx_DateCommande.Value = .DataBodyRange(i, 3)
            If Me.Cbx_DateCommande.ListIndex = -1 Then Me.Cbx_DateCommande.AddItem Me.Cbx_DateCommande.Value
        Next i
    End With
    EnableEvents = True
    Application.EnableEvents = True
    Me.Cbx_NomPrenom.ListIndex = -1
    Me.Cbx_DateCommande.ListIndex = -1
End Sub
Private Sub Cbx_DateCommande_Change() ' Lors de la sélection change dans le combo
Dim trouve As Range
Dim ligne As Long
Dim i As Long
Dim ligneTable As Long
Dim nbArticles As Long
Dim lastRow As Long
Dim found As Boolean
    
    If Not EnableEvents Then Exit Sub
    If Me.Cbx_NomPrenom.ListIndex = -1 Then 'si il n'y a pas de selection OU qu'il y a une saisie ne correspondant pas à la liste du combo
        Me.Lbl_NomPrenom = ""
        Me.Lbl_Téléphone = ""
        Me.Lbl_Mail = ""
        Me.Lbl_Adresse = ""
        Me.Lbl_DateAnniverssaire = ""
        Me.Lbl_DateCommande = ""
        Me.Chx_virement = ""
        Me.Chx_Chèque = ""
        Me.Chx_Espèces = ""
        Me.Chx_Paylib = ""
        Me.Lbl_NumCommande = ""
        Me.Range("B13:F34") = ""
        Exit Sub
    End If
        
    ' Recherche dans la feuille "Lst_Clients"
    With Sheets("Lst_Clients").ListObjects("Lst_Tab_Clients")
        ' Cherche le "Nom Prénom" dans la colonne correspondante
        Set trouve = .ListColumns("Nom Prénom").Range.Find(Me.Cbx_NomPrenom.Value, LookAt:=xlWhole, LookIn:=xlValues)
        If Not trouve Is Nothing Then ' Si trouvé
            ligne = trouve.Row - .Range.Row '+ 1 Calculer la ligne de la table
            ' Remplir les labels avec les valeurs de la table
            Me.Lbl_NomPrenom = .ListColumns("Nom Prénom").DataBodyRange(ligne)
            Me.Lbl_Téléphone = .ListColumns("Téléphone").DataBodyRange(ligne)
            Me.Lbl_Mail = .ListColumns("Mail").DataBodyRange(ligne)
            Me.Lbl_Adresse = .ListColumns("Adresse").DataBodyRange(ligne) & " " & .ListColumns("Code Postal").DataBodyRange(ligne) & " " & .ListColumns("Ville").DataBodyRange(ligne)
            Me.Lbl_DateAnniverssaire = .ListColumns("Date Anniversaire").DataBodyRange(ligne)
        End If
    End With
    
    ' Recherche dans la feuille "Evt_Achat"
    With Sheets("Evt_Achat").ListObjects("Lst_Tab_Achat")
        ' Cherche le "Date de Commande" dans la colonne correspondante
         Set trouve = .ListColumns("Date de Commande").Range.Find(Me.Cbx_DateCommande.Value, LookAt:=xlWhole, LookIn:=xlValues)
         If Not trouve Is Nothing Then ' Si trouvé
             ligne = trouve.Row - .Range.Row '+ 1 Calculer la ligne de la table
             ' Remplir les labels avec les valeurs de la table
             Me.Lbl_DateCommande = .ListColumns("Date de Commande").DataBodyRange(ligne)
             Me.Lbl_NumCommande = Format(.ListColumns("NumCommande").DataBodyRange(ligne), "0000")
             Me.Chx_virement = .ListColumns("Virement").DataBodyRange(ligne)
             Me.Chx_Chèque = .ListColumns("Chèque").DataBodyRange(ligne)
             Me.Chx_Espèces = .ListColumns("Espèces").DataBodyRange(ligne)
             Me.Chx_Paylib = .ListColumns("Paylib").DataBodyRange(ligne)
         End If
    End With
    
    ' Nettoyer les anciennes données dans Feuil1 (facultatif)
    Me.Range("B13:F34") = ""
    nbArticles = 0
    found = False
    ' Trouver la dernière ligne utilisée pour coller les nouvelles données
    lastRow = Sheets("Bon Commande").Cells(Rows.Count, 2).End(xlUp).Row + 1
    ' Parcourir les lignes du tableau pour trouver les articles correspondant à la date
    With Sheets("Evt_Achat").ListObjects("Lst_Tab_Achat")
        If .ListRows.Count = 0 Then Exit Sub ' Si le tableau est vide, sortir de la fonction
        
        For ligneTable = 1 To .ListRows.Count
            If Trim(.DataBodyRange(ligneTable, 3).Value) = Me.Cbx_DateCommande.Value Then ' Colonne 3 = Date de Commande
                'nbArticles = nbArticles + 1
                found = True ' Au moins une référence a été trouvée
                If nbArticles <= 10 Then ' Limite de 10 articles à afficher
                    ' Remplir les cellules correspondantes sur Feuil1
                    Sheets("Bon Commande").Cells(lastRow, 2).Value = .DataBodyRange(ligneTable, Sheets("Evt_Achat").ListObjects("Lst_Tab_Achat").ListColumns("Références").Index).Value ' Référence
                    Sheets("Bon Commande").Cells(lastRow, 3).Value = .DataBodyRange(ligneTable, Sheets("Evt_Achat").ListObjects("Lst_Tab_Achat").ListColumns("Articles").Index).Value ' Articles
                    Sheets("Bon Commande").Cells(lastRow, 4).Value = .DataBodyRange(ligneTable, Sheets("Evt_Achat").ListObjects("Lst_Tab_Achat").ListColumns("Quantité").Index).Value ' Quantité
                    Sheets("Bon Commande").Cells(lastRow, 5).Value = .DataBodyRange(ligneTable, Sheets("Evt_Achat").ListObjects("Lst_Tab_Achat").ListColumns("Prix").Index).Value ' Prix
                    Sheets("Bon Commande").Cells(lastRow, 6).Value = .DataBodyRange(ligneTable, Sheets("Evt_Achat").ListObjects("Lst_Tab_Achat").ListColumns("Montant").Index).Value ' Montant
                    lastRow = lastRow + 1 ' Passer à la ligne suivante pour le prochain article
                End If
            End If
        Next ligneTable
    End With
End Sub