Verrouiller un fichier dans Windows

GOTOJEFE Messages postés 11 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 22 décembre 2004 - 21 déc. 2004 à 19:22
BIG_BOSS_001 Messages postés 75 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 30 novembre 2005 - 22 déc. 2004 à 10:12
Bonjour
Je voudrais savoir si il y existe en VBA une possibilte d'interdir la suppression d'un fichier.
Merci
Goto_JC

4 réponses

BIG_BOSS_001 Messages postés 75 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 30 novembre 2005
21 déc. 2004 à 21:57
Salut,
Il suffit d'ouvrir le fichier à l'aide de l'objet fso

Code:
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\monfichier.txt")

Tu ne dois pas libéré les objets et finir ta procédure !

BIG_BOSS
0
GOTOJEFE Messages postés 11 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 22 décembre 2004
22 déc. 2004 à 09:20
Merci pour ta reponse

J'ai fait le test suivant

Sub Test_Verrou_1()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("T:\Projet\Projet 1\Valide\C5689.txt", 8)
End Sub

Mais j'arrive tout de meme a supprimer le fichier !!

Mon probleme est la suivante:

Je dispose de 3 repertoires
Un repertoire de travail (Travail)
Un repertoire des fichiers valides (Valide)
Un repertoire des Anciens fichiers (Old)

En VBA j'arrive a deplacer les fichiers d'un repertoire a l'autre
Ce que je veux en plus c'est de pouvoir interdir la suppression d'un fichier dans les repertoires "Valide" et "Old" directement de l'explorateur Windows.

Je travail en reseau
Il est peut etre possible de configurer les reperoires avec des droits de lecture et d'ecriture mais pas de suppression pour les menbres du reseau

Mais le question suivante va etre comment faire pour modifier en VBA les droits d'un utilisateur afin qu'il puisse suprimer un fichier par l'intermediare de la Macro VBA

Je ne dispose pas du Logiciel Visual Basic
Toute mes Macro sont faites depuis Autocad (80% et Excel et peut etre par la suite Word)

Je sais que ca fait beaucoup mais si tu connait quelqu'ub qui peut m'apporter un elment de reponse ce serait sympa

Merci

Goto_JC
0
BIG_BOSS_001 Messages postés 75 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 30 novembre 2005
22 déc. 2004 à 10:07
"Tu ne dois pas libéré les objets et finir ta procédure !"

Ce qui veut dire que tu ne dois pas finir directement avec END SUB

Exemple:
Sub fichier()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\monfichier.txt")
Do
' Rien
Loop
End Sub

Le problème c'est que sa consomme toute la puissance du processeur ! (100% bien que ça fonctionne parfaitement)

Donc il faut faire une pause.

Pour déclarer cette pause.
Au tout début du module, écrit ceci:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Maintenant, tu pourras utiliser la procédure Sleep pour marquer une pause.

Ce qui donne le code suivant:

Sub fichier()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\monfichier.txt")
Do
Sleep (1000) ' 1 seconde
Loop

PS :
Je ne crois pas qu'en VBA, tu puisses changer les autorisations.

BIG_BOSS
0
BIG_BOSS_001 Messages postés 75 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 30 novembre 2005
22 déc. 2004 à 10:12
J'ai oublié de te préciser, pour quitter la procédure de pause.
Il faut utiliser la boucle FOR.

Exemple:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub fichier()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\monfichier.txt")
For i = 1 To 500 ' Pause 1 seconde 500 fois.
Sleep (1000)
Next
file.Close
Set file = Nothing
Set fso = Nothing
' Le fichier redevient supprimable !
End Sub

BIG_BOSS
0
Rejoignez-nous