Tester si fichier lecture seule ou non [Résolu]

cbr600fs 14 Messages postés jeudi 29 septembre 2005Date d'inscription 20 février 2006 Dernière intervention - 19 oct. 2005 à 15:32 - Dernière réponse : cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention
- 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
Afficher la suite 

13 réponses

cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 19 oct. 2005 à 15:37
+3
Utile
Bizarre....
Ton code marche parfaitement chez moi....
Cette réponse vous a-t-elle aidé ?  
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 19 oct. 2005 à 15:45
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 19 oct. 2005 à 18:07
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
cbr600fs 14 Messages postés jeudi 29 septembre 2005Date d'inscription 20 février 2006 Dernière intervention - 19 oct. 2005 à 15:51
0
Utile
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
cbr600fs 14 Messages postés jeudi 29 septembre 2005Date d'inscription 20 février 2006 Dernière intervention - 19 oct. 2005 à 15:54
0
Utile
merci pour le code du fichier en lecture seule, cela fonctionne parfaitement.
Christelle
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 19 oct. 2005 à 16:04
0
Utile
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
cbr600fs 14 Messages postés jeudi 29 septembre 2005Date d'inscription 20 février 2006 Dernière intervention - 19 oct. 2005 à 17:19
0
Utile
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
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 19 oct. 2005 à 17:38
0
Utile
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
cbr600fs 14 Messages postés jeudi 29 septembre 2005Date d'inscription 20 février 2006 Dernière intervention - 19 oct. 2005 à 17:46
0
Utile
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
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 19 oct. 2005 à 18:07
0
Utile
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
cbr600fs 14 Messages postés jeudi 29 septembre 2005Date d'inscription 20 février 2006 Dernière intervention - 20 oct. 2005 à 11:59
0
Utile
Bonjour,

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

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

Encore merci pour ton aide,

Christelle
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 20 oct. 2005 à 15:08
0
Utile
De rien....

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.