Bonjour à tous.
Je suis un novice en excel. ci-joint mes fichiers.
J'ai reçu l'aide d'une personne qui m'a rédigé cette macro, grâce à mes comptes projets dans mon fichier EXCEL, la macro va chercher dans tout mon répertoire le fichier PDF qui correspond au compte projet pour en faire un lien hypertexte.
Pouvez-vous m'aider à améliorer cette macro car super lent.
et j'aimerai aussi qu'elle ne redémarre pas à chaque ouverture du fichier, qu'elle reste figé sauf si je clique sur le bouton pour la mise à jour.
Merci pour votre aide.
Cordialement.
VOICI LA MACRO :
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 Private ListeDoss() As String Dim fichier As String Dim k As Integer Sub ChercheDoss(Chemin1 As String) Dim Ligne As Long, Nom As String Ligne = Range("N65536").End(xlUp).Row + 1 On Error GoTo Err1 Nom = Dir(Chemin1 & "\" & fichier & "*pdf") If Nom <> "" Then If Range("P" & CStr(k)).Value = Empty Then Range("P" & CStr(k)).Value = Nom ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(k, 16), Address:=Chemin1 & "\" & Nom, TextToDisplay:=Nom End If End If Err1: End Sub Sub ChercheTout() Dim Chemin As String, i As Long Range("P3:P65536").Clear For k = 3 To 5000 fichier = Range("N" + CStr(k)).Value If fichier = Empty Then MsgBox "SOURIEZ-vous êtes FILMES, Bonne Journée !!! Merci" Exit For End If Chemin = "I:\IPM\IPMM\IPM-MR\DMR ER GP S\Courrier" LanceListe Chemin For i = 1 To UBound(ListeDoss) ChercheDoss ListeDoss(i) Next i Next k End Sub Sub ListeArborescence(Dossier As String) Dim fs, sousdoss Set fs = CreateObject("Scripting.FileSystemObject") On Error Resume Next For Each sousdoss In fs.getfolder(Dossier).subfolders ReDim Preserve ListeDoss(1 To UBound(ListeDoss) + 1) ListeDoss(UBound(ListeDoss)) = sousdoss.Path ListeArborescence sousdoss.Path Next sousdoss On Error GoTo 0 Set fs = Nothing End Sub Sub LanceListe(Dossier As String) ReDim ListeDoss(1 To 1) ListeDoss(1) = Dossier ListeArborescence Dossier End Sub Private Sub Workbook_Open() Call ChercheTout End Sub
Partager