Macro suppression dernière ligne insérée

laduche81

XLDnaute Junior
Bonjour !

J'ai créé une macro qui me permet d'insérer une ligne en conservant formules et dimension des cellulles.
j'aimerai créer une autre macro qui ferait l'inverse : supprimer la dernière ligne insérée. Or je ne trouve pas le code qui me permet de faire cela...

Voici mon code pour insérer une nouvelle ligne :
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
ActiveCell(2).Resize(1).EntireRow.Insert
ActiveCell(1).EntireRow.Copy ActiveCell(2).Resize(1).EntireRow
On Error Resume Next 'au cas où il n'y ait pas de constantes
ActiveCell(2).Resize(1).EntireRow. _
SpecialCells(xlConstants).ClearContents
End Sub


Merci par avance de votre aide,

Adrien.
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Macro suppression dernière ligne insérée

Bonjour laduche81,
Une proposition a tester:
VB:
Public x As String
Public T As Boolean
Sub test()
Application.ScreenUpdating = False
x = ActiveCell(2).Address
ActiveCell(2).Resize(1).EntireRow.Insert
ActiveCell(1).EntireRow.Copy ActiveCell(2).Resize(1).EntireRow
On Error Resume Next 'au cas où il n'y ait pas de constantes
ActiveCell(2).Resize(1).EntireRow. _
SpecialCells(xlConstants).ClearContents
T = False
End Sub
Sub supprime()
If T = True Then Exit Sub
Rows(Split(x, "$")(2)).Delete
T = True
End Sub
Cordialement
 

Efgé

XLDnaute Barbatruc
Re : Macro suppression dernière ligne insérée

Re
Ou bien :
VB:
Private x As Long
Private T As Boolean
'______________________________________________________
Sub test()
Application.ScreenUpdating = False
x = ActiveCell(2).Row
Rows(x).Insert
Rows(x - 1).Copy Rows(x)
On Error Resume Next 'au cas où il n'y ait pas de constantes
Rows(x).SpecialCells(xlConstants).ClearContents
T = False
End Sub
'___________________________________
Sub supprime()
If T = True Then Exit Sub
Rows(x).Delete
T = True
End Sub
Cordialement
 

laduche81

XLDnaute Junior
Re : Macro suppression dernière ligne insérée

Bonjour, merci beaucoup de votre aide.

Lorsque je fais tourner la macro, j'ai un message d'erreur (le même pour vos 2 propositions) :
Erreur de compilation : Attribut incorrect dans une procédure Sub ou foonction
Je vous recopie le code que j'ai rentré :

Private Sub CommandButton1_Click()


Application.ScreenUpdating = False
ActiveCell(2).Resize(1).EntireRow.Insert
ActiveCell(1).EntireRow.Copy ActiveCell(2).Resize(1).EntireRow
On Error Resume Next 'au cas où il n'y ait pas de constantes
ActiveCell(2).Resize(1).EntireRow. _
SpecialCells(xlConstants).ClearContents

End Sub

Private Sub CommandButton2_Click()

Public x As String
Public T As Boolean
Sub test()
Application.ScreenUpdating = False
x = ActiveCell(2).Address
ActiveCell(2).Resize(1).EntireRow.Insert
ActiveCell(1).EntireRow.Copy ActiveCell(2).Resize(1).EntireRow
On Error Resume Next 'au cas où il n'y ait pas de constantes
ActiveCell(2).Resize(1).EntireRow. _
SpecialCells(xlConstants).ClearContents
T = False
End Sub
Sub supprime()
If T = True Then Exit Sub
Rows(Split(x, "$")(2)).Delete
T = True
End Sub
 

Efgé

XLDnaute Barbatruc
Re : Macro suppression dernière ligne insérée

Re
Tu n'utilise pas réellement la proposition (mais cela doit être une erreur de ma part :rolleyes:):
Il faut déclarer les variables Private avant les codes :
VB:
Private x As Long
Private T As Boolean

Ensuite, il faut, dans la macro d'insertion, déclarer T as False:
VB:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
x = ActiveCell(2).Row
Rows(x).Insert
Rows(x - 1).Copy Rows(x)
On Error Resume Next
Rows(x).SpecialCells(xlConstants).ClearContents
On Error GoTo 0 'ne pas oublier de gérer l'erreur jusqu'au bout
T = False
Application.ScreenUpdating = True ' ne pas oublier de réactiver ce que l'on désactive
End Sub

Pour finir, on utilise les variables T et X lors de la suppression de la ligne:
VB:
Private Sub CommandButton2_Click()
If T = True Then Exit Sub
Rows(x).Delete
T = True
End Sub

Voir fichier joint.

Cordialement
 

Pièces jointes

  • laduche81(1).xls
    24 KB · Affichages: 50

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 508
Messages
2 089 143
Membres
104 047
dernier inscrit
bravetta