Comment enlever l'attribut lecture seule d'un repertoire

cs_globule Messages postés 327 Date d'inscription mardi 8 octobre 2002 Statut Membre Dernière intervention 6 octobre 2010 - 7 mars 2007 à 15:12
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 8 mars 2007 à 23:05
Comment enlever l'attribut lecture seule d'un repertoire (pas d'un fichier)

Merci

12 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 mars 2007 à 15:47
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
1
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 mars 2007 à 16:00
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)
1
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 mars 2007 à 15:22
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é)
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
7 mars 2007 à 15:33
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 mars 2007 à 15:39
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.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
7 mars 2007 à 15:43
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
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
7 mars 2007 à 15:53
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
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
7 mars 2007 à 15:55
Re,
Call SetAttr("C:\Test", 0)

@+: Ju£i?n
Pensez: Réponse acceptée
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 mars 2007 à 22:46
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>
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
8 mars 2007 à 01:54
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
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 mars 2007 à 08:44
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.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
8 mars 2007 à 23:05
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
0
Rejoignez-nous