Bonjour à tous

Je suis en train de travailler sur une macro excel pour remplir des bons de livraisons automatiquement, je m'explique:

Ma société récupère en ce moment des contrats sur la mise à jour de plans autoCAD. Une fois ces fichiers mis à jour, on les rends format papier (vive la déforestation) et informatique, le tout avec un bon de livraison récapitulant tous les fichiers modifiés.

J'ai donc créé une routine (ou macro, pour parler correctement) qui me permet, en choisissant le répertoire où se trouvent les fichiers, de les lister dans une feuille excel (quand les gars ont passé 5 jours à modifier des cartouches ou autre, ils n'ont pas envie de se faire ch... avec un bon de livraison). Ceci n'étant que la première étape puisque le but est de sortir automatiquement le bon de livraison à partir du répertoire source.

Mais c'est là que le problème survient:

je réussis à avoir la liste des fichiers, mais sous la forme chemin_d'accès\nomdefichier.extension, et je ne voudrait avoir que nomdefichier, je me fous de l'extension et du chemin d'accès.

La question est: Que dois-je modifier à ma macro afin de n'afficher QUE le nom de fichier sans son extension ni son chemin d'accès.
Question subsidiaire pour vous départager: Une fois résupéré le nom de fichier seul, je voudrais le décomposer de cette sorte:
Nom de fichier complet (exemple): 5761M40156300-SP1-41-05-IN-02-00001-016-07
1ère partie = nom de la liasse de plan (x caractères et pas toujours le même nombre) =>> 5761M40156300-SP1-41-05-IN-02-00001
2ème partie = le numéro de folio (toujours 3 caractères qui peuvent être chiffres ou lettres) =>> 016
3ème partie = l'indice de révision (toujours les 2 derniers caractères, chiffres ou lettres) =>> 07


En gros, ma macro m'affiche la liste de fichiers d'un répertoire dans une colonne sous la forme "D:\SP1\U41\5761M40156300-SP1-41-05-IN-02-00001-016-07" et moi, je voudrais l'afficher en 3 colonnes:
colonne 1 = 5761M40156300-SP1-41-05-IN-02-00001
colonne 2 = 016
colonne 3 = 07

Je ne sais pas si les explications sont claires... en tout cas voilà la macro en question:


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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
 
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
 
Function GetFolderName(Msg As String) As String
Dim bInfo As BROWSEINFO, path As String, r As Long, x As Long, pos As Integer
bInfo.pidlRoot = 0&
If IsMissing(Msg) Then
bInfo.lpszTitle = "Selectionner un répertoire de travail"
Else
bInfo.lpszTitle = Msg
End If
bInfo.ulFlags = &H1
x = SHBrowseForFolder(bInfo)
path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
GetFolderName = Left(path, pos - 1)
Else
GetFolderName = ""
End If
End Function
 
 
 
 
 
 
Sub ListeFic()
 
    Dim ScanFic As Office.FileSearch
    Dim NomFic  As Variant
    Dim Diag    As String
    Dim Nbr     As Long
    Dim I       As Long
    Dim chemin As Long
    Set ScanFic = Application.FileSearch
 
    Dim Rep0 As String
Rep0 = GetFolderName("Choisissez un répertoire de travail")
If Rep0 = "" Then Exit Sub
 
 
    With ScanFic
        .NewSearch
        .LookIn = Rep0
        .SearchSubFolders = False
        .Filename = "*.dwg"
        Nbr = .Execute(msoSortByFileName)
        Diag = Format(Nbr, "0 ""fichiers trouvés""")
 
        I = 0
        For Each NomFic In .FoundFiles
            I = I + 1
            Sheets("Feuil1").Cells(I, 1).Value = NomFic
        Next
 
    End With
 
End Sub
D'avance merci