OVH Cloud OVH Cloud

Fonction "Lecture seul"

8 réponses
Avatar
Mario Limoges
Bonjour a tous (office 2002)

Dans le but de valider le statu de l'ouverture de mon chiffrier excel
protégé (lecture seul, lecture-écriture), j'ai intégré cette fonction puiser
du site excelabo.net/xl/

"Function LectureSeule(FileName As String) As Boolean

Dim Fs As Object, St As Integer
Set Fs = CreateObject("Scripting.FileSystemObject")
Set f = Fs.GetFile(FileName)
St = f.Attributes

If St = 1 Or St = 33 Then
LectureSeule = True
Else
LectureSeule = False
End If
End Function
"
je réalise que peut importe l'option choisie au moment de l'ouverture, au
moment de passer cette fonction la variable "St" est toujours éguale a 32.

donc au retour dans Private Sub Workbook_Open ()
la ligne "LectureSeul(ActiveWorkbook.FullName) " est toujours égale "False"

Quelqu'un peut me dire pourquoi ?

Merci à l'avance

Mario

8 réponses

Avatar
FxM
Bonsoir,

None -> 0 -> Aucun attribut
ReadOnly -> 1 -> Fichier en lecture seule (RW)
Hidden -> 2 -> Fichier caché (RW)
System -> 4 -> Fichier système (RW)
Volume -> 8 -> Étiquette de volume de lecteur de disque (R)
Directory -> 16 -> Dossier ou répertoire (R)
Archive -> 32 -> fichier modifié depuis la dernière sauvegarde (RW)
Alias -> 64 -> Lien ou raccourci (R)
Compressed -> 128 -> Fichier compressé (R)

(R) -> lecture seule
(RW) -> lecture & écriture

@+
FxM


Bonjour a tous (office 2002)

Dans le but de valider le statu de l'ouverture de mon chiffrier excel
protégé (lecture seul, lecture-écriture), j'ai intégré cette fonction puiser
du site excelabo.net/xl/

"Function LectureSeule(FileName As String) As Boolean

Dim Fs As Object, St As Integer
Set Fs = CreateObject("Scripting.FileSystemObject")
Set f = Fs.GetFile(FileName)
St = f.Attributes

If St = 1 Or St = 33 Then
LectureSeule = True
Else
LectureSeule = False
End If
End Function
"
je réalise que peut importe l'option choisie au moment de l'ouverture, au
moment de passer cette fonction la variable "St" est toujours éguale a 32.

donc au retour dans Private Sub Workbook_Open ()
la ligne "LectureSeul(ActiveWorkbook.FullName) " est toujours égale "False"

Quelqu'un peut me dire pourquoi ?

Merci à l'avance

Mario




Avatar
FxM
En complément :
* ces codes concernent les attributs d'un fichier écrit sur un disque et
non le statut du fichier à l'ouverture,
* Pour parer à d'autres éventualités, je te recommanderai de préférer un
st mod 2 = 1 à if st = ....
* t'occupes-tu du bon fichier ?
* Excel place-t-il l'attribut readonly lorsqu'il ouvre un fichier (pas sûr)
* Enfin si ton st est pair, c'est que le fichier sur disque n'est pas en
lecture seule !

@+
FxM




Bonsoir,

None -> 0 -> Aucun attribut
ReadOnly -> 1 -> Fichier en lecture seule (RW)
Hidden -> 2 -> Fichier caché (RW)
System -> 4 -> Fichier système (RW)
Volume -> 8 -> Étiquette de volume de lecteur de disque (R)
Directory -> 16 -> Dossier ou répertoire (R)
Archive -> 32 -> fichier modifié depuis la dernière sauvegarde (RW)
Alias -> 64 -> Lien ou raccourci (R)
Compressed -> 128 -> Fichier compressé (R)

(R) -> lecture seule
(RW) -> lecture & écriture

@+
FxM


Bonjour a tous (office 2002)

Dans le but de valider le statu de l'ouverture de mon chiffrier excel
protégé (lecture seul, lecture-écriture), j'ai intégré cette fonction
puiser du site excelabo.net/xl/

"Function LectureSeule(FileName As String) As Boolean

