Dans le fichier ci-joint vous avez un tableau sur l’onglet « Feuil1 ».
Je souhaiterai pouvoir supprimer les lignes appartenant au même N° de commande et à condition que ce N° de commande possède le STATUT " COMPLETE ".
Pour exemple, si je prends la première commande du tableau, elle comprends 4 ligne et elle a la mention " COMPLETE " comme STATUT, donc si je clique sur le bouton supprimer il devrait effacer ces lignes.
bonsoir, cette macro supprime toute la ligne, donc c’est important qu’il n’y a rien d’autre à côté de ce tableau, autrement vous risquez que ce sera aussi supprimé .
Donc, y-a-t-il quelque chose à côté du tableau ? Rubis54.xlsm (27,0 Ko)
Sub Supprimer()
Dim LO, i, ptr As Integer
Set LO = Sheets("Feuil1").Range("A1").ListObject 'votre tableau structuré
If LO.ListRows.Count = 0 Then MsgBox "vide": Exit Sub
Application.ScreenUpdating = False
With LO.ListColumns("statut").DataBodyRange 'colonne "Statut"
On Error Resume Next
.SpecialCells(xlBlanks).FormulaR1C1 = "=IF(and( R[-1]C=""complete"",[@FOURNISSEUR]=""""),""complete"","""")" 'pour les cellules vides, si cellule dessus est "compete", cette cellule aussi
On Error GoTo 0
.Value = .Value 'en supposant qu'il n'y avait pas d'autre formules dans cette colonne, remplacer les formules par leur valeur
For i = .Rows.Count To 1 Step -1
If StrComp(.Cells(i, 1).Value, "Complete", 1) = 0 Then LO.ListRows(i).Delete: ptr = ptr + 1
Next
End With
MsgBox ptr & " lignes supprimées"
End Sub