Macro de suppression de lignes selon la sélection

  • Initiateur de la discussion Initiateur de la discussion INFINITY100
  • Date de début Date de début

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 !

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

Dernière édition:
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:
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:
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

Dernière édition:
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:
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
 
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

Dernière édition:
- 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

  • Question Question
XL 2021 Macro
Réponses
6
Affichages
246
Réponses
14
Affichages
445
Réponses
2
Affichages
140
Réponses
2
Affichages
196
Réponses
7
Affichages
597
Retour