Dim Fs As Object, St As Integer
Set Fs = CreateObject("Scripting.FileSystemObject")
Set f = Fs.GetFile(FileName)
St = f.Attributes

If St = 1 Or St = 33 Then
LectureSeule = True
Else
LectureSeule = False
End If
End Function
"
je réalise que peut importe l'option choisie au moment de l'ouverture,
au moment de passer cette fonction la variable "St" est toujours
éguale a 32.

donc au retour dans Private Sub Workbook_Open ()
la ligne "LectureSeul(ActiveWorkbook.FullName) " est toujours égale
"False"

Quelqu'un peut me dire pourquoi ?

Merci à l'avance

Mario





Avatar
docm
Pour aller dans le même sens que FxM:

Sub Workbook_Open()

seule = LectureSeule(ActiveWorkbook.FullName)
seuleRecommendée = LectureSeuleRecommender(ActiveWorkbook)

End Sub

Function LectureSeule(FileName As String) As Boolean

' Vérifie si la propriété Lecture seule a été activée
' dans Windows Explorer

Dim Fs As Object, St As Integer
Set Fs = CreateObject("Scripting.FileSystemObject")
Set f = Fs.GetFile(FileName)
St = f.Attributes

If St And 1 Then
LectureSeule = True
MsgBox "Fichier protégé en lecture seule par Windows"
Else
LectureSeule = False
End If
End Function



Function LectureSeuleRecommender(AW As Workbook) As Boolean

' Vérifie si le classeur a été ouvert
' en lecture seule par Microsoft Excel.

If AW.ReadOnly Then
MsgBox "Fichier ouvert en lecture seule par Excel"
LectureSeuleRecommender = True
Else
MsgBox "Fichier non ouvert en lecture seule par Excel"
LectureSeuleRecommender = False
End If

End Function

docm


"Mario Limoges" wrote in message
news:HMXkg.37907$
Bonjour a tous (office 2002)

Dans le but de valider le statu de l'ouverture de mon chiffrier excel
protégé (lecture seul, lecture-écriture), j'ai intégré cette fonction
puiser

du site excelabo.net/xl/

"Function LectureSeule(FileName As String) As Boolean

Dim Fs As Object, St As Integer
Set Fs = CreateObject("Scripting.FileSystemObject")
Set f = Fs.GetFile(FileName)
St = f.Attributes

If St = 1 Or St = 33 Then
LectureSeule = True
Else
LectureSeule = False
End If
End Function
"
je réalise que peut importe l'option choisie au moment de l'ouverture, au
moment de passer cette fonction la variable "St" est toujours éguale a 32.

donc au retour dans Private Sub Workbook_Open ()
la ligne "LectureSeul(ActiveWorkbook.FullName) " est toujours égale
"False"


Quelqu'un peut me dire pourquoi ?

Merci à l'avance

Mario




Avatar
Mario Limoges
Et c est claire merci.
Mais ca ne m'éclaire pas sur mon intérogation ?

"FxM" a écrit dans le message de news:

Bonsoir,

None -> 0 -> Aucun attribut
ReadOnly -> 1 -> Fichier en lecture seule (RW)
Hidden -> 2 -> Fichier caché (RW)
System -> 4 -> Fichier système (RW)
Volume -> 8 -> Étiquette de volume de lecteur de disque (R)
Directory -> 16 -> Dossier ou répertoire (R)
Archive -> 32 -> fichier modifié depuis la dernière sauvegarde (RW)
Alias -> 64 -> Lien ou raccourci (R)
Compressed -> 128 -> Fichier compressé (R)

(R) -> lecture seule
(RW) -> lecture & écriture

@+
FxM


Bonjour a tous (office 2002)

Dans le but de valider le statu de l'ouverture de mon chiffrier excel
protégé (lecture seul, lecture-écriture), j'ai intégré cette fonction
puiser du site excelabo.net/xl/

"Function LectureSeule(FileName As String) As Boolean

Dim Fs As Object, St As Integer
Set Fs = CreateObject("Scripting.FileSystemObject")
Set f = Fs.GetFile(FileName)
St = f.Attributes

