XL 2010 auto destruction d'un fichier a une date précise pour un fichier .xltm

sebbbbb

XLDnaute Impliqué
Bonjour

je souhaiterai qu'un code d'auto destruction d'un fichier se lance à l'ouverture pour un fichier a une date bien précise (pour éviter que le fichier soit utilisé à l'extérieur de l'entreprise par ancien stagiaire ou ancien collègues).

j'ai bien trouvé le code ci-dessous :

1600610349626.png




mais lors de l'enregistrement j'ai toujours un message d'erreur qui s'affiche à l'ouverture (voir ci-dessous)

1600610112781.png


merci a vous par avance

seb
 

Pièces jointes

  • 1600610193700.png
    1600610193700.png
    235.4 KB · Affichages: 41

sebbbbb

XLDnaute Impliqué
Bonjour Soan

désolé pour réponse tardive ; déplacement toute la semaine.

Comme je le disais ce n'est pas un userform qui s'affiche mais un msgbox. y a til moyen de le schinté pour éviter qu'il bloque la macro de destruction ? mais seulement si la date fatidique est arrivé.

avant j'aimerai garde ce msgbox en affichage avant le fermeture du fichier

merci a vous

seb
 

soan

XLDnaute Barbatruc
Inactif
Bonjour sebbbbb,

Tu as écrit : « Y a-t-il un moyen d'éviter que le MsgBox bloque la macro de destruction ? »
et : « mais seulement si la date fatidique est arrivée. »

1) Réponse par rapport à la date fatidique : de toute façon, si la date fatidique n'est
pas atteinte ou dépassée, la sub AutoDestroy() ne se déclenchera pas, donc il ne
pourra pas y avoir d'interférences entre le MsgBox et la sub AutoDestroy().

2) Réponse par rapport au blocage : je vois mal comment le MsgBox pourrait bloquer
la sub AutoDestroy(), puisque cette sub AutoDestroy() se déclenche en premier, dès
l'ouverture du fichier ; cela si l'appel de AutoDestroy() est dans Workbook_Open() ;
ou alors, aurais-tu choisi la méthode plus perverse de mettre l'appel de AutoDestroy()
dans Workbook_BeforeClose() ? ;) note que dans _BeforeClose() ça sert seulement
si tu veux être méchant et saboter le travail de l'utilisateur, celui du jour d'ouverture
du fichier (et qui sera le jour de la Date d'Expiration ... ou un peu après s'il n'a pas
ouvert le fichier ce jour-là) ; sinon, je ne vois pas l'intérêt de placer l'appel de la sub
AutoDestroy() dans Workbook_BeforeClose() plutôt que dans Workbook_Open() ;
ceci pour dire que tu pourrais déplacer l'appel d'AutoDestroy() du _BeforeClose()
dans le _Open(), et ainsi, il n'y aura plus d'interférence possible avec le MsgBox
puisque AutoDestroy() se déclenche en premier à l'ouverture du fichier, et ferme
le fichier (ou le détruit, selon ton choix ; mais je n'ai jamais essayé de faire une
autodestruction du fichier en cours, et cela est peut-être impossible : Excel et / ou
Windows pourraient râler et avertir qu'il est impossible de supprimer un fichier
en cours d'utilisation ; il te faudrait l'avis d'un autre intervenant que moi, qui
serait plus calé sur ce genre de choses).


3) Si tu as effectivement placé l'appel de la sub AutoDestroy() dans _BeforeClose(),
alors d'évidence, le code de _BeforeClose() ne se déclenchera qu'à la fermeture
du classeur Excel ; donc idem pour la sub AutoDestroy() puisque son appel est
fait dedans ; aussi, là encore, je vois mal comment il peut y avoir une interférence
entre le MsgBox (qui se déclenche lors de la session de travail sur le classeur Excel)
et la sub AutoDestroy() (qui ne se déclenche que suite à la fermeture du classeur)
;
disons que si vraiment ça pose problème (même si je ne vois pas comment), alors
en dernier recours, je te propose de mettre un test devant l'instruction d'affichage
du MsgBox (comme je te l'avais déjà indiqué dans mon post #21) :


If Date < DateExpiration Then MsgBox "..."

Pour cette demande de ton post #31, je n'ai rien d'autre à proposer ; peut-être
qu'un autre intervenant aura une meilleure idée là-dessus ? :)


soan
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir se5b, (suis fatigué de mettre 5 b à chaque fois, lollllll ! :p)

(mais si tu tiens absolument à conserver ta marque seb de cocotte-minute,
je veux bien inverser, et mettre seb5 ! :D)


alors, voyons voir ; je te propose de faire un « Enregistrer sous », en utilisant
ce type de fichier : « Modèle Excel (prenant en charge les macros) »

bon, ça, c'était pour la théorie ; pour la pratique, et pour le faire en VBA,
je te laisse faire : à toi l'honneur ! ;)


-----------------------------------------------------------------------------------------

Ajout : pour éviter que ton avion se crashe brutalement sur la piste, et ainsi éviter
au pauvre fichier qui s'était égaré sur le tarmac de se faire malencontreusement
écraser par le dernier représentant du vol supersonique (= le Concorde), je te
suggère de mettre en route toutes les alertes de l'aérodrome ; mais pour éviter
tout malentendu entre les pilotes du Concorde et les agents du contrôle aérien,
je te suggère de mettre en veille les alertes avec DisplayAlerts = False ; ce sera
à rétablir après l'atterrissage : DisplayAlerts = True


soan
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonjour
SEB(XXXXX)
tu joue avec le feu a triturer un xltm
un xltm c'est un fichier modèle
tu l'ouvre et c'est une copie qui s'ouvre jamais lui
point barre ;)

il est alors facile qu'il s'auto supprime a une date précise à condition d'avoir son chemin complet en dur dans le code mais là encore ça risque d’être coton au cas ou tu le change de place

mais bon je le redis c'est ABSOLUMENT PAS une bonne idée
une simple tache Windows programmée l'ors de la première ouverture
cette tache exécutera la suppression
et ton xltm tu le laisse tranquille
les taches Windows peuvent se programmer par vba
et surtout a minima le code obfusqué
celui qui tenterais de tricher en bloquant vba n'aurait que la planche du xltm en gros comme un xlsx
ce qui n'a plus de sens si le moteur de ton xltm est du vba
 

Discussions similaires

Réponses
5
Affichages
412
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 161
Messages
2 085 855
Membres
103 005
dernier inscrit
gilles.hery