Macro suppression dernière ligne insérée

  • Initiateur de la discussion Initiateur de la discussion laduche81
  • 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 !

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:
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
 
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
 
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
 
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 🙄):
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

- 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

Réponses
7
Affichages
163
Réponses
9
Affichages
580
Retour