If St = 1 Or St = 33 Then
LectureSeule = True
Else
LectureSeule = False
End If
End Function
"
je réalise que peut importe l'option choisie au moment de l'ouverture, au
moment de passer cette fonction la variable "St" est toujours éguale a
32.

donc au retour dans Private Sub Workbook_Open ()
la ligne "LectureSeul(ActiveWorkbook.FullName) " est toujours égale
"False"

Quelqu'un peut me dire pourquoi ?

Merci à l'avance

Mario




Avatar
Mario Limoges
Un très gros merci FxM, mais ca reste très ambigue malgré tes explications

Je continu ma recherche ....

Mario

"FxM" a écrit dans le message de news:
%
En complément :
* ces codes concernent les attributs d'un fichier écrit sur un disque et
non le statut du fichier à l'ouverture,
* Pour parer à d'autres éventualités, je te recommanderai de préférer un
st mod 2 = 1 à if st = ....
* t'occupes-tu du bon fichier ?
* Excel place-t-il l'attribut readonly lorsqu'il ouvre un fichier (pas
sûr)
* Enfin si ton st est pair, c'est que le fichier sur disque n'est pas en
lecture seule !

@+
FxM




Bonsoir,

None -> 0 -> Aucun attribut
ReadOnly -> 1 -> Fichier en lecture seule (RW)
Hidden -> 2 -> Fichier caché (RW)
System -> 4 -> Fichier système (RW)
Volume -> 8 -> Étiquette de volume de lecteur de disque (R)
Directory -> 16 -> Dossier ou répertoire (R)
Archive -> 32 -> fichier modifié depuis la dernière sauvegarde (RW)
Alias -> 64 -> Lien ou raccourci (R)
Compressed -> 128 -> Fichier compressé (R)

(R) -> lecture seule
(RW) -> lecture & écriture

@+
FxM


Bonjour a tous (office 2002)

Dans le but de valider le statu de l'ouverture de mon chiffrier excel
protégé (lecture seul, lecture-écriture), j'ai intégré cette fonction
puiser du site excelabo.net/xl/

"Function LectureSeule(FileName As String) As Boolean

Dim Fs As Object, St As Integer
Set Fs = CreateObject("Scripting.FileSystemObject")
Set f = Fs.GetFile(FileName)
St = f.Attributes

If St = 1 Or St = 33 Then
LectureSeule = True
Else
LectureSeule = False
End If
End Function
"
je réalise que peut importe l'option choisie au moment de l'ouverture,
au moment de passer cette fonction la variable "St" est toujours éguale
a 32.

donc au retour dans Private Sub Workbook_Open ()
la ligne "LectureSeul(ActiveWorkbook.FullName) " est toujours égale
"False"

Quelqu'un peut me dire pourquoi ?

Merci à l'avance

Mario







Avatar
Michel Pierron
Bonjour Mario;
Pourquoi pas simplement:

Function LectureSeule(ByVal FileName As String) As Boolean
LectureSeule = GetAttr(FileName) And vbReadOnly
End Function

MP

"Mario Limoges" a écrit dans le message de
news: HMXkg.37907$
Bonjour a tous (office 2002)

Dans le but de valider le statu de l'ouverture de mon chiffrier excel
protégé (lecture seul, lecture-écriture), j'ai intégré cette fonction
puiser du site excelabo.net/xl/

"Function LectureSeule(FileName As String) As Boolean

Dim Fs As Object, St As Integer
Set Fs = CreateObject("Scripting.FileSystemObject")
Set f = Fs.GetFile(FileName)
St = f.Attributes

If St = 1 Or St = 33 Then
LectureSeule = True
Else
LectureSeule = False
End If
End Function
"
je réalise que peut importe l'option choisie au moment de l'ouverture, au
moment de passer cette fonction la variable "St" est toujours éguale a 32.

donc au retour dans Private Sub Workbook_Open ()
la ligne "LectureSeul(ActiveWorkbook.FullName) " est toujours égale
"False"

Quelqu'un peut me dire pourquoi ?

Merci à l'avance

Mario



