Parcours de dossiers en VBA

mentos64

XLDnaute Nouveau
:confused: Bonjour,
Je voulais savoir s'il était possible en VBA de parcourir un dossier contenant plusieurs sous dossiers contenant chacun aucune ou plusieurs feuille EXCEL.

Merci d'avance
:cool:
 

mentos64

XLDnaute Nouveau
Re : Parcours de dossiers en VBA

Bonjour à tous, :p
J'ai réalisé une macro qui plante afin de parcourir plusieurs répertoires et sous-répertoires ainsi que les classeurs puis feuilles excel.
Comme je n'ai absolument pas les compétences à ce niveau là, pourrait-on me dire svp comment résoudre ce pb sur lequel je suis depuis 2 semaines... :mad:
Merci ;)

Voici ma macro :
Option Explicit
Sub Parcours_Plusieurs_Dossiers()

Dim Fichier As String
'Dim Chemin As String
Dim nom_rep As String
Dim nom_ssrep As String

Dim Classeur1 As Workbook
Dim Classeur2 As Workbook

Set Classeur1 = Workbooks("leaks index.xls")

Dim Feuille As Worksheet
Dim F1 As Worksheet

Set F1 = Classeur1.Worksheets("all_type")

Dim lig As Integer
Dim col As Integer
Dim colonneDesign As Integer
Dim ligneDesign As Integer
Dim lig1 As Integer
Dim ln1 As Integer
Dim i As Integer

ln1 = 1


nom_rep = "U:\PersonalData\PM\Méthode leak index\calcul_compare+_Nederland"
If Right(nom_rep, 1) <> "\" Then nom_rep = nom_rep & "\"
nom_ssrep = Dir(nom_rep, vbDirectory)

encor:
If nom_ssrep <> "" Then

Fichier = Dir(nom_ssrep & "*.xls")

Do While Fichier <> ""

Set Classeur2 = Workbooks.Open(nom_ssrep & Fichier)

For Each Feuille In Classeur2.Worksheets

colonneDesign = 0
ligneDesign = 0

Feuille.Activate

'détection de la colonne contenant les intitulés des systèmes
For lig = 1 To 10
For col = 1 To 10

If TypeName(Feuille.Cells(lig, col).Value) = "String" Then

If InStr(Feuille.Cells(lig, col).Value, "Designation") <> 0 Then
colonneDesign = col
ligneDesign = lig + 2
End If

End If

Next col
Next lig

' si on se trouve dans une feuille sur laquelle la comparaison va se faire
If colonneDesign <> 0 And ligneDesign <> 0 Then

'détection des systèmes manquant dans leaks index

For i = ligneDesign To 200

For lig1 = 7 To 185

If Feuille.Cells(i, colonneDesign).Value = F1.Cells(lig1, 2).Value Then
Exit For
End If

If lig1 = 185 Then
F1.Cells(ln1, 6).Value = Feuille.Cells(i, colonneDesign).Value
ln1 = ln1 + 1
End If

Next lig1

Next i

End If

Next Feuille

Classeur2.Close True
Set Classeur2 = Nothing
Fichier = Dir

Loop

nom_ssrep = Dir(nom_rep, vbDirectory)

GoTo encor

End If

End Sub
 

mentos64

XLDnaute Nouveau
Re : Parcours de dossiers en VBA

Bonjour Pierrot93,

Merci une fois de plus pour ton aide.
En fait dès que je mets

encor :
.
.
.

GoTo encor


ça plante... mais si je les mets en commentaires alors rien ne se passe...

c'est vraiment au delà de mes compétences...je manque trop de pratique VB...

Merci ;)
 

mentos64

XLDnaute Nouveau
Re : Parcours de dossiers en VBA

Je voulais que cette boucle soit parcourue tant qu'il y avait des sous-répertoires jusqu'à atteindre les classeurs excel où je fais ma comparaison de colonnes pr chaque feuille excel.
Y aurait-il une autre solution plus rigoureuse que celle-ci ?
J'ai vu que je pouvais utiliser Application.FileSearch mais cela ne concerne que les fichiers et non les répertoires....je suis désespérée de ne pas réussir à parcourir les sous-répertoires d'un répertoire... :(

Merci
 

Pierrot93

XLDnaute Barbatruc
Re : Parcours de dossiers en VBA

Re

regarde la macro ci dessous, te liste les fichiers et sous dossiers d'un dossier, si ca peut t'aider :

Code:
Public Const MonRepertoire = "C:\Documents and Settings\Nom_Utilisateur\Mes documents\"
Sub ListeFichiersRepert()
'activer la reference Microsoft scripting Runtime
Dim fso As Scripting.FileSystemObject
Dim Source As String, f As File, x As Integer
Dim f1 As Folder, f2 As File

Set fso = CreateObject("Scripting.FileSystemObject")
Source = MonRepertoire
x = 1
For Each f In fso.GetFolder(MonRepertoire).Files
    Cells(x, 1).Value = f.Name
    Cells(x, 2).Value = f.Size
    x = x + 1
Next f
For Each f1 In fso.GetFolder(MonRepertoire).SubFolders
    Cells(x, 1).Value = f1.Name
    Cells(x, 2).Value = f1.Size
    x = x + 1
    For Each f2 In f1.Files
        Cells(x - 1, 3).Value = f2.Name
        Cells(x - 1, 4).Value = f2.Size
        x = x + 1
    Next f2
    x = x - 1
Next f1
End Sub

bon courage
@+
 

Discussions similaires

Réponses
11
Affichages
318

Statistiques des forums

Discussions
312 757
Messages
2 091 774
Membres
105 071
dernier inscrit
ramsis