De: Laurent longre Objet: Re: fichier en lecture seule Date : vendredi 16 juillet 1999 10:51 Stéphane Royer a écrit: > > C'est peut être un égal qu'il faut > (16 attribut pour répertoire, 1 lecture seule) Non. Les attributs de fichiers sont des flags sur 5 bits. Le bit indiquant si le fichier (ou répertoire) est en lecture seule est le bit 2. Un fichier en lecture seule peut être par exemple en même temps masqué, système ou archive. Ainsi GetAttr appliqué sur un fichier / répertoire en lecture seule peut renvoyer entre autres valeurs 3, 7, 33 ou n'importe quelle combinaison des bits 2, 3, 4 et 5 (cad 16 valeurs différentes en tout). Pour isoler le bit lecture seule et donc être sûr qu'il s'agit d'un fichier / répertoire masqué, indépendamment de l'état des autres bits, il ne faut donc pas tester s'il est égal à 1, ce qui échouerait dans la plupart des cas, les fichiers ayant en principe l'attribut Archive, donc 1 + 32 = 33 s'ils sont en lecture seule. Il faut appliquer un masque avec vbReadOnly. donc un 'And 1' (vbReadOnly = 1). Les opérateurs logiques And Or, Not, Xor etc. de VBA *sont* des opérateurs bit à bit (cf l'aide en ligne). Laurent > j'ai pas le tps de vérifier tt de suite > HAMARD Stephane a écrit dans le message ... > >Pardonnez ma curiosité mais à quoi sert le "And 1" de la ligne de code > > > >If GetAttr("C:\Temp\Test.xls") And 1 Then... ?? > > > >Merci. > > > >> -----Message d'origine----- > >> De: Laurent longre [mailto:longre@wanadoo.fr] > >> Publié à : Friday, July 16, 1999 2:12 AM > >> Publié dans: excel > >> Conversation: fichier en lecture seule > >> Objet: Re: fichier en lecture seule > >> > >> > >> > >> Pour tester si le fichier "C:\Temp\Zaza" est en lecture seule : > >> > >> If GetAttr("C:\Temp\Test.xls") And 1 Then... > >> > >> Pour supprimer le fichier s'il n'est pas en lecture seule : > >> > >> If Not GetAttr("C:\Temp\Zaza.xls") And 1 Then Kill "C:\Temp\Zaza.xls" > >> > >> Plus simplement, il suffit que tu mettes un 'On Error Resume > >> Next' avant > >> les instructions Kill. Si pour n'importe quelle raison (lecture seule, > >> fichier déjà ouvert, fichier inexistant...) la suppression est > >> impossible, le fichier ne sera pas supprimé et VBA continuera > >> l'exécution de la macro. > >> > >> Pardon Zaza !!!! > >> > >> De toute façon, tu n'es certainement pas en lecture seule... > >> > >> Laurent > >> > >> > =?iso-8859-1?Q?St=E9phane_Royer?= a écrit : > >> > > >> > comment déterminer si un fichier est en lecture seule ou > >> utiliser par > >> > une autre application, je travaille notamment sur une macro pour > >> > supprimer le ocntenu d'un répertoire, comme c'est plutôt > >> dangereux, je > >> > veux être sûr. > >> > > >> > Pouvez vous m'éclairer > >> > merci d'avance > >> > > >> > stéphane > >> > >