XL 2016 Supprimer une ou plusieurs lignes sélectionnées dans un tableau

badraaliou4

XLDnaute Occasionnel
Bonsoir ici,

Je cherche un code qui me permet de supprimer une ou plusieurs lignes sélectionnées dans un tableau.
le code que j'ai me permet de supprimer uniquement une ligne sélectionnée.
merci pour votre aide..
ci-joint mon ficher.
VB:
Sub SuprimerLigneVente()
If ActiveCell.Row <= 28 Then
    MsgBox "    Impossible de supprimer cette ligne.", , "            SUPPRESSION DE LIGNE"
Else
    If MsgBox("Voulez-vous supprimer la ligne selectionée ?", vbYesNo, "     SUPPRESSION DE LIGNE") = vbYes Then
        Set lot = ActiveCell.ListObject
        If lot Is Nothing Then Exit Sub
        l = ActiveCell.Row - lot.HeaderRowRange.Row
        lot.ListRows(l).delete
    End If
End If
End Sub
 

Pièces jointes

  • Supprimer lignes selectionnées.xlsb
    15.4 KB · Affichages: 28

laurent950

XLDnaute Barbatruc
Bonsoir
Voulez-vous supprimer la ligne sélectionnée ?
VB:
Sub SuprimerLigneVente()
If ActiveCell.Row <= 28 Then
    MsgBox "    Impossible de supprimer cette ligne.", , "            SUPPRESSION DE LIGNE"
Else
    If MsgBox("Voulez-vous supprimer la ligne selectionée ?", vbYesNo, "     SUPPRESSION DE LIGNE") = vbYes Then
        ActiveCell.EntireRow.Delete
    End If
End If
End Sub
 
Dernière édition:

badraaliou4

XLDnaute Occasionnel
Bonsoir
VB:
Sub SuprimerLigneVente()
Dim lot As Range
If ActiveCell.Row <= 28 Then
    MsgBox "    Impossible de supprimer cette ligne.", , "            SUPPRESSION DE LIGNE"
Else
    If MsgBox("Voulez-vous supprimer la ligne selectionée ?", vbYesNo, "     SUPPRESSION DE LIGNE") = vbYes Then
        Set lot = ActiveCell.EntireRow
        lot.Delete
    End If
End If
End Sub
merci beaucoup ça marche mais ça ne supprime qu'une seule ligne comme mon précédent code.
merci d'avance
 
Dernière édition:

laurent950

XLDnaute Barbatruc
Bonjour,

Choix Multi-lignes select pour suppression.
Voulez-vous supprimer (la ou les lignes) sélectionnées ?

VB:
Sub SuprimerLigneVente()
Dim myRange As Range
If ActiveCell.Row <= 28 Then
    MsgBox "    Impossible de supprimer cette ligne.", , "            SUPPRESSION DE LIGNE"
Else
    If MsgBox("Voulez-vous supprimer la ligne selectionée ?", vbYesNo, "     SUPPRESSION DE LIGNE") = vbYes Then
        Set myRange = Application.Selection
        myRange.EntireRow.Delete
    End If
End If
End Sub

Ps : j'ai corrigé le poste #2 (Pour suppression d'une seul ligne)
 
Dernière édition:

badraaliou4

XLDnaute Occasionnel
Bonjour,

Choix Multi-lignes select pour suppression.
Voulez-vous supprimer (la ou les lignes) sélectionnées ?

VB:
Sub SuprimerLigneVente()
Dim myRange As Range
If ActiveCell.Row <= 28 Then
    MsgBox "    Impossible de supprimer cette ligne.", , "            SUPPRESSION DE LIGNE"
Else
    If MsgBox("Voulez-vous supprimer la ligne selectionée ?", vbYesNo, "     SUPPRESSION DE LIGNE") = vbYes Then
        Set myRange = Application.Selection
        [CODE=vb]selection.EntireRow.Delete
End If
End If
End Sub
[/code]

Ps : j'ai corrigé le poste #2 (Pour suppression d'une seul ligne)
Merci beaucoup... ça marche bien.

Mais j'ai encore un petit problème avec
VB:
if activecell.row<= 28 then
si je commence la sélection de bas en haut ça supprime même la ligne 28
merci d'avance
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @badraaliou4, laurent950,
Bonne et heureuse nouvelle année :),

Ma p'tite version. Elle permet de sélectionner plusieurs cellules au sein d'une même ligne, sur plusieurs lignes et dans n'importe quel ordre de ligne, en dehors ou à l'intérieur du tableau.
Les lignes des cellules sélectionnées du tableau seront supprimées.

Par exemple:
  • sélectionner (tout en maintenant la touche Ctrl appuyée) les cellules G1 puis B4 puis C11 puis A19:A20 puis H4 puis G11 puis E25. Cela correspond aux cellules oranges
  • cliquez sur le bouton rouge
