Tester si fichier lecture seule ou non

Résolu
cbr600fs Messages postés 14 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 20 février 2006 - 19 oct. 2005 à 15:32
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 - 20 oct. 2005 à 15:08
Bonjour,

Je suis débutante et je cherche à tester via vba excel si un fichier est en lecture seule ou non. J'ai donc cherché sur le net et j'ai trouvé le code suivant :

Sub vérifier_si_fichier_lecture_seule()

Dim Fs As Object, St As Integer
Set Fs = CreateObject("Scripting.FileSystemObject")
Set F = Fs.GetFile("C:\toto.xls")

St = F.Attributes

If St 1 Or St 33 Then
LectureSeule = True
MsgBox "lecture seule"
Else
LectureSeule = False
MsgBox "pas de lecture seule"

End If

End Sub

et je ne comprend pas cela ne fonctionne pas.

Quelqu'un pourrait il m'aider ?

Merci
Christelle
A voir également:

13 réponses

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
19 oct. 2005 à 15:37
Bizarre....
Ton code marche parfaitement chez moi....
3
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
19 oct. 2005 à 15:45
Essais cette petite fonction


Sub Attribut_Fichier(Fichier As String)


Dim sFileAttrib As Long
sFileAttrib = GetAttr(Fichier)


If (sFileAttrib And vbReadOnly) = vbReadOnly Then
MsgBox "le fichier " & Fichier & " est en lecture seule"
Else
MsgBox "le fichier " & Fichier & " n'est pas en lecture seule"
End If

End Sub

Utilisation : Attribut_Fichier ("ton_fichier")


Si la réponse te conviens merci de l'accepter
3
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
19 oct. 2005 à 18:07
Je crois que c'est le ; qui délimite les adresses mail quand il y en a plusieurs
Alors test ceci est dis moi...
MonMessage.To = CStr(Range("A1")) & ";" & CStr(Range("A2"))


Si la réponse te conviens merci de l'accepter
3
cbr600fs Messages postés 14 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 20 février 2006 2
19 oct. 2005 à 15:51
Bonjour,

Chez moi il ne fonctionne pas. Du coup j'ai trouvé un autre code qui lui à l'air de fonctionner :

If ActiveWorkbook.ReadOnly Then
MsgBox "Le fichier est en cours d'utilisation"
Else
MsgBox "Fichier en écriture"
End If

Dis moi je vais abuser un peu mais j'ai un soucis avec un autre type de code, plus axé sur OUTLOOK. Voilà je voudrai envoyer un message avec pièce jointe à plusieurs utilisateurs dont je récupére les adresses email de listes déroulantes dans une feuille de calcul. Je n'arrive pas à lui indiquer de l'envoyer à plusieurs personnes en même temps (dans un même message Outlook)

Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)

MonMessage.To = range("A1").value, range("A2").value
MonMessage.Cc = range("A3").value
MonMessage.Bcc = range("A4").value
MonMessage.Subject = "Test Macro VBA"
MonMessage.body = "Essai envoi email en auto"
MonMessage.Attachments.Add "c:\toto.xls
MonMessage.send

Set MonOutlook = Nothing

si je remplace range("A3").value par l'adresse du destinataire "toto@email.fr;toto2@email.fr" cela fonctionne.
je comprend pas.
As tu une idée ?

Merci pour ton aide
Christelle
1

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

Posez votre question
cbr600fs Messages postés 14 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 20 février 2006 2
19 oct. 2005 à 15:54
merci pour le code du fichier en lecture seule, cela fonctionne parfaitement.
Christelle
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
19 oct. 2005 à 16:04
essais ce qui est en gras...
tiens moi au courant :)

MonMessage.To = range("A1").value, range("A2").value
MonMessage.Cc = CStr(range("A3").value)
MonMessage.Bcc = range("A4").value
MonMessage.Subject = "Test Macro VBA"
MonMessage.body = "Essai envoi email en auto"
MonMessage.Attachments.Add "c:\toto.xls
MonMessage.send


Si la réponse te conviens merci de l'accepter
0
cbr600fs Messages postés 14 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 20 février 2006 2
19 oct. 2005 à 17:19
en fait la première ligne ne fonctionne pas :

MonMessage.To = range("A1").value, range("A2").value

je n'arrive pas à lui indiquer plusieurs valeurs d'adresses. Par contre si je met directement les adresses comme cela ça fonctionne :

MonMessage.To = "toto@mail.fr,titi@mail.fr"

le seul problème est que je ne peux faire comme cela étant donné que je récupère des valeurs de listes déroulantes.

il doit y avoir une erreur de syntaxe. Il me met erreur d'exécution 13
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
19 oct. 2005 à 17:38
Toute tes propriétés To From Bbc Subject Body attendent une chaine de caractère !
Pour cela convertit la valeur de tes ranges avec Cstr comme ci-dessus dans mon exemple. D'ailleurs je me suis trompés j'ai appliqué CStr à CC mais bon dans le code que tu donnes il faut que tu le mettes à To à From à Bbc

MonMessage.To = Cstr(range("A1").value), Cstr(range("A2").value)
MonMessage.Cc = CStr(range("A3").value)
MonMessage.Bcc = CStr(range("A4").value)
MonMessage.Subject = "Test Macro VBA"
MonMessage.body = "Essai envoi email en auto"
MonMessage.Attachments.Add "c:\toto.xls"
MonMessage.send


Si la réponse te conviens merci de l'accepter
0
cbr600fs Messages postés 14 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 20 février 2006 2
19 oct. 2005 à 17:46
malheureusement cela ne fonctionne pas il me met toujours l'erreur 13.
apparemment c'est la virgule entre les 2 Cstr qu'il n'apprécie pas. J'ai essayé de remplacer la virgule par "and" mais le résultat est le même.
Je vais regarder à nouveau chez moi ce soir.
Si tu as d'autres idées, je veux bien et je te remercie d'essayer de m'aider.

Christelle
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
19 oct. 2005 à 18:07
Je crois que c'est le ; qui délimite les adresses mail quand il y en a plusieurs
Alors test ceci est dis moi...
MonMessage.To = CStr(Range("A1")) & ";" & CStr(Range("A2"))


Si la réponse te conviens merci de l'accepter
0
cbr600fs Messages postés 14 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 20 février 2006 2
20 oct. 2005 à 11:59
Bonjour,

Je vais tester cette après midi et te dirait si cela a fonctionné.

Merci
0
cbr600fs Messages postés 14 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 20 février 2006 2
20 oct. 2005 à 14:43
Génial, cela fonctionne, un très grand merci à toi, je vais pouvoir avancer.

Encore merci pour ton aide,

Christelle
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
20 oct. 2005 à 15:08
De rien....
0