Suppression du fichier en cours d'utilisation

Bonjour a tous,

J'ai créé un fichier Excel sous forme de formulaire pour mon entreprise qui est utilisé quotidiennement.

Le principe est simple : l'utilisateur remplit son formulaire, coches des cases OK, NOK ou autre pour différentes consignes.

en fin de formulaire : le fichier génère un PDF et enregistre une copie de l'Excel sur le réseau de mon entreprise. Un petit script .bat est généré pour supprimer le fichier en cours d'utilisation 3 sec après sa fermeture. jusqu'ici tout allait bien

Le bémol est qu'avec la migration sur W11 le service informatique à restreint la génération de tout exécutable donc mon .bat ne fonctionne plus. :(

Avez vous une idée de comment je pourrais faire ?

(j'ai déjà essayé plusieurs choses notamment le lancement d'une macro sur un autre fichier pour supprimer le fichier "source" mais l'exécution de la macro s'arrête a la fermeture du fichier source)

Merci d'avance pour votre intérêt et vos réflexions

le script :

Dim cheminFichier As String
Dim cheminBatch As String
Dim fichierBatch As Integer

'Obtenir le chemin complet du fichier Excel actuel
cheminFichier = ThisWorkbook.FullName

' Créer le chemin pour le fichier bat temporaire
cheminBatch = Environ("TEMP") & "\supprime_fichier.bat"

' Créer le script bat
fichierBatch = FreeFile
Open cheminBatch For Output As #fichierBatch
Print #fichierBatch, "timeout /t 3 > nul" ' Attente de 3 secondes pour s'assurer que le fichier est fermé
Print #fichierBatch, "del """ & cheminFichier & """"
Print #fichierBatch, "exit"
Close #fichierBatch

' Lancer le script batch
Shell cheminBatch

' Fermer le fichier Excel
ThisWorkbook.Close

Bonjour,

Je suis un peu confus par le mode de fonctionnement… Pourquoi supprimer absolument ce "template" ? Vous pourriez depuis Excel faire un Export automatique en PDF dans le dossier que vous voulez, et ensuite fermer le template sans enregistrer les modifications, ou même encore mieux, après le passage d'une macro de RAZ une fois le PDF créé.

Du coup en faisant comme ça je ne vois pas pourquoi on supprimerait le fichier formulaire.

Bon après, pour supprimer un fichier via VBA, vous n'avez pas besoin de shell. Vous avez l'instruction Kill statement (VBA) | Microsoft Learn qui permet de supprimer un fichier donné.

Par exemple

Kill "C:\Users\XXX\AppData\Local\Temp\exemple.txt"

Donc si vous pouviez clarifier le pourquoi de la suppression nécessaire du formulaire, autrement la 1e solution me semble un peu plus simple que d'avoir un classeur qui en supprime un autre (le kill ne fonctionnera pas sur le classeur appelant bien évidemment).

Bonjour Saboh12617,

Le fichier se trouve sur le SharePoint avec des mise a jour régulière des templates, le fichier regroupe les différents templates et supprime les onglets (templates) non sélectionnés. Quand l'utilisateur télécharge le fichier, sélectionne son formulaire et le remplie, pour avoir une version a jour il se doit de retélécharger la dernière version. je supprime donc le fichier pour "forcer" l'utilisateur à utiliser une version à jour.

l'instruction Kill ne fonctionne pas sur le fichier en cours d'utilisation. Cependant en fouillant sur le forum j'ai trouver la solution (passer en lecture pour suppression) :

Sub KillMe()
  With ThisWorkbook
    If Len(Dir(.FullName)) Then
      .Saved = True
      On Error Resume Next
      .ChangeFileAccess Mode:=xlReadOnly
      On Error GoTo 0
      SetAttr Pathname:=.FullName, Attributes:=vbNormal
      Kill .FullName
      .Close SaveChanges:=False
    End If
  End With
End Sub

merci de votre intérêt, bonne journée a tous

Ah oui d'accord je comprends mieux. Effectivement c'est malin pour garder le fichier à jour pour tout le monde.

Je vois que vous etes débrouillard, c'est top. N'hésitez pas à clôturer le fil en sélectionnant votre dernier message puisqu'il contient la solution complète si le problème est résolu.

Bienvenue 😉 et bonne journée.

Rechercher des sujets similaires à "suppression fichier cours utilisation"