Comment enlever l'attribut lecture seule d'un repertoire

Signaler
Messages postés
327
Date d'inscription
mardi 8 octobre 2002
Statut
Membre
Dernière intervention
6 octobre 2010
-
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
-
Comment enlever l'attribut lecture seule d'un repertoire (pas d'un fichier)

Merci

12 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
23
Re, Julien...
Tu te compliques la vie là ...
Tiens, je viens d'essayer et celà fonctionne sans problème :

Private Sub Command1_Click()
 SetAttr "d:\monoutil", vbReadOnly
End Sub
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
23
T'as pas fait la sieste, hein ? (moi oui...)

en appliquant tout simplement ce que j'ai cité plus haut :

Private Sub Command2_Click()
 SetAttr "d:\monoutil", vbNormal
End Sub

Essayé quand même (pour le doute) et fonctionnant fort bien (vbNormal = 0, d'ailleurs)
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
23
en utilisant les fonctions GetAttr et SetAttr (fort bien et fort simplement exposées dans ton aide en ligne  !)
A condition que tu en aies les droits (administrateur ou utilisateur autorisé)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
48
Salut,
C'est ce que voulais proposer mais avec un simple test:
- Création de C:\Test
- Mise en lecture seule
Call VBA.SetAttr("C:\Test", vbDirectory)

Ca me balance une erreur 5 Argument ou appel de procédure incorrect....

(je poste aussi pour connaître la réponse)

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
23
Salut Julien,

Que vient faire là-dedans l'argument VbDirectoty ?

de mon aide en ligne (en anglais, pardonnez-moi) :

Sets attribute information for a file.



Syntax



SetAttr pathname, attributes



The SetAttr statement syntax has these named arguments:



Part Description
pathname Required. String expression that specifies a file name—may include directory or folder, and drive.
attributes Required. Constant or numeric expression, whose sum specifies file attributes.
Settings



The attributes argument settings are:



Constant Value Description
  
vbNormal 0 Normal (default)
vbReadOnly 1 Read-only
vbHidden 2 Hidden
vbSystem 4 System file
vbArchive 32 File has changed since last backup
Note   These constants are specified by Visual Basic for Applications. The names can be used anywhere in your code in place of the actual values.



Remarks




A run-time error occurs if you try to set the attributes of an open file.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
48
Salut,
La question posée est enlever l'attribut lecture seule d'un repertoire et non d'un fichier... d'ou mon exmple foirauex.

En revanche celui ci semble fonctionner.
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
Fso.GetFolder("C:\Test").Attributes = Directory Or ReadOnly 'met la lecture seule
Fso.GetFolder("C:\Test").Attributes = Directory 'Enlève lecture seule
Set Fso = Nothing
, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
48
Re,
Je suis d'accord que ton code le met mais comment l'enlever? ou alors je ne comprend pas comment fonctionne SetAttr (c'est fortement possible aussi)

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
48
Re,
Call SetAttr("C:\Test", 0)

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
Salut,

dans l'explorateur d'objets (F2), cherchez VbFileAttribute, vous verrez les membres de cette Enumération.

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
25
SetAttr n'est pas très performant,
il ne connait pas les attributs étendus et risque de les supprimer
if vaut mieux utiliser GetFileAttributes et SetFileAttributes et jouer avec les fonctions logiques pour ajouter ou enlever des attributs.

Daniel
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
23
Bonjour Daniel,

Regarde ma toute première réponse : se servir de GetAttr et SetAttr...

Qui font exactement ce que font GetFileAttributes et SetFileAttributes

Elles fonctionnent par CheckSum

essaye :

Private Sub Command1_Click()
   f = "d:\monoutil"
   SetAttr f, vbNormal
   MsgBox GetAttr(f) '====>> 16
   SetAttr f, vbHidden
   MsgBox GetAttr(f) ' ====>>18
   SetAttr f, vbNormal
   MsgBox GetAttr(f) '====>>16
   SetAttr f, vbHidden Or vbReadOnly
   MsgBox GetAttr(f) '====>>19
   SetAttr f, vbNormal
   MsgBox GetAttr(f) '====>>16
   SetAttr f, vbSystem Or vbHidden Or vbReadOnly
   MsgBox GetAttr(f) '====>> 23
End Sub

et tu verras comment ne changer, si tu le souhaites, qu'un attribut parmi d'autres.
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
25
mais pour les attributs étendus ça ne marche pas
temporaire, compressé, index,etc .. et le 128 (normal) il ne connait pas
j'ai dû changer par les Api parce que GetAttr() renvoit bien le 8192 mais SetAttr() fait une erreur

Daniel