XL 2016 VBA - Trouver une valeur et supprimer sa ligne de tableau

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ricouch

XLDnaute Nouveau
Bonjour la communauté 🙂 je vous souhaite une bonne année pleine de joie et de prospérité.

J'essaie d'avancer sur un Userform, mais avec le peu de connaissance que j'ai, je me retrouve dans des impasses.

Avec mon code ci-dessous j'essaie de trouver une valeur dans mon tableau dynamique (exactement dans la 1ere colonne) , puis supprimer la ligne entière.


VB:
Private Sub CommandButton4_Click()
If Me.Identifiant_Client.Value = "" Then
MsgBox "Sélectionnez les données à supprimer"
Exit Sub
End If
    
    
Dim sh As Worksheet
Dim Table As ListObject
Set sh = ThisWorkbook.Sheets("Biens")
Set Table = sh.ListObjects("Tbl_Biens")
Dim Seleted_row As Long
Seleted_row = Application.listobjectfunction.Match(Me.Identifiant_Client.Value, Table.ListRows(0), 0)
'--------------------------------------
Table.Range("a" & Seleted_row).ListRows.Delete
Call Refresh_data


End Sub

Merci d'avance.
 
Bonjour à tous, bonne année à tous 🙂,

Essayez le code suivant :
VB:
Private Sub CommandButton4_Click()
Dim Table As ListObject, Seleted_row As Long
   If Me.Identifiant_Client.Value = "" Then MsgBox "Sélectionnez les données à supprimer": Exit Sub
   Set Table = ThisWorkbook.Sheets("Biens").ListObjects("Tbl_Biens")
   On Error Resume Next 'continuer l'exécution si Me.Identifiant_Client.Value n'existe pas
   Seleted_row = Application.Match(Me.Identifiant_Client.Value, Table.ListColumns(1).DataBodyRange, 0)
   On Error GoTo 0   'rétablir le traitement d'erreur
   If Seleted_row > 0 Then Table.ListRows(Seleted_row).Delete
   Refresh_data
End Sub

nota : bien souvent les contrôles retournent une valeur de type texte. Si la 1ère colonne de votre tableau structuré contient un autre type de données alors il faudra convertir Me.Identifiant_Client.Value dans le type approprié de donnée pour que Application.Match() fonctionne correctement (j'ai supposé que Identifiant_Client était un contrôle).
 
Bonjour à tous, bonne année à tous 🙂,

Essayez le code suivant :
VB:
Private Sub CommandButton4_Click()
Dim Table As ListObject, Seleted_row As Long
   If Me.Identifiant_Client.Value = "" Then MsgBox "Sélectionnez les données à supprimer": Exit Sub
   Set Table = ThisWorkbook.Sheets("Biens").ListObjects("Tbl_Biens")
   On Error Resume Next 'continuer l'exécution si Me.Identifiant_Client.Value n'existe pas
   Seleted_row = Application.Match(Me.Identifiant_Client.Value, Table.ListColumns(1).DataBodyRange, 0)
   On Error GoTo 0   'rétablir le traitement d'erreur
   If Seleted_row > 0 Then Table.ListRows(Seleted_row).Delete
   Refresh_data
End Sub

nota : bien souvent les contrôles retournent une valeur de type texte. Si la 1ère colonne de votre tableau structuré contient un autre type de données alors il faudra convertir Me.Identifiant_Client.Value dans le type approprié de donnée pour que Application.Match() fonctionne correctement (j'ai supposé que Identifiant_Client était un contrôle).
Bonjour @mapomme, @ChTi160,

Merci pour vos retour, le code que @mapomme m'a partagé fonctionne 100%

Merci beaucoup.

2022 s'annonce bien ^^
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour