Macro VBA Excel pour annuler une autre Macro

Résolu/Fermé
Yohann1982 - 28 nov. 2009 à 20:35
 Yohann1982 - 29 nov. 2009 à 10:57
Bonjour,
Je voudrais créer deux modes grâce à deux boutons "Mode saisie" et "Mode impression".
En mode impression, je supprime les lignes vides qui existent avant mon total de bas de page.
J'utilise cette macro sous mon bouton "Mode impression".
Voir bas de page.
Je voudrais une macro sous mon bouton "Mode Saisie" qui me remette les lignes vides qui viennent d'être supprimées.
Merci d'avance

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 28/11/2009 par ygail
'
Dim myCtrl, dernLigne, I

'détermine le numéro de la dernière ligne utilisée
dernLigne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Count - 1
'désactive la mise à jour de l'écran afin d'accélérer les traitements
Application.ScreenUpdating = False

'Pour toutes les lignes en partant de la dernière
For I = dernLigne To 1 Step -1
nn = Range("b" & I).Formula 'donne à la variable nn le contenu de la
'formule. Si elle n'en contient pas nn prend la valeur null

If Left(nn, 4) = "=SUM" Then GoTo suivant
'si la formule commence par =SUM on ne supprime pas la ligne et on passe à la valeur suivante de I
'La fonction Excel CountA correspond à =NBVAL
If Application.WorksheetFunction.CountA(Range("A" & I & ":b" & I)) = 0 Then
Rows(I).Delete Shift:=xlUp
End If
suivant:
Next I
End Sub

Avez vous une idée pour annuler une macro (celle de mon exemple ou une autre) avec un bouton qui ferait la même chose que revenir en arrière (ctrl+Z)?
J'avais une piste en faisant une sauvegarde avant au début de la macro :
ActiveWorkbook.Save
ça me permettrait de récupérer le dernier état sauvegardé car la commande : Application.Undo ne permet que d'annuler une frappe mais ps l'effet d'une macro ?
A voir également:

2 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
29 nov. 2009 à 01:56
Bonjour,

Une idée simple.
Plutôt que de supprimer la ligne il est possible de la masquer par l'instruction :
Rows(I).EntireRow.Hidden = True

Les lignes masquées ne sont pas imprimées.

Ensuite pour la macro "mode saisie" il suffit de réafficher toutes les lignes masquées avec :

Cells.Select
Selection.EntireRow.Hidden = False

A+
1
Super, merci beaucoup
Yohann
0