Comment enlever l'attribut lecture seule d'un repertoire

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

Merci
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
1
Merci
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

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 126 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
1
Merci
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)

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 126 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
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é)
Commenter la réponse de jmfmarques
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
44
0
Merci
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
Commenter la réponse de jrivet
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
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.
Commenter la réponse de jmfmarques
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
44
0
Merci
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
Commenter la réponse de jrivet
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
44
0
Merci
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
Commenter la réponse de jrivet
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
44
0
Merci
Re,
Call SetAttr("C:\Test", 0)

@+: Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet
Messages postés
6789
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
0
Merci
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>
Commenter la réponse de mortalino
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
31 mars 2015
16
0
Merci
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
Commenter la réponse de Gobillot
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
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.
Commenter la réponse de jmfmarques
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
31 mars 2015
16
0
Merci
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
Commenter la réponse de Gobillot