Avatar
Mario Limoges
Bonjour Michel, merci pour la suggestion que je me suis vite empressé
d'essayer mais malheureusement même en choisissant "Ouvrir en Lecture seul"
au moment de l'ouverture une fois la feuille affiché (avec dans la barre de
titre la mention [Lecture seule]) je vais dans l'éditeur VBA et je valide le
résultat de ta fonction me retourne LectureSeule = Faux.

je me demande s'il serait possible de valider le titre de la barre de titre
ce serait peut être plus simple

Merci et Bonne fête des pères si ça s'applique

Mario

"Michel Pierron" a écrit dans le message de news:
%
Bonjour Mario;
Pourquoi pas simplement:

Function LectureSeule(ByVal FileName As String) As Boolean
LectureSeule = GetAttr(FileName) And vbReadOnly
End Function

MP

"Mario Limoges" a écrit dans le message de
news: HMXkg.37907$
Bonjour a tous (office 2002)

Dans le but de valider le statu de l'ouverture de mon chiffrier excel
protégé (lecture seul, lecture-écriture), j'ai intégré cette fonction
puiser du site excelabo.net/xl/

"Function LectureSeule(FileName As String) As Boolean

Dim Fs As Object, St As Integer
Set Fs = CreateObject("Scripting.FileSystemObject")
Set f = Fs.GetFile(FileName)
St = f.Attributes

If St = 1 Or St = 33 Then
LectureSeule = True
Else
LectureSeule = False
End If
End Function
"
je réalise que peut importe l'option choisie au moment de l'ouverture, au
moment de passer cette fonction la variable "St" est toujours éguale a
32.

donc au retour dans Private Sub Workbook_Open ()
la ligne "LectureSeul(ActiveWorkbook.FullName) " est toujours égale
"False"

Quelqu'un peut me dire pourquoi ?

Merci à l'avance

Mario







Avatar
Michel Pierron
Re Mario;
Ce comportement est normal; si tu souhaites changer l'état du fichier à la
volée lorsqu'il est ouvert, tu dois utiliser par exemple:
'Mode:= xlReadWrite
'Mode:=xlReadOnly

Application.DisplayAlerts = False
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
Application.DisplayAlerts = True

ou:
With ThisWorkbook
.Save
.ChangeFileAccess Mode:=xlReadOnly
End With

MP

"Mario Limoges" a écrit dans le message de
news: gOdlg.67$
Bonjour Michel, merci pour la suggestion que je me suis vite empressé
d'essayer mais malheureusement même en choisissant "Ouvrir en Lecture
seul" au moment de l'ouverture une fois la feuille affiché (avec dans la
barre de titre la mention [Lecture seule]) je vais dans l'éditeur VBA et
je valide le résultat de ta fonction me retourne LectureSeule = Faux.

je me demande s'il serait possible de valider le titre de la barre de
titre ce serait peut être plus simple

Merci et Bonne fête des pères si ça s'applique

Mario

"Michel Pierron" a écrit dans le message de news:
%
Bonjour Mario;
Pourquoi pas simplement:

Function LectureSeule(ByVal FileName As String) As Boolean
LectureSeule = GetAttr(FileName) And vbReadOnly
End Function

MP

"Mario Limoges" a écrit dans le message de
news: HMXkg.37907$
Bonjour a tous (office 2002)

Dans le but de valider le statu de l'ouverture de mon chiffrier excel
protégé (lecture seul, lecture-écriture), j'ai intégré cette fonction
puiser du site excelabo.net/xl/

"Function LectureSeule(FileName As String) As Boolean

Dim Fs As Object, St As Integer
Set Fs = CreateObject("Scripting.FileSystemObject")
Set f = Fs.GetFile(FileName)
St = f.Attributes

If St = 1 Or St = 33 Then
LectureSeule = True
Else
LectureSeule = False
End If
End Function
"
je réalise que peut importe l'option choisie au moment de l'ouverture,
au moment de passer cette fonction la variable "St" est toujours éguale
a 32.

donc au retour dans Private Sub Workbook_Open ()
la ligne "LectureSeul(ActiveWorkbook.FullName) " est toujours égale
"False"

Quelqu'un peut me dire pourquoi ?

Merci à l'avance

Mario