|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 9 ![]() |
bonjour, j'ai un classeur contenant une serie de feuilles, et ces feuilles subissent des actions par macro, j'aimerai que l'utilisateur puisse annuler l'action de la derniere macro,
je pensais ainsi faire: -sauvegarde feuille active -action macro -si annulation action alors restauration de la sauvegarde feuille active concernant la sauvegarde je ne sais pas comment faire, y a t il une fonction pour mettre en memoire la feuille active? OU suis je obligé de faire une copie sur le disk de cette feuille et si oui comment? Merci d'avance. cyril. |
|
|
00
|
|
|
#2 | |
|
Membre chevronné
![]() ![]() Inscription : avril 2003 Messages : 542 ![]() |
Citation:
En ce qui concerne le nommage de la feuille tu peux soit la préfixer ou la suffixer. Un truc du genre UNDO_COPY_Nom_de_la_feuille_d'origine. Donc si la feuille sur laquelle tu travailles est budget_2005, la copie s'appelle UNDO_COPY_budget_2005. L'inconvénient de cette méthode c'est qu'elle consomme bcp de ressources. Si ta macro travaille sur 50 feuilles, il faut autant de feuilles temporaires. Dans ce cas tu dois implémenter une solution qui enregistre le delta. C'est une solution plus sobre en ressources mais plus longue à mettre en place.
__________________
CatBull - Modérateur VB |
|
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : mai 2003 Messages : 1 188 ![]() |
C'est vrai que s'il y a beaucoup d'onglets dans le classeur, on peut enregistrer au format csv les feuilles juste avant le démarrage du traitement. Et si l'utilisateur valide le résultat, on supprime les fichiers.
Mais ça ne marche que pour des données simples. S'il y a des formules, des liens, des commentaires... Honnêtement, la solution de copie de l'onglet en mode "invisible" est beaucoup plus simple... |
|
|
00
|
|
|
#4 | ||
|
Membre chevronné
![]() Inscription : janvier 2005 Messages : 618 ![]() |
Salut,
L'idée peut être de copier la feuille avant exécution de la macro et de la rendre invisible. Pour copier la feuille active en dernière position et la cacher: Code :
Théo |
||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : mai 2003 Messages : 1 188 ![]() |
Hmmmm... Théo, ta réponse ressemble drôlement à celle de Catbull, les considérations de consommation de ressource en moins.
|
|
|
00
|
|
|
#6 | |
|
Membre chevronné
![]() Inscription : janvier 2005 Messages : 618 ![]() |
Citation:
Et je me voyais mal lui dire "Dis tu peux attendre 2 minutes que je teste et que j'envoie un message avant qu'on continue à parler du projet? Merci" Théo |
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 9 ![]() |
Merci pour cette réponse rapide! je vais mettre en place la solution la plus simple!
si cela n'est pas suffisant j'enchainerais sur la 2eme solution! Merci a tous! PS: que dois je utiliser la propriété xlVeryHidden ou la propriete Visible? |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Inscription : mai 2003 Messages : 1 188 ![]() |
(Désolé, Théo. Mais je plaisantais...)
La propriété est et tu dois mettre la valeur à xlVeryHidden (ou xlHidden). |
|
|
00
|
|
|
#9 | |
|
Membre chevronné
![]() Inscription : janvier 2005 Messages : 618 ![]() |
Citation:
C'est la propriété Visible à qui tu donnes la valeur xlVeryHidden Code :
Sheets("CetteFeuilleDoitDisparaitre").Visible = xlSheetVeryHidden Théo EDITION : J'ai corrigé le nom de la contante comme signalé par CatBull ci-dessous |
|
|
|
00
|
|
|
#10 | ||
|
Membre chevronné
![]() ![]() Inscription : avril 2003 Messages : 542 ![]() |
Citation:
__________________
CatBull - Modérateur VB |
||
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : mai 2003 Messages : 1 188 ![]() |
Ok, c'est vrai. Bon être exhaustif, les trois valeurs possibles sont:
xlSheetVisible : -1 xlSheetHidden : 0 xlSheetVeryHidden : 2 |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 9 ![]() |
Chti pb, cha marche po
ActiveSheet.Copy After:=Sheets.Count -->erreur 1004 pareil pour: Worksheets(Sheets.Count).Visible = xlSheetVeryHidden -->erreur 1004 quoi que j'ai fait de mal? |
|
|
00
|
|
|
#13 | |||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Pour
Citation:
Code :
Pas essayé Quant à ton autre pb, je regarde A+ |
|||
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 9 ![]() |
peux tu m'expliquer pourquoi ce que je fais ne marche pas et pourquoi avec i ca marcherai?
de plus je ne veux pas les cacher toutes! :o |
|
|
00
|
|
|
#15 | ||||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Bon, alors voilà :
Code :
NbFeuill = ActiveWorkbook.Worksheets.Count ce qui me fait corriger le message précédent Code :
Code :
|
||||
|
|
00
|
|
|
#16 | ||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Nos posts se sont croisés
Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com