Macro de suppression de lignes selon la sélection

INFINITY100

XLDnaute Occasionnel
Bonjour à tous

Je cherche à réaliser une macro de suppression de lignes selon les cellules sélectionnées dans une de zone de colonnes

Voila je joins le fichier exemple pour être plus claire

Merci à vous par avance

Cordialement
 

Pièces jointes

  • Exemple.xlsm
    15.7 KB · Affichages: 41
  • Exemple.xlsm
    15.7 KB · Affichages: 53
  • Exemple.xlsm
    15.7 KB · Affichages: 53
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Macro de suppression de lignes selon la sélection

Bonjour à tous


Une possibilité ci-dessous
Code:
Sub DelRow()
Dim c As Range
Set c = ActiveCell
If Not Intersect(c, Range("B5:E13")) Is Nothing And Selection.Column <> 1 And Selection.Column <> 5 Then
If Selection.Rows.Count > 1 Then Exit Sub
If Application.CountA(Cells(c.Row, "B").Resize(, 4)) > 0 Then
c.EntireRow.Delete
Else
MsgBox "La ligne est vide", vbCritical, "Erreur"
End If
Else
MsgBox "La sélection est hors zone", vbCritical, "Erreur"
End If
End Sub
 
Dernière édition:

INFINITY100

XLDnaute Occasionnel
Re : Macro de suppression de lignes selon la sélection

Bonsoir Staple1600

Merci infiniment cher ami c'est exactement le résultat voulu :)

Voici au final la macro pour le partage avec une légère modif

Code:
Sub DelRow()
Dim c As Range
Set c = ActiveCell
If Not Intersect(c, Range("B5:E100")) Is Nothing And Selection.Column <> 1 And Selection.Column <> 5 Then
If Selection.Rows.Count > 1 Then
MsgBox "Vous ne pouvez pas supprimer deux lignes à la fois !", vbCritical, "Suppression impossible"
Exit Sub
End If
If Application.CountA(Cells(c.Row, "B").Resize(, 4)) > 0 Then
  If MsgBox("Voulez-vous vraiment supprimer l'opération attribuée à (" & ActiveCell & ") ?", vbYesNo, "Confirmation") = vbYes Then
    c.EntireRow.Delete
  End If
Else
MsgBox "Vous ne pouvez pas supprimer une ligne vide !", vbCritical, "Suppression impossible"
End If
Else
MsgBox "Vous ne pouvez pas supprimer cette ligne car votre sélection est hors zone de suppression", vbCritical, "Suppression impossible"
End If
End Sub
 
Dernière édition:

INFINITY100

XLDnaute Occasionnel
Re : Macro de suppression de lignes selon la sélection [Résolu]

Bien vu Staple1600 je ne sais pas comment pk j'ai touché à cette valeur sans doute faute d’inattention :) au final voici le fichier

Merci l'ami
 

Pièces jointes

  • Exemple_Final.xlsm
    17.8 KB · Affichages: 36
  • Exemple_Final.xlsm
    17.8 KB · Affichages: 40
  • Exemple_Final.xlsm
    17.8 KB · Affichages: 42
Dernière édition:

INFINITY100

XLDnaute Occasionnel
Re : Macro de suppression de lignes selon la sélection [Résolu]

Bonsoir Staple1600 et à tout le membres

Voila je reviens sur la macro car je veux lui ajouter une condition mais j'arrive pas le faire tout seul en effet je voudrai lui ajouter une condition qui se résume comme suit :

Si c'est la dernière ligne qu'on supprime qui est forcément (B5:E5) alors au lieu de .Delete ça sera .Clear

Merci à tous par avance

Cordialement
 
Dernière édition:

INFINITY100

XLDnaute Occasionnel
Re : Macro de suppression de lignes selon la sélection

Bonjour staple1600, grisan29

Oui c'est la même question étant donnée notre ami staple1600 est absent j'ai posé la question ailleurs car c'est urgent :), mais bref le seul fil qu'on m'a donné c'est de tester le numéro de la ligne avant l'action c.EntireRow.Delete si c'est la dernière alors c'est (c.EntireRow.Clear) sinon c'est (c.EntireRow.Delete)

Et c'est là que je me coince étant nul en VBA je ne sais pas comment imposer ce test dans la macro

Merci à vous tous
 

INFINITY100

XLDnaute Occasionnel
Re : Macro de suppression de lignes selon la sélection

Bonjour grisan29

Oui l'idée je l'est compris mais ma recherche c'est comment l'ajouter à la macro ci-dessous pour avoir ceci : Si on supprime une ligne quand il y plusieurs données c'est (c.EntireRow.Delete) mais si c'est la dernière ligne de données qu'on supprime alors c'est (c.EntireRow.Clear)

Code:
Sub DelRow()
Dim c As Range
Set c = ActiveCell
If Not Intersect(c, Range("B5:E100")) Is Nothing And Selection.Column <> 1 And Selection.Column <> 5 Then
If Selection.Rows.Count > 1 Then
MsgBox "Vous ne pouvez pas supprimer deux lignes à la fois !", vbCritical, "Suppression impossible"
Exit Sub
End If
If Application.CountA(Cells(c.Row, "B").Resize(, 4)) > 0 Then
  If MsgBox("Voulez-vous vraiment supprimer l'opération attribuée à (" & ActiveCell & ") ?", vbYesNo, "Confirmation") = vbYes Then
    c.EntireRow.Delete
  End If
Else
MsgBox "Vous ne pouvez pas supprimer une ligne vide !", vbCritical, "Suppression impossible"
End If
Else
MsgBox "Vous ne pouvez pas supprimer cette ligne car votre sélection est hors zone de suppression", vbCritical, "Suppression impossible"
End If
End Sub

Merci

Voir pièce jointe
 

Pièces jointes

  • Exemple_Final.xlsm
    17.7 KB · Affichages: 19
  • Exemple_Final.xlsm
    17.7 KB · Affichages: 32
  • Exemple_Final.xlsm
    17.7 KB · Affichages: 22
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou