Parcourir fichiers dossier test si lecture seule

Résolu/Fermé
cycytoulouse Messages postés 15 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 9 octobre 2018 - Modifié le 3 oct. 2018 à 18:55
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 5 oct. 2018 à 13:56
Bonjour,



Je souhaite demander à ma macro de parcourir tous les Fichiers XL d'un dossier (il n'y a que des fichiers excel dans ce dossier ) afin de savoir s'il y en a un ou plus qui sont en lecture seule. S'il y en a en lecture seule alors affiche les dans un message. J'aimerais aussi savoir s'il est possible de faire ce test sans ouvrir le dit fichier afin de gagner du temps de traitement.

       Rep = "K:\GVA\P1\P1O\P1O_All\Marketing\"
        Fichier = Dir(Rep)
        
        Do While Fichier <> ""
            si le fichier est en cours d'utilisation par qq'un d'autre alors dis le moi
           MsgBox Fichier & "est déjà ouvert"

            Fichier = Dir
        Loop

Merci encore pour votre aide, et désolé si la question parait niaise, mais je ne suis pas trés bon en VBA...

A voir également:

2 réponses

yg_be Messages postés 23295 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 octobre 2024 Ambassadeur 1 548
3 oct. 2018 à 19:49
bonjour, ne confonds-tu pas "en lecture seule" et "en cours d'utilisation par qq'un d'autre"?
peux-tu clarifier?
0
cycytoulouse Messages postés 15 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 9 octobre 2018
3 oct. 2018 à 20:08
Bonjour,
Ma macro devant effectuer des modifs sur differents fichiers utilisateurs , elle sera dans l'impossibilité de le faire sur un fichier en cours d'utilisation par un de ces utilisateurs. donc l objectif est de ne lancer ma macro que si tous les fichiers sont disponibles à la modification.

Pour ce faire, au lancement de ma macro, j aimerais qu elle parcours le dossier dans lequel sont stockés tous les fichiers utilisateurs afin de vérifier qu ils soient tous disponibles à la modification.

A moins que vous ayez une meilleure idée à proposer ??

Je ne sais pas si je me fais comprendre !
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
Modifié le 4 oct. 2018 à 08:15
Bonjour,

pour parcourir un répertoire:

https://silkyroad.developpez.com/vba/boucles/#LVI

pour vérifier si un classeur est ouvert

https://excel-malin.com/codes-sources-vba/vba-verifier-si-un-classeur-est-ouvert/

pour connaitre les propriétés d'un classeur (Attribut: lecture seule)

https://silkyroad.developpez.com/VBA/ProprietesClasseurs/#LIV-C


Voilà a adapter à tes besoins
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
4 oct. 2018 à 11:38
Une méthode efficace pour fermer tous les classeurs d'un coup c'est:

Application.Quit


ensuite pour enlever lecture seule à tous les classeurs concernés faire une boucle sur le répertoire et mettre ceci:

F.Attributes = F.Attributes + ReadOnly = False


mais tu ne sauras pas ceux qui étaient en lecture seule pour les rétablir.

Voilà une autre solution plus rapide à toi de voir!

@+ Le Pivert
0
cycytoulouse Messages postés 15 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 9 octobre 2018
4 oct. 2018 à 20:51
j ai beaucoup appris grâce à tes conseils. Merci bien !
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
5 oct. 2018 à 13:56
Je me suis amusé a faire ce programme en me servant des sites que je t'ai indiqués.

Les classeurs ouverts affiche VRAI en rose et les classeurs en lecture seule RA en rose aussi.

Tu pourras adapter ton code à tes besoins:

https://www.cjoint.com/c/HJflZAIS0PQ


Ne pas oublier avant la 1ère utilisation:

'Dans l'éditeur de macros (Alt+F11):
'Menu Outils
'Références
'Cochez la ligne "Microsoft Scripting RunTime".
'Cochez la ligne "Microsoft Shell Controls and Automation".
'Cluquez sur le bouton OK pour valider.

@+ Le Pivert
0