Le code est dans module1:
Code:
Sub SuprimerLigneVente()
Dim sel As Range

   Application.ScreenUpdating = False
   If Feuil1.ListObjects("Tableau1").ListRows.Count = 0 Then MsgBox "Le tableau est vide.", vbCritical: Exit Sub
   If MsgBox("Voulez-vous supprimer les lignes selectionnées de tableau 1 ?", vbYesNo + vbQuestion) = vbYes Then
      Set sel = Selection.EntireRow
      For i = Range("tableau1").Row + Range("tableau1").Rows.Count - 1 To Range("tableau1").Row Step -1
         If Not Intersect(Cells(i, Range("tableau1").Column), sel) Is Nothing Then Intersect(Rows(i), Range("Tableau1")).Delete xlShiftUp
      Next i
   End If
End Sub

Edit: version v1a qui qui prend en compte le fait que le tableau ne commence pas forcément en colonne A.
 

Pièces jointes

  • badraaliou4- Supprimer lignes selectionnées- v1a.xlsm
    21.2 KB · Affichages: 6
Dernière édition:

badraaliou4

XLDnaute Occasionnel
Bonjour @badraaliou4, laurent950,
Bonne et heureuse nouvelle année :),

Ma p'tite version. Elle permet de sélectionner plusieurs cellules au sein d'une même ligne, sur plusieurs lignes et dans n'importe quel ordre de ligne, en dehors ou à l'intérieur du tableau.

Par exemple:
  • sélectionner (tout en maintenant la touche Ctrl appuyée) les cellules G1 puis B4 puis C11 puis A19:A20 puis H4 puis G11 puis E25. Cela correspond aux cellules oranges
  • cliquez sur le bouton rouge
Le code est dans module1:
Code:
Sub SuprimerLigneVente()
Dim sel As Range

   Application.ScreenUpdating = False
   If Feuil1.ListObjects("Tableau1").ListRows.Count = 0 Then MsgBox "Le tableau est vide.", vbCritical: Exit Sub
   If MsgBox("Voulez-vous supprimer les lignes selectionnées de tableau 1 ?", vbYesNo + vbQuestion) = vbYes Then
      Set sel = Selection.EntireRow
      For i = Range("tableau1").Row + Range("tableau1").Rows.Count - 1 To Range("tableau1").Row Step -1
         If Not Intersect(Cells(i, Range("tableau1").Column), sel) Is Nothing Then Intersect(Rows(i), Range("Tableau1")).Delete xlShiftUp
      Next i
   End If
End Sub

Bonjour @badraaliou4, laurent950,
Bonne et heureuse nouvelle année :),

Ma p'tite version. Elle permet de sélectionner plusieurs cellules au sein d'une même ligne, sur plusieurs lignes et dans n'importe quel ordre de ligne, en dehors ou à l'intérieur du tableau.

Par exemple:
  • sélectionner (tout en maintenant la touche Ctrl appuyée) les cellules G1 puis B4 puis C11 puis A19:A20 puis H4 puis G11 puis E25. Cela correspond aux cellules oranges
  • cliquez sur le bouton rouge
Le code est dans module1:
Code:
Sub SuprimerLigneVente()
Dim sel As Range

   Application.ScreenUpdating = False
   If Feuil1.ListObjects("Tableau1").ListRows.Count = 0 Then MsgBox "Le tableau est vide.", vbCritical: Exit Sub
   If MsgBox("Voulez-vous supprimer les lignes selectionnées de tableau 1 ?", vbYesNo + vbQuestion) = vbYes Then
      Set sel = Selection.EntireRow
      For i = Range("tableau1").Row + Range("tableau1").Rows.Count - 1 To Range("tableau1").Row Step -1
         If Not Intersect(Cells(i, Range("tableau1").Column), sel) Is Nothing Then Intersect(Rows(i), Range("Tableau1")).Delete xlShiftUp
      Next i
   End If
End Sub
[/CODe
[/QUOTE]
 

laurent950

XLDnaute Barbatruc
Re
Les 28 premières lignes sont impossibles a supprimer
Votre tableau est protéger
Si votre tableau s'agrandie (Changer la ligne 28 par une autres plus grandes comme 35)
exemple : If j <= 28 Then ---->>>par ---->>>> If j <= 35 Then

VB:
Sub SuprimerLigneVente()
Dim myRange As Range
        Set myRange = Application.Selection
For j = myRange.Rows(1).Row To myRange.Rows.Count + myRange.Rows(1).Row - 1
    If j <= 28 Then
    'MsgBox j
    Set myRange = Range(Cells(j + 1, 1), Cells(myRange.Rows.Count + myRange.Rows(1).Row - 1, 1))
    'MsgBox myRange.Address
    End If
Next j
    MsgBox "    Impossible de supprimer cette ligne.", , "            SUPPRESSION DE LIGNE"
    If MsgBox("Voulez-vous supprimer la ligne selectionée ?", vbYesNo, "     SUPPRESSION DE LIGNE") = vbYes Then
        myRange.EntireRow.Delete
    End If
End Sub
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki