[Excel VBA] recherche fichier en lecture seul
Fermé
kimclem
Messages postés
12
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
19 août 2009
-
4 août 2009 à 14:41
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 - 6 août 2009 à 11:42
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 - 6 août 2009 à 11:42
A voir également:
- [Excel VBA] recherche fichier en lecture seul
- Fichier rar - Guide
- Liste déroulante excel - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier host - Guide
8 réponses
kimclem
Messages postés
12
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
19 août 2009
4 août 2009 à 16:29
4 août 2009 à 16:29
pas de solution ? :(
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
4 août 2009 à 16:35
4 août 2009 à 16:35
Salut,
Peut être une piste ici
Cordialement,
Peut être une piste ici
Cordialement,
kimclem
Messages postés
12
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
19 août 2009
5 août 2009 à 15:26
5 août 2009 à 15:26
j'ai effectivement regarder et étudier ton code mais il semblerait que ce n'est pas possible d'utilser la fonction FileSearch sous 2007
par avance merci pour chaque réponse, si je trouve quelque chose je vous en fait part
par avance merci pour chaque réponse, si je trouve quelque chose je vous en fait part
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
5 août 2009 à 15:52
5 août 2009 à 15:52
Bonjour,
Un petit exemple de code à adapter :
Bon courage
;o)
Un petit exemple de code à adapter :
Public Sub searchAllFiles() Dim myTabFolders() Dim myTabFiles Dim sChemin As String Dim i As Long Dim j As Long sChemin = "C:\Mon repertoire" If subFolderInFolder(sChemin, myTabFolders()) = False Then MsgBox "Erreur" Else For i = LBound(myTabFolders()) To UBound(myTabFolders()) If AllFilesInFolder(myTabFolders(i), myTabFiles()) = False Then MsgBox "Erreur" Else For j = LBound(myTabFiles(j)) To UBound(myTabFiles(j)) Call FonctionQuiTraiteLeFichier(myTabFiles(j)) Next j End If Next i End If End Sub '********************************************************************* ' Fonction qui renvoie la liste de tous les fichier d'un répertoire ' Nécessite la référence Microsoft Scripting Runtime '********************************************************************* Public Function AllFilesInFolder(ByVal NomDossier As String, ByRef myTab, Optional ByVal ExtentionType As String) As Boolean Dim fso As Object, dossier As Object, Fich As Object Dim Files As Object, File As Object Dim max As Long, ext As String 'Initialisation du tableau ReDim myTab(0) ' ' Création de l'objet FSO On Error Resume Next ' AllFilesInFolder_Error Set fso = CreateObject("Scripting.FileSystemObject") ' Si le nom du dossier est vide, alors je sort de la fonction If NomDossier = "" Then Exit Function ' Stock les sous-répértoires dans l'objet dossier Set dossier = fso.GetFolder(NomDossier) ' stock dans l'objet Files tous les fichiers de l'objet dossier Set Files = dossier.Files ' s'il y a plus d'un fichier If Files.Count <> 0 Then max = 0 ' pour tous les objets fichiers dans l'objet files For Each File In Files ' ' je récupère le nom du fichier via l'objet Fich Set Fich = fso.GetFile(File) ' si l'extension n'est pas renseignée ext = ExtentionType If ExtentionType = "" Then ext = fso.GetExtensionName(File) ' If UCase(fso.GetExtensionName(File)) = UCase(ext) Then max = max + 1 ' j'augmente la taille de mon tableau résultat ReDim Preserve myTab(1 To max) ' Je stock en fin de tableau mon nom de fichier myTab(max) = File End If Next ' Je retourne le tableau complet des nom de fichiers End If ' ' Libère tous les objets Set fso = Nothing Set dossier = Nothing Set Fich = Nothing Set Files = Nothing Set File = Nothing ' If Err.Number = 0 Then AllFilesInFolder = True Exit Function Else AllFilesInFolder = False End If End Function '********************************************************************* ' Fonction qui renvoie la liste de tous les sous-répertoires d'un répertoire ' Nécessite la référence Microsoft Scripting Runtime '********************************************************************* Public Function subFolderInFolder(ByVal dossier As String, ByRef myTab) As Boolean Dim fso As FileSystemObject, monDossier As Folder, sousdossier As Folder Dim max As Long ReDim myTab(0) On Error Resume Next ' subFolderInFolder_Error Set fso = New FileSystemObject Set monDossier = fso.GetFolder(dossier) For Each sousdossier In monDossier.subFolders max = max + 1 ' j'augmente la taille de mon tableau résultat ReDim Preserve myTab(1 To max) ' Je stock en fin de tableau mon nom de fichier myTab(max) = sousdossier Next If max = 0 Then subFolderInFolder = False Exit Function Else subFolderInFolder = True End If End Function
Bon courage
;o)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
5 août 2009 à 15:53
5 août 2009 à 15:53
Bonjour,
avec WMI et FSO (WMI permet d'éviter l'utilisation d'un fonction récursive FSO....tout comme office.filesearch ;) ) :
ce code cherche ts les fichier en lecture seule sur C:\TEST et modifie cet attribut.
avec WMI et FSO (WMI permet d'éviter l'utilisation d'un fonction récursive FSO....tout comme office.filesearch ;) ) :
ce code cherche ts les fichier en lecture seule sur C:\TEST et modifie cet attribut.
Const READ_ONLY = 1 strComputer = "." Set objFSO = CreateObject("Scripting.FileSystemObject") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colFiles = objWMIService.ExecQuery("Select * from CIM_DataFile where Path = '\\TEST\\' " & "AND Drive = 'C:' AND Writeable = FALSE") For Each objFile In colFiles Set objReadOnlyFile = objFSO.GetFile(objFile.Name) objReadOnlyFile.Attributes = objReadOnlyFile.Attributes Xor READ_ONLY Next
kimclem
Messages postés
12
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
19 août 2009
6 août 2009 à 10:37
6 août 2009 à 10:37
Merci Tompols,
Par contre je ne souhaite pas et ne peux pas modifier l'attribut lecture seule, je voulais contourner le souci.
Je continue de regarder la piste WMI et FSO voir si cela peut m'aider.
Merci de ta réponse en tout cas
Clément
Par contre je ne souhaite pas et ne peux pas modifier l'attribut lecture seule, je voulais contourner le souci.
Je continue de regarder la piste WMI et FSO voir si cela peut m'aider.
Merci de ta réponse en tout cas
Clément
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
6 août 2009 à 11:27
6 août 2009 à 11:27
OK, c'est le "afin de les traiter" qui m'a fait penser que tu modifiais ces fichiers....Ds ce cas, suffit d'adapter le requete WMI pour obtenir la liste des fichiers(elever la clause "AND Writeable = 'FALSE'")....Tu peux aussi jeter un oeil ici (avec Office.filesearch) : https://forums.commentcamarche.net/forum/affich-481223-vba-liste-de-tous-les-fichiers-du-disque#4
Bonne journée
Bonne journée
kimclem
Messages postés
12
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
19 août 2009
6 août 2009 à 11:33
6 août 2009 à 11:33
Merci de prendre tout ce temps pour moi , je regarde ce que tu m'as dit pour le WMI ( qui est une découverte pour moi )
mais pour office.filesearch, visiblement cela ne marche plus en VBA office 2007
elle a été enlevé ou je ne sais pas trop
je te tiens au courant :)
mais pour office.filesearch, visiblement cela ne marche plus en VBA office 2007
elle a été enlevé ou je ne sais pas trop
je te tiens au courant :)
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
6 août 2009 à 11:42
6 août 2009 à 11:42
alors pour wmi : https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-start-page?redirectedfrom=MSDN
qqes exemples de scripts : http://www.microsoft.com/downloads/details.aspx?FamilyID=b4cb2678-dafb-4e30-b2da-b8814fe2da5a&DisplayLang=en
et un ptit outil : http://www.microsoft.com/downloads/details.aspx?FamilyID=2cc30a64-ea15-4661-8da4-55bbc145c30e&displaylang=en
bonne découverte ;)
qqes exemples de scripts : http://www.microsoft.com/downloads/details.aspx?FamilyID=b4cb2678-dafb-4e30-b2da-b8814fe2da5a&DisplayLang=en
et un ptit outil : http://www.microsoft.com/downloads/details.aspx?FamilyID=2cc30a64-ea15-4661-8da4-55bbc145c30e&displaylang=en
bonne découverte ;)