Faire supprimer des lignes par une macro

DamDamDeo40

XLDnaute Nouveau
Bonjour à tous,

Voila, je reviens vers vous aujourd'hui pour un petit conseil.
Je m'en trouve face à un problème avec ma feuille de gestion des projets plan.

Je souhaiterai créer une macro qui aurai pour but de supprimer des lignes qui concernent un projet plan.

Aujourd'hui, j'ai une macro qui ajoute des ligne et les mets en forme.

je vous joint un fichier en pièce jointe.

Cordialement
 

Pièces jointes

  • Test.xlsm
    44.1 KB · Affichages: 67

DamDamDeo40

XLDnaute Nouveau
Re : Faire supprimer des lignes par une macro

alors, par exemple, je créer un projet avec la macro, ensuite au cours des utilisations, je souhait le supprimer car il a été valider.

1) Je souhaiterai sélectionner le projet exemple celui du client "XXX" est donc supprimer les lignes de ce projet donc toutes celles comprise dans le cadre noir.

2) Es ce que je pourrais lors de la création du projet avec la macro "Ajouter un projet", insérer une case à cocher dans la ligne fusionner grise ?
 

Jacky67

XLDnaute Barbatruc
Re : Faire supprimer des lignes par une macro

Bonjour,
Ceci basé sur la cellule sélectionnée supprime les 5 lignes suivantes à partir de la sélection.
Macro à attribuer au bouton "Suppr. un projet"
'-----------
Sub SupprimerProjet()
If MsgBox("Confirmez la suppression du projet """ & ActiveCell.Value & """ ", 292, "Confirmation") = 6 Then
Range(ActiveCell.Row & ":" & ActiveCell.Row + 5).Rows.Delete
End If
End Sub
'-------------
Aucun contrôle n'est effectué, seule la confirmation est demandé.
Salutations
JJ
 

Lone-wolf

XLDnaute Barbatruc
Re : Faire supprimer des lignes par une macro

Re

Bien, comme ceci ça marche.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A2:A65000")) Is Nothing Then
Application.ScreenUpdating = False
Range(ActiveCell.Row & ":" & ActiveCell.Row + 5).Rows.Delete
End If
End Sub
 

Jacky67

XLDnaute Barbatruc
Re : Faire supprimer des lignes par une macro

Bonsoir Lone-wolf et merci


Sans doute une histoire de cellule fusionnée
Ceci fonctionne chez moi par un double clic
'------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
If MsgBox("Confirmez la suppression du projet """ & Target(1).Value & """ ", 292, "Confirmation") = 6 Then
Range(Target.Row & ":" & Target.Row + 5).Rows.Delete
End If
End Sub
'----------------
Mais, je ne suis pas certain que ni ce code , ni ma proposition précédente soient la bonne manière d'aborder ce genre de projet.

Salutations.
JJ
 

Lone-wolf

XLDnaute Barbatruc
Re : Faire supprimer des lignes par une macro

Re Jacky

Non, je pense que ça venait de faite de ne pas avor mit if not intersect. Si il garde les 5 lignes, pas de soucis; mais si chaque tableau comporte un nombre de lignes différent, bienentendu que c'est cuit. A moins que dans une cellule il met le nombre de lignes à supprimer et au lieu de mettre 5, mettre (lignes / variable) lignes = Range("i2").

@DamDamDeo: va falloir modifier le code de mise en forme. J'ai supprimé les lignes inutiles, mais il y a aussi tout ces select qui font tourner trop longtemps la macro. Il faut peut-être ajouter 2 lignes pour chaque sélection pour que tu te retrouve avec un tableau complet sur la deuxième feuille.
 

Pièces jointes

  • Test.xlsm
    40.1 KB · Affichages: 44
Dernière édition:

DamDamDeo40

XLDnaute Nouveau
Re : Faire supprimer des lignes par une macro

Merci cela fonctionne bien avec ta solution Jacky !

Maintenant dans l'optique de pouvoir rajouter des lignes au projet, donc plus de 5 lignes, pourrait on supprimer des lignes entre deux cellules grises ?
 

DoubleZero

XLDnaute Barbatruc
Re : Faire supprimer des lignes par une macro

Bonjour à toutes et à tous,

Une autre suggestion avec le code suivant :

Code:
Option Explicit
Sub Projet_supprimer()
    If Not Selection.Offset(1, 0).Value Like "Note*" Then
        MsgBox "Pour supprimer un projet, sélectionner une cellule contenant le nom d'un client (colonne a).", vbInformation, "Attention..."    '
    Else
        Selection.Resize(6).EntireRow.Delete Shift:=xlUp
    End If
End Sub

A bientôt :)
 

Jacky67

XLDnaute Barbatruc
Re : Faire supprimer des lignes par une macro

Re..

>..., pourrait on supprimer des lignes entre deux cellules grises ?
En combinant avec le code de DoubleZero.
'---------------
Sub SupprimerProjet()
Dim x As Long
On Error GoTo fin
If Not Selection.Offset(1, 0).Value Like "Note*" Then
MsgBox "Pour supprimer un projet, sélectionner une cellule contenant le nom d'un client (colonne a).", 64, "Attention..." '
Else
x = ActiveCell.Row
Do
x = x + 1
Loop Until Cells(x, 1).Interior.Color = 14211288
x = x - ActiveCell.Row + 1
If MsgBox("Confirmez la suppression du projet """ & ActiveCell.Value & """ ", 292, "Confirmation") = 6 Then
ActiveCell.Resize(x).EntireRow.Delete
End If
End If
Exit Sub
fin:
MsgBox "Selection non valide.", 64, "Information"
End Sub
'---------------
Salutations.
JJ
 
Dernière modification par un modérateur:

Lone-wolf

XLDnaute Barbatruc
Re : Faire supprimer des lignes par une macro

Bonjour à toutes et a tous :)

@DamDamDeo: en PJ et en exemple, la macro de mise en forme. J'ai préparé le classeur avec mise en page.
 

Pièces jointes

  • Classeur1.xlsm
    21.5 KB · Affichages: 50
Dernière édition:

Discussions similaires