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