Bonjour,
J'ai un bouton (donc une macro) qui me permet de supprimer des lignes.
Le problème est qu'en cas d'erreur, "édition/annuler" n'a aucun effet.
Est-il possible d'annuler une action consécutive à une macro ?
Merci,
Version imprimable
Bonjour,
J'ai un bouton (donc une macro) qui me permet de supprimer des lignes.
Le problème est qu'en cas d'erreur, "édition/annuler" n'a aucun effet.
Est-il possible d'annuler une action consécutive à une macro ?
Merci,
Salut,
Il faut refaire la macro inverse : c'est-à-dire insérer des lignes là où elles ont été supprimées.
Attention, si les cellules de la ligne contiennent des valeurs ou des formules, penses à les stocker dans un tableau de variable avant suppression de la ligne pour pouvoir remettre les valeurs lors de l'insertion de ligne.
;)
OUlala,
ça m'a l'air très complexe, y'a pas plus simple SVP ?
Merci
Non.
Les actions effectuées par macros ne peuvent pas être annulées via le bouton annuler ou la commande du menu édition.
Pour des cours sur le VBA en général, regarde les tutoriels d'Olivier Lebeau :
http://heureuxoli.developpez.com/
Sur le VBA Excel :
http://excel.developpez.com/cours/
Ensuite, reviens ici pour poser des questions sur ce problème d'annulation de macro.
;)
Non, si c'est dans un userform, ce n'est pas si compliqué :
Dans l'userform, deux boutons, l'un pour supprimer une ligne, l'autre pour la restaurer. Un textbox pour saisir le N° de ligne à supprimer.
Tant que tu ne sors pas de l'userform (en gros...) tu peux restaurer la dernière ligne supprimée.
Pour plusieurs ligne ça devient plus compliqué.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Dim Ligne As Variant, NoLig As Long, DerCol As Variant Sub SupprimerLigne_Click() If TextBoxLigne = "" Then Exit Sub NoLig = TextBoxLigne.Value DerCol = Split(Worksheets("feuil1").UsedRange.Address, "$")(3) Ligne = Range("A" & NoLig & ":" & DerCol & NoLig).Value Rows(NoLig).Delete Ligne = Range("A" & NoLig & ":" & DerCol & NoLig).Value End Sub Sub Restaurer_Click() If NoLig = 0 Then Exit Sub Rows(NoLig).Insert Shift:=xlDown Range("A" & NoLig & ":" & DerCol & NoLig) = Ligne NoLig = 0: DerCol = "": TextBoxLigne = "" End Sub
Si ça peut t'aider... Sinon tant pis ;)
Bonne soirée