cs_Liro
Messages postés159Date d'inscriptionjeudi 7 septembre 2006StatutMembreDernière intervention30 septembre 2011
-
27 juil. 2008 à 11:44
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 2016
-
27 juil. 2008 à 15:46
Bonjour,
Je souhaiterai depuis un fichier excel lancer une macro qui parcour un dossier et tous ses sous-dossiers afin d'y trouver des fichiers excel.
Voici un exemple d'arborescence.
A
A1
A2
B
B1
B2
B3
etc.
Même si A1 contient un dossier je ne veux pas continuer mon opération dans ce dossier
Une fois ces fichiers trouvés je voudrais y lire la valeur de 3 cellules (C3, D13 et D15).
En d'autres mots je voudrais lire la valeur de 3 cellules pour tous les fichiers excel ce trouvant dans A, B etc et A1, A2, B1, B2, B3 etc.
A partir de l'aide VBA et de quelques recherches sur internet j'ai pu réussir le faire pour les dossier A, B etc.
Comment l'adapter pour le faire dans leur sous dossiers?
Merci
Voici mon code:
[code]
sOwnFile = ActiveWorkbook.Name
iCnt = 0
r = 2
If Right(sPath, 1) <> "" Then sPath = sPath & ""
If (GetAttr(sPath) And vbDirectory) <> vbDirectory Then Exit Function
' get first file in directory
sFile = Dir(sPath & "*.xls", vbDirectory)
Do Until Len(sFile) = 0
' If Len(sFile) > 4 Then
' If Right(sFile, 4) = ".xls" And ((GetAttr(Path & curr) And vbDirectory) <> vbDirectory) Then
If ((GetAttr(sPath & sFile) And vbDirectory) <> vbDirectory) Then
' it is a Excel file...
If sFile <> sOwnFile Then
Workbooks.Open Filename:=sPath & sFile, UpdateLinks:=0
Workbooks(sOwnFile).Worksheets(1).Cells(r, 1).Value = sFile
Workbooks(sOwnFile).Worksheets(1).Cells(r, 4).Value = Workbooks(sFile).Sheets("Prices").Range("C3").Value
Workbooks(sOwnFile).ActiveSheet.Cells(r, 5).Value = Workbooks(sFile).Sheets("Prices").Range("D13").Value
Workbooks(sOwnFile).ActiveSheet.Cells(r, 6).Value = Workbooks(sFile).Sheets("Prices").Range("D15").Value
Application.DisplayAlerts = False
Workbooks(sFile).Close
Application.DisplayAlerts = True
iCnt = iCnt + 1
r = r + 1
End If
End If
' End If
' End If
' read next file in directory
sFile = Dir()
Loop
[code/]
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 27 juil. 2008 à 14:40
Bonjour,
=
Perso, je décomposerai ton problème en éléments élémentaires séparés, comme suit :
1/ Appel à une fonction pour demander le répertoire à triater
2/ Recherche de tous les fichiers en extension ".XLS"
3/ Ouverture de chaque fichier par une boucle
3a/ Extraction des cellules et enregistrement dans le classeur initial
3b/ Fermeture fichier et bouclage (au point 3)
cs_Liro
Messages postés159Date d'inscriptionjeudi 7 septembre 2006StatutMembreDernière intervention30 septembre 2011 27 juil. 2008 à 15:17
Merci Us.
Pour le point 1 le lien vers le dossier est indiqué dans une cellule donc pas besoin de ce snippet.
Pour le point 2, c'est ça sauf que je voudrais me limiter à tousles sous dossier à partir du dossier principal (et pas les sous dossiers des sous dossiers) or ce snippet liste tous les fichiers de tous les sous dossiers.
Comment faire?
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 27 juil. 2008 à 15:46
Pour simplement un seule niveau de recherche... j'ai vu aussi un Snippet faisant cela... Je te laisse le retrouver. Utilise directement la rubrique "Fichier"...