Pousser un classeur au suicide ??

P

Philippe

Guest
Bonjour à tous,

je suis à la recherche d'une méthode permettant de demander à un classeur de s'auto-effacer, alors qu'il est encore ouvert bien entendu afin que la commande qu'il contient puisse s'executer.
En clair peut on pousser un classeur au suicide ???

Merci à ceux que ma demande inspirera (et aux autre qui liront ce post...=
 
@

@+Thierry

Guest
Bonsoir à Tous, et Toutes (enfin Toute sans S)

Je vois que vous vous êtes bien amusé en tout cas sur ce Fil, moi en lisant le post de Philippe de 17:30, j'ai pensé à ceci :

Sub SaveAsNewDestroyOLd()
Dim TheNewFile As String
Dim TheOldFile As String

With ThisWorkbook
TheNewFile = .Path & "\" & ActiveSheet.Range("A1") & ".xls"
TheOldFile = .FullName
.SaveAs TheNewFile
End With

Kill TheOldFile
End Sub

On sauve le Fichier avec le nom voulu (en A1), et on détruit l'ancien. Avec la méthode "SaveAs" on a plus le souci du fichier ouvert pour le Kill...

Mais sinon merci Léa pour le "ChangeFileAccess" que je n'avais pas encore utilisé... Et qui me donne des idées non pas pour "suicider" mes interfaces, mais pour les protéger en cas de manips foireuses de mes charmants Users... Quant à Magic Ti, boum !!! ça c'est vraiment pour les méchants Users !! LOL

Bon aller Excellent Week End à Tous et Toutes
@+Thierry
 
L

léa

Guest
Bonsoir à tous,

Je répète que je n'ai aucun mérite car justement moi non plus je ne connaissais pas le "ChangeFileAccess". C'était justement là que je butais et c'est en fouinant sur le Net que j'ai trouvé cette solution
Maintenant en ce qui concerne la réduction du code, Ti, en étant parti sur la solution qui consistait à faire une sauvegarde transitoire, et du fait de ne pas avoir supprimer ces quelques lignes, je n'ai pas pensé au fait que je "duplicais" ainsi la méthode

Comme quoi nous sommes tous bons et tous ensemble on fera de bonnes choses

léa
 
M

Manu70

Guest
Salut tout le monde,

Effectivement ce post attire l'attention,

J'ai moi meme une idée qui me trotte dans la tete depuis un petit moment a ce sujet la, mais encore plus tordu que toi philippe !!!
J'envisage la meme chose, mais en détruisant aussi d'autre fichier excel qui ne serait pas encore ouvert, mais qui ferais parti du meme projet.

Sachant que de base un processus ne peut se detruire si il est actif, j'avais envisagé d'utilisé un code tiers, qui aurais été généré par excel, en créant un fichier dans un des repertoires systeme totalement anodin en apparence et en sommeil et ce au premier lancement d'un des classeurs concernés. (chaques classeurs aurait le meme code interne)

Par la suite les differents classeur a leur lancement verifieraient la presence du dis fichier, sinon il le recrée automatiquement.

En cas de lancement de la procedure de sabordement, cette derniere ouvrirait tout les classeurs concerné et les rendrait vierges de tout contenue avant de les enregistré a nouveau, puis lancement du programme tiers, qui demarre par une tempo (10s environs) laissant le classeur déclencheur s'auto-fermé (apres enregistrement de cellules vides)

Tous les classeurs etant fermés le programme tiers effectue l'effacement des fichiers. FIN DES CLASSEURS !!!!

Le but d'enregistré les classeurs avec des cellules vides avant effacement, evite de pouvoir recuperer des données confidentiels avec un logiciel comme easy recovery par exemple qui peux meme recuperer des données sur un disque apres formatage (j'ai testé et récupere l'intégralité d'une partition de 10Go avec ce logiciel).

Donc idée effectivement a développé, mais pas forcement en n'utilisant que notre excellent EXCEL !!!

Bien à vous, et bon WK

Manu70
 
P

philippe

Guest
Bonsoir à tous

Donc en résumé si j'ai bien tout compris, le seul fait de mettre le classeur en lecture seule "désactive" l'interdiction de "killer" un dossier ouvert.

Encore une fois un GROS GROS merci à tous, je sens que je vais me sentir bien ici, et surtout que je vais progresser.

Bon WE à tous !!!
 
P

Philippe

Guest
Bonjour, c'est encore moi, alors après étude de vos différentes solutions et quelques test, j'ai pondu ceci, qui résoud parfaitement mon problème d'enregistrement de classeur sous un nouveau nom AVANT sa propre fermeture:

Sub renommer()
Application.DisplayAlerts = False
nom = Range("A1").Value & ".xls" ' on admet dans cet exemple que le nom de sauvagarde est stocké en A1
ActiveWorkbook.ChangeFileAccess xlReadOnly 'UN GRAND MERCI A LEA
Name (ActiveWorkbook.Name) As nom
ActiveWorkbook.Close savechanges:=True
End Sub

Cette macro fonctionne que le nom soit modifié ou nom en A1, ce qui permet de s'affranchir de la routine de détection de changement de nom, ça allège le code. Si cette méthode (fruit d'une véritable réflexion collègiale)peut être utile à quelqu'un,...,un jour...

Bon dimanche à tous.
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 900
Membres
103 404
dernier inscrit
sultan87