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

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

Meilleure réponse
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 19 oct. 2005 à 15:37
3
Merci
Bizarre....
Ton code marche parfaitement chez moi....

Merci cs_Willi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Meilleure réponse
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 19 oct. 2005 à 15:45
3
Merci
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

Merci cs_Willi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Meilleure réponse
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 19 oct. 2005 à 18:07
3
Merci
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

Merci cs_Willi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Messages postés
14
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
20 février 2006
- 19 oct. 2005 à 15:51
0
Merci
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
Messages postés
14
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
20 février 2006
- 19 oct. 2005 à 15:54
0
Merci
merci pour le code du fichier en lecture seule, cela fonctionne parfaitement.
Christelle
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 19 oct. 2005 à 16:04
0
Merci
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
Messages postés
14
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
20 février 2006
- 19 oct. 2005 à 17:19
0
Merci
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
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 19 oct. 2005 à 17:38
0
Merci
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
Messages postés
14
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
20 février 2006
- 19 oct. 2005 à 17:46
0
Merci
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
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 19 oct. 2005 à 18:07
0
Merci
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
Messages postés
14
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
20 février 2006
- 20 oct. 2005 à 11:59
0
Merci
Bonjour,

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

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

Encore merci pour ton aide,

Christelle
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 20 oct. 2005 à 15:08
0
Merci
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.