Bonjour à tous,
Après un joli viaduc de repos, reprise de l'apprentissage de VB
J'ai lu pas mal de topic sur la recherche de fichier dans des dossiers et sous dossiers. J'ai ai extrait le code suivant (avec une partie du miens).
Mon besoins est le suivant. Je souhaite que me macro recherche un fichier qui se nomme en partie via le text box dans des dossiers et sous dossier.
J'ai un chemin type xxxxxxx\xxxxx\campage\ dans se dossier, j'ai des sous dossiers en fonction de l'année et à l'interieur des sous dossiers en fonction de la semaine.
ex xxxx\xxxx\campagne\2016\S15\fichier a trouver
Je voudrais que ma macro qui met à jour un tableau recherche dans les dossiers et sous dossiers de l'année N-1 et N mon fichier demandé dans le textbox.
La partie du code que j'ai trouvé provoque une erreur à cause du filesearch car je suis sous 2007. J'ai trouvé des articles qui me dit de télécharger un complément ClasseFileSearch mais je en peu pas dans l'entreprise à cause des verroux de proxy.
Auriez-vous une autre piste?
Est-ce possible si je sauvegarde le fichier macro en .xls.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 Private Sub Valider_Click() Dim CHE As String Dim FIC As String Dim REC1 As Range Dim name As String 'pour accepter le champs de saisie dans le userform Dim wbk2 As Workbook ' pour fermer le classeur à la fin name = EVERTZ.saisie.Text 'FIC = Dir(CHE & "\" & name & "*") ' vérification de la présence de la coulée dans le tableau de récupération Set REC1 = Range("A1:A65000").Find(name, lookat:=xlWhole) If REC1 Is Nothing Then 'si coulée non trouvée MsgBox ("Veillez importer les données de contrôle avant les données EVERTZ") Else Static s As Integer Dim repertoire() 'Detecter les repertoires CHE = "E:\UL_EVERTZ\Suivi MAM et réparations\Campagne\" myname = Dir(CHE, vbDirectory) Do While myname <> "" If myname <> "." And myname <> ".." And myname <> "..." Then If (GetAttr(CHE & myname) And vbDirectory) = vbDirectory Then Debug.Print myname ReDim Preserve repertoire(s) repertoire(s) = CHE & myname s = s + 1 End If End If myname = Dir Loop 'Lister les fichier des repertoires For g = 0 To s - 1 MsgBox repertoire(g) Set fs = Application.FileSearch With fs .LookIn = repertoire(g) .Filename = "*.*" .Execute For i = 1 To .FoundFiles.Count MsgBox .FoundFiles(i) 'intégrer le code d'apres à la place Next i If .FoundFiles.Count = 0 Then MsgBox "fichier non trouvé" End If End With Next
Partager