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
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).
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).