Macro recherche documents
Bonjour,
J'ai un problème dans un code VBA.
Mon code a pour fonction de chercher des feuilles Excel contennant les descriptifs de produits, mais ces feuilles sont elles mêmes contenues dans plusieurs imbrications de dossier qui représente la série, le lieu de fabrication et j'en passe.
Je m'explique :
J'ai un dossier principal qui est C:\Users\Documents\
Dans ce dossier, je vais chercher certains dossiers qui ont des indicatifs de la forme chiffre, chiffre, point exemple : 01. ou 20.
Dans le nouveau répertoire commençant de cette forme là, je dois là aussi étudier tous les dossiers et vérifier qu'ils contiennent un répertoire appelé "Données".
Alors, si le repertoire "Données" est dedans, je dois extraire le Directory ainsi que le nom du fichier pour le mettre dans ma feuille Excel.
L'explication étant assez lourde, je vous envoie mon programme :
Sub MAJ_auto_fichier()
Dim repertoire As String, repertoire1 As String, repertoire2 As String, NomSite As String, NomProduit As String, x As String
Dim produit As String
Dim i As Integer, j As Integer, k As Integer
Dim y As Date
'---------------------------------------------------------1ere etape--------------------------------------
'On récupère tous les fichiers nommés comme 02. ou 20.
ThisWorkbook.Sheets("Liste1").Activate
repertoire = "C:\Users\Documents\"
NomSite = Dir(repertoire, vbDirectory)
i = 1
Do While NomSite <> ""
If NomSite <> "." And NomSite <> ".." Then
If (GetAttr(repertoire & NomSite) And vbDirectory) = vbDirectory Then
x = Left(NomSite, 3) Like "##."
y = FileDateTime(repertoire + NomSite)
If x = True Then 'And y => DateValue(Now) - 80 Then
'--------------------------------------------------------------------------------------------------------------------------------
repertoire = repertoire + NomSite + "\"
NomProduit = Dir(repertoire, vbDirectory)
Do While NomProduit <> ""
If NomProduit <> "." And NomProduit <> ".." Then
If (GetAttr(repertoire & NomProduit) And vbDirectory) = vbDirectory Then
'------------------------------------------------------------------------------------------------
repertoire1 = repertoire + NomProduit + "\"
repertoire2 = repertoire1 + "Données" + "\"
If Dir(repertoire2, vbDirectory) <> "" Then 'si le dossier existe
produit = Dir(repertoire2 & "*.xls") 'on regarde si des fichiers excel existent
Do While produit <> "" 'tant qu'il existe des feuilles excel
Cells(i, "H") = repertoire2
Cells(i, "K") = produit
i = i + 1
loge = Dir
Loop
End If
repertoire1 = ""
repertoire2 = ""
End If
End If
NomProduit = Dir
Loop
End If
End If
End If
NomSite = Dir
Loop
End SubTout ce passe bien jusqu'à l'instruction NomProduit=Dir
End If
End If
NomProduit = DirEn effet, je n'arrive pas à passer à la suite, j'ai une erreur de type :
Erreur d'execution '5': Argument ou appel de procédure incorrect
Je n'ai pas réussi à savoir d'où venait l'erreur, je suppose que cela vient de l'imbrication des changements de directory.
Votre expertise m'éclairera sur ce problème,
Merci d'avance et bonne journée,
Loïc