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:
D'avance merci
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
Partager