Microsoft 365 Annuler un ClearContents

Metallicoco

XLDnaute Nouveau
Bonjour, j'aurais une question simple :

J'ai une petite macro qui efface les données d'un tableau avec ClearContents.
J'aurais aimé savoir s'il existe la possibilité d'annuler l'effacement en cas d'erreur pour récuperer les données effacées ?

Je vous remercie.

Le petit code de l'effacement

Sub Efface_2_E_TOR()
' Efface entrees tableau 2
Range("B76") = 0
Range("D77:G140").ClearContents
Range("D77").Select
End Sub
 
Solution
Bonjour
la solution est simple
il suffit que cette action de vider ton tableau soit dans le stack du undo
pour cela on fait simple
on le fait avec un wscript.shell.sendkeys "{DEL}"
c'est comme si tu l'avait fait à la main et donc tu l'a dans le stack undo
terminé
VB:
Sub efface()
[A1:D5].Select ' adapte  l'address de ta plage ici
CreateObject("wscript.shell").SendKeys ("{DEL}")
End Sub

Sub undo()
Application.undo
End Sub

piga25

XLDnaute Barbatruc
Bonjour à tous,
Peut être une piste avec cela:
VB:
Sub Macro1()

Dim toto As String, rangesave, lafeuille As Worksheet
 
 Set lafeuille = Sheets("Feuil1")
 With lafeuille
   rangesave = .UsedRange.Value
   RFormule = .UsedRange.Formula
   RnberFormat = .UsedRange.NumberFormat
  
   toto = .UsedRange.Address
   MsgBox "effacement des cellules des ligne  " & toto ' je le laisse pour toi... efface cette instruction ensuite
 
   .Rows("5:15").ClearContents 'ou Delete
   MsgBox "regarde ta feuille"
   Application.ScreenUpdating = False
   .Range(toto).Value = rangesave
   .Range(toto).Formula = RFormule
   .Range(toto).NumberFormat = RnberFormat
   Application.ScreenUpdating = True
   MsgBox "regarde ta feuille"
 End With

End Sub
 

Pièces jointes

  • Efface puis retour.xlsm
    22.9 KB · Affichages: 0

patricktoulon

XLDnaute Barbatruc
Bonjour
la solution est simple
il suffit que cette action de vider ton tableau soit dans le stack du undo
pour cela on fait simple
on le fait avec un wscript.shell.sendkeys "{DEL}"
c'est comme si tu l'avait fait à la main et donc tu l'a dans le stack undo
terminé
VB:
Sub efface()
[A1:D5].Select ' adapte  l'address de ta plage ici
CreateObject("wscript.shell").SendKeys ("{DEL}")
End Sub

Sub undo()
Application.undo
End Sub
 

Discussions similaires

Réponses
6
Affichages
460

Statistiques des forums

Discussions
314 698
Messages
2 112 016
Membres
111 396
dernier inscrit
Baax