Chercher fichier contenu dans celulle et creation hyperlien

fredh

XLDnaute Occasionnel
Bonjour

J'ai une liste de fichier sous excell. Jaimerai prendre le nom du fichiers de la colonne C et faire une recherche et creer un hyperliens dans la colonne suivante, et cela sur plusieurs feuille

Si possible j'aimerai faire cela a l'ouverture du fichier (si c'est pas trop long)
Tout les fichiers sont dans un repertoire contenant des sous repertoire (Donc pas la peine de recherche sur tout le Disque)

Ci joint un exemple

Merci de m'apporter votre aide
 

Pièces jointes

  • generer hyperliens avec nom en A3.zip
    32.3 KB · Affichages: 82

jmcemoa

XLDnaute Nouveau
Re : Chercher fichier contenu dans celulle et creation hyperlien

Bonjour,
il faut d'abord connaitre l'adresse de chaque fichier :
tu peux l'afficher dans une cellule d'une colonne voisine, sur la même ligne, avec à la fin du chemin le nom du fichier avec son extension

exemple : c:\_PC033.......\FT.54.11.25.xls

Ensuite, tu inclus dans une macro VBA une instruction de création d'hyperlien
(il faut se placer sur la cellule où se trouve le nom du fichier (ex C4) )

instruction
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=ActiveCell.Offset(, 1)

nota : ActiveCell.Offset(, 1) est l'adresse de la cellule ou se trouve le chemin (dans ce cas, 1 cellule à droite)

j'espère avoir répondu à ton attente
Cordialement,
Jean-Marie
 

fredh

XLDnaute Occasionnel
Re : Chercher fichier contenu dans celulle et creation hyperlien

Bonsoir jmcemoa

je joint le fichier en exemple avec un bouton de commande...
Je n'arrive pas a prendre les valeur de la colonne C (a partir de C3 jusqu'a C...) pour y mettre un hyperliens
En faite je pense que la dificulter se situe dans la recherche du fichier contenu dans la celulle C3 puis C4, puis C5 etc...

Ensuite je pense que creer le liens ne devrait pas trop poser de probleme...
 

Pièces jointes

  • generer hyperliens en AB2 avec nom en C2.zip
    20.1 KB · Affichages: 34
  • generer hyperliens en AB2 avec nom en C2.zip
    20.1 KB · Affichages: 36
  • generer hyperliens en AB2 avec nom en C2.zip
    20.1 KB · Affichages: 39
Dernière édition:

fredh

XLDnaute Occasionnel
Re : Chercher fichier contenu dans celulle et creation hyperlien

Bonsoir

Une aide sur la recherche d'un fichier (celulle C3) dans un repertoire et sous repertoire donnée, puis affichage du chemin en C4 serait vraiment la bienvenue.

Merci et Bonne soirée
 

fredh

XLDnaute Occasionnel
Re : Chercher fichier contenu dans celulle et creation hyperlien

Rebonsoir
Je comptait utiliser et modifier le code suivant pour la recherche de fichier.
Mais il m'affiche qu'il ne trouve rien pourtant mon repertoire contient des fichiers xls...

Code:
Sub CommandButton1_Click()
Dim dest As String

dest = InputBox("entrez le nom du répertoire", "Chemin du répertoire", Range("F2"))

With Application.FileSearch
   .NewSearch
   .Filename = Sheets("feuil1").Range("a3")
   .LookIn = dest
   .SearchSubFolders = True
   .Execute

    For i = 1 To .FoundFiles.Count
    MsgBox .FoundFiles(i)
'        If .FoundFiles(i) = Range("a3") Then
'    ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), Address:=.FoundFiles(i)
'        Else: End
    Next i
        If .FoundFiles.Count = 0 Then
        MsgBox "Aucun fichier n'a été trouvé."
        End If
End With
End Sub

une idées peut etre
 
Dernière édition:

fredh

XLDnaute Occasionnel
Re : Chercher fichier contenu dans celulle et creation hyperlien

rebonsoir
ca y est j'arrive a tester le contenu d'un repertoire.
Mais j'ai un autre soucis : en effet foundfiles(i) me donne le chemin complet du fichier et lorsque je le compare avec A3 je n'ai que le nom et pas le chemin complet....

Une idées peut etre ?
Code:
Sub test()
Dim dest As String
Dim path As String


dest = InputBox("entrez le nom du répertoire", "Chemin du répertoire", Range("F2"))

With Application.FileSearch
    '.NewSearch
    '.LookIn = "C:\Documents and Settings"
    .LookIn = dest
    .SearchSubFolders = True
    'DataMicrosoftExcel ""
    '.FileType = msoFileTypeExcelWorkbooks
    .Filename = "*.xls"
    .Execute

    For i = 1 To .FoundFiles.Count
    MsgBox .FoundFiles(i)
   [COLOR="Blue"] 'ici il faudrait comparer le texte en A3 avec le resultat
    'si ok alors creer lien hypertext en B3[/COLOR]
    If [COLOR="Red"]Dir & "\" &[/COLOR] Range("A3") = [COLOR="Magenta"].FoundFiles(i)[/COLOR] Then
     MsgBox "creation de liens"
    ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), Address:=.FoundFiles(i)
    End If

    Next i
    If .FoundFiles.Count = 0 Then
        MsgBox "Aucun fichier n'a été trouvé."
    End If
End With
End Sub


Private Sub CommandButton1_Click()
test
End Sub

Je vous joint le fichier pour des test plus aiser...

Merci
 

Pièces jointes

  • recherche2.zip
    7.7 KB · Affichages: 33
  • recherche2.zip
    7.7 KB · Affichages: 36
  • recherche2.zip
    7.7 KB · Affichages: 29

myDearFriend!

XLDnaute Barbatruc
Re : Chercher fichier contenu dans celulle et creation hyperlien

Bonsoir fredh, jmcemoa,

fredh, il me semble que tu as plusieurs fils restés sans réponse... t'es-tu demandé pourquoi ? N'aurais-tu pas ouvert trop de fils simultanément avec quasiment le même problème au bout ? Pour ma part, j'ai tenté à plusieurs reprises de te venir en aide, mais en reprenant l'ensemble de tes fils ouverts, je finissais par ne plus rien comprendre de ton objectif, ça part dans tous les sens !
On ne le répètera jamais assez : multiplier les fils de discussions est le meilleur moyen de décourager les bonnes volontés de ce forum...

Concernant le présent sujet, tu trouveras dans le classeur ci-joint une tentative de réponse.
J'ai utilisé le code ci-dessous :
Code:
[SIZE=2][COLOR=blue]Option Explicit[/COLOR]

[COLOR=blue]Sub[/COLOR] ScanClasseurs()
[COLOR=green]'ATTENTION : nécessite une référence à la librairie[/COLOR]
[COLOR=green]'Microsoft Visual Basic For Applications Extensibility 5.3[/COLOR]
[COLOR=green]'myDearFriend! - Septembre 2006[/COLOR]
[COLOR=blue]Dim[/COLOR] Dossier [COLOR=blue]As Object[/COLOR], Fichier [COLOR=blue]As Object
Dim[/COLOR] TabDossiers [COLOR=blue]As Variant[/COLOR], Rep [COLOR=blue]As Variant
Dim[/COLOR] C [COLOR=blue]As[/COLOR] Range
[COLOR=blue]Dim[/COLOR] Chemin [COLOR=blue]As String
Dim[/COLOR] L [COLOR=blue]As Long[/COLOR], D [COLOR=blue]As Long[/COLOR]
      Rep = Application.InputBox("entrez le nom du répertoire à explorer", "Chemin du répertoire", _
                  "D:\_PC033_prb\Dokumentation\Daten\daten_prb\Schlamm\EMSR_Doku\", [COLOR=blue]Type[/COLOR]:=2)
      [COLOR=blue]If[/COLOR] Rep = [COLOR=blue]False Then Exit Sub
      If Not[/COLOR] Rep [COLOR=blue]Like[/COLOR] "*\?*" [COLOR=blue]Then[/COLOR]
            MsgBox "Veuillez indiquer un dossier (pas un disque)!"
            [COLOR=blue]Exit Sub
      End If[/COLOR]
      Application.ScreenUpdating = [COLOR=blue]False[/COLOR]
      [COLOR=green]'Création du tableau des sous-dossiers existants[/COLOR]
      TabDossiers = lstDossiers(Rep, [COLOR=blue]True[/COLOR])
      [COLOR=blue]For[/COLOR] D = 1 [COLOR=blue]To UBound[/COLOR](TabDossiers)
            [COLOR=green]'Chemin du dossier (ou sous-dossier) à analyser[/COLOR]
            Chemin = TabDossiers(D) & "\"
            [COLOR=green]'Analyse du dossier (ou sous-dossier)[/COLOR]
            [COLOR=blue]Set[/COLOR] Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
            [COLOR=blue]For Each[/COLOR] Fichier [COLOR=blue]In[/COLOR] Dossier.Files
                  [COLOR=green]'Liste les fichiers Excel[/COLOR]
                  [COLOR=blue]If[/COLOR] Fichier.Name [COLOR=blue]Like[/COLOR] "*.xls" [COLOR=blue]Then
                        Set[/COLOR] C = Sheets("11").Columns(3).Find(Left(Fichier.Name, Len(Fichier.Name) - 4), _
                                    LookIn:=xlValues)
                        [COLOR=blue]If Not[/COLOR] C [COLOR=blue]Is Nothing Then[/COLOR]
                              Sheets("11").Hyperlinks.Add Anchor:=C.Offset(0, 1), Address:=Fichier.Path, _
                                          TextToDisplay:=Fichier.Name
                              L = L + 1
                        [COLOR=blue]End If
                  End If
            Next
      Next[/COLOR] D
      [COLOR=blue]Set[/COLOR] Dossier = [COLOR=blue]Nothing[/COLOR]
      Application.ScreenUpdating = [COLOR=blue]True[/COLOR]
      MsgBox "Traitement terminé !" & vbLf & L & " lien(s) créé(s)"
[COLOR=blue]End Sub[/COLOR]

[COLOR=blue]Private Function[/COLOR] lstDossiers([COLOR=blue]ByVal[/COLOR] Chemin [COLOR=blue]As String[/COLOR], [COLOR=blue]Optional[/COLOR] Debut [COLOR=blue]As Boolean[/COLOR]) [COLOR=blue]As Variant
Dim[/COLOR] Dossier [COLOR=blue]As Object[/COLOR], SD [COLOR=blue]As Object[/COLOR], D [COLOR=blue]As Object
Static[/COLOR] TabTemp() [COLOR=blue]As String
      If[/COLOR] Debut [COLOR=blue]Then
            ReDim[/COLOR] TabTemp(1 [COLOR=blue]To[/COLOR] 1)
            TabTemp(1) = Chemin
      [COLOR=blue]End If
      Set[/COLOR] Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
      [COLOR=green]'examen du dossier courant[/COLOR]
      [COLOR=blue]For Each[/COLOR] D [COLOR=blue]In[/COLOR] Dossier.subfolders
            [COLOR=blue]ReDim Preserve[/COLOR] TabTemp(1 [COLOR=blue]To UBound[/COLOR](TabTemp) + 1)
            TabTemp([COLOR=blue]UBound[/COLOR](TabTemp)) = D.Path
      [COLOR=blue]Next[/COLOR]
      [COLOR=green]'Traitement récursif des sous-dossiers (d'après un code de F.Sigonneau)[/COLOR]
      [COLOR=blue]For Each[/COLOR] SD [COLOR=blue]In[/COLOR] Dossier.subfolders
         lstDossiers SD.Path
      [COLOR=blue]Next[/COLOR] SD
      lstDossiers = TabTemp()
      [COLOR=blue]Set[/COLOR] Dossier = [COLOR=blue]Nothing
End Function[/COLOR][/SIZE]
Cordialement,
 

Pièces jointes

  • PourFredh.zip
    24.1 KB · Affichages: 42

fredh

XLDnaute Occasionnel
Re : Chercher fichier contenu dans celulle et creation hyperlien

Bonsoir mdf
c'est vrai j'ai plusieur fil d'ouvert, C'est vrai quu'il peuvent se resembler mais ce n'etait pas mon intention, chaque fil etait pour moi des aplications differentes. J'avoue que moi aussi je ne m'en sortait plus.....et certains fil m'ont apporter des partie de reponse pour d'autres.
Mon but etait aussi de decortiquer des problemes, qui me semblait trop complexe, en plusieur fil au lieu de un.
Mea Culpa.
J'en tiendrait compte dans mes futur Post.
Merci
Je jette un oeil sur ton code et je reviens...
 

fredh

XLDnaute Occasionnel
Re : Chercher fichier contenu dans celulle et creation hyperlien

Rebonsoir mdf, le fil

Alors la mdf Bravo c'est impresionnant !
Ca marche, je me suis permis de rajouter le code pour faire cela sur toutes les feuilles.
Code:
Option Explicit

Sub ScanClasseurs()
'ATTENTION : nécessite une référence à la librairie
'Microsoft Visual Basic For Applications Extensibility 5.3
'myDearFriend! - Septembre 2006
Dim Dossier As Object, Fichier As Object
Dim TabDossiers As Variant, Rep As Variant
Dim C As Range
Dim Chemin As String
Dim L As Long, D As Long
[COLOR="Blue"]Dim sh As Variant[/COLOR]


    Rep = Application.InputBox("entrez le nom du répertoire à explorer", "Chemin du répertoire", _
            "D:\_PC033_prb\Dokumentation\Daten\daten_prb\Schlamm\EMSR_Doku\", Type:=2)
    If Rep = False Then Exit Sub
    If Not Rep Like "*\?*" Then
        MsgBox "Veuillez indiquer un dossier (pas un disque)!"
        Exit Sub
    End If
    Application.ScreenUpdating = False
    'Création du tableau des sous-dossiers existants
    TabDossiers = lstDossiers(Rep, True)
    For D = 1 To UBound(TabDossiers)
        'Chemin du dossier (ou sous-dossier) à analyser
        Chemin = TabDossiers(D) & "\"
        'Analyse du dossier (ou sous-dossier)
        Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
     [COLOR="blue"]For Each sh In Sheets[/COLOR]
        For Each Fichier In Dossier.Files
            'Liste les fichiers Excel
            If Fichier.Name Like "*.xls" Then
                Set C = [COLOR="Blue"]sh[/COLOR].Columns(3).Find(Left(Fichier.Name, Len(Fichier.Name) - 4), _
                        LookIn:=xlValues)
                If Not C Is Nothing Then
                    [COLOR="blue"]Sheets("11").[/COLOR]Hyperlinks.Add Anchor:=C.Offset(0, 1), Address:=Fichier.Path, _
                          TextToDisplay:=Fichier.Name
                            [COLOR="Red"]'  TextToDisplay:=C.Offset(0, 26)[/COLOR]
                    L = L + 1
                End If
            End If
        Next
[COLOR="blue"]    Next sh[/COLOR]
    Next D
    Set Dossier = Nothing
    Application.ScreenUpdating = True
    MsgBox "Traitement terminé !" & vbLf & L & " lien(s) créé(s)"
End Sub

Private Function lstDossiers(ByVal Chemin As String, Optional Debut As Boolean) As Variant
Dim Dossier As Object, SD As Object, D As Object
Static TabTemp() As String
    If Debut Then
        ReDim TabTemp(1 To 1)
        TabTemp(1) = Chemin
    End If
    Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
    'examen du dossier courant
    For Each D In Dossier.subfolders
        ReDim Preserve TabTemp(1 To UBound(TabTemp) + 1)
        TabTemp(UBound(TabTemp)) = D.Path
    Next
    'Traitement récursif des sous-dossiers (d'après un code de F.Sigonneau)
    For Each SD In Dossier.subfolders
      lstDossiers SD.Path
    Next SD
    lstDossiers = TabTemp()
    Set Dossier = Nothing
End Function

J'ai aussi essayer de mettre le nom du liens avec le contenu de la celulle AC, mais apparement ca ne marche pas, je vais donc aprofondir.

Une question toutefois : quand tu dit "ATTENTION nécessite une référence à la librairie 'Microsoft Visual Basic For Applications Extensibility 5.3" que me faut il exactement comme composant sur des becane avec NT4 et Excel97 ?Ton code va t il fonctionner directement ou dois ajouter des composants ?


En tout cas un grand merci a mdf et Big aplaus

@+
 
Dernière édition:

myDearFriend!

XLDnaute Barbatruc
Re : Chercher fichier contenu dans celulle et creation hyperlien

Bonsoir fredh, le Forum,
fredh à dit:
J'ai aussi essayer de mettre le nom du liens avec le contenu de la celulle AC, mais apparement ca ne marche pas, je vais donc aprofondir.

Une question toutefois : quand tu dit "ATTENTION nécessite une référence à la librairie 'Microsoft Visual Basic For Applications Extensibility 5.3" que me faut il exactement comme composant sur des becane avec NT4 et Excel97 ?Ton code va t il fonctionner directement ou dois ajouter des composants ?
Erreur de ma part, vérification faite, la référence à cette bibliothèque n'est pas indispensable ici. Sinon, pour référencer cette bibliothèque dans le projet VBA, il convenait de faire menu Outils / Références (dans l'éditeur VBE), puis cocher l'élément dans la liste. Il s'agit en fait du fichier "VBE6EXT.OLB". Il n'y a pas si longtemps je travaillais également sur XL97 sur plateforme NT4 et il me semble que ce fichier était aussi présent sur nos configs...

Comme tu vas faire fonctionner cette macro sous XL97, il conviendra toutefois d'y apporter quelques modifications :
  1. Dans les propriétés de ton bouton sur la feuille de calcul, il conviendra de mettre "TakeFocusOnClick" à "False" si tu ne veux pas un plantage avec la méthode Find dans le code.
  2. Pour le lien créé, l'argument "TextToDisplay" n'existe pas dans XL97. La solution consiste à modifier directement la Value de la cellule après création du lien (voir code ci-dessous).
Une remarque quant à ton ajout : la variable sh se déclare de type Worksheet et non variant (par ailleurs, j'ai déplacé les éléments de ta boucle pour optimiser un peu la procédure).

Sauf erreur, le code ci-dessous devrait être compatible XL97 :
Code:
[SIZE=2][COLOR=blue]Option Explicit[/COLOR]

[COLOR=blue]Sub[/COLOR] ScanClasseurs()
[COLOR=green]'myDearFriend! - Septembre 2006[/COLOR]
[COLOR=blue]Dim[/COLOR] Dossier [COLOR=blue]As Object[/COLOR], Fichier [COLOR=blue]As Object
Dim[/COLOR] TabDossiers [COLOR=blue]As Variant[/COLOR], Rep [COLOR=blue]As Variant
Dim[/COLOR] C [COLOR=blue]As[/COLOR] Range
[COLOR=blue]Dim[/COLOR] Chemin [COLOR=blue]As String
Dim[/COLOR] L [COLOR=blue]As Long[/COLOR], D [COLOR=blue]As Long
Dim[/COLOR] sh [B][COLOR=blue]As[/COLOR] Worksheet[/B]
      Rep = Application.InputBox("entrez le nom du répertoire à explorer", "Chemin du répertoire", _
                  "D:\_PC033_prb\Dokumentation\Daten\daten_prb\Schlamm\EMSR_Doku\", [COLOR=blue]Type[/COLOR]:=2)
      [COLOR=blue]If[/COLOR] Rep = [COLOR=blue]False Then Exit Sub
      If Not[/COLOR] Rep [COLOR=blue]Like[/COLOR] "*\?*" [COLOR=blue]Then[/COLOR]
            MsgBox "Veuillez indiquer un dossier (pas un disque)!"
            [COLOR=blue]Exit Sub
      End If[/COLOR]
      Application.ScreenUpdating = [COLOR=blue]False[/COLOR]
      [COLOR=green]'Création du tableau des sous-dossiers existants[/COLOR]
      TabDossiers = lstDossiers(Rep, [COLOR=blue]True[/COLOR])
      [COLOR=blue]For[/COLOR] D = 1 [COLOR=blue]To UBound[/COLOR](TabDossiers)
            [COLOR=green]'Chemin du dossier (ou sous-dossier) à analyser[/COLOR]
            Chemin = TabDossiers(D) & "\"
            [COLOR=green]'Analyse du dossier (ou sous-dossier)[/COLOR]
            [COLOR=blue]Set[/COLOR] Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
            [COLOR=blue]For Each[/COLOR] Fichier [COLOR=blue]In[/COLOR] Dossier.Files
                  [COLOR=green]'Liste les fichiers Excel[/COLOR]
                  [COLOR=blue]If[/COLOR] Fichier.Name [COLOR=blue]Like[/COLOR] "*.xls" [COLOR=blue]Then
[B]                         For Each[/B][/COLOR][B] sh [COLOR=blue]In[/COLOR] Worksheets[/B]
                              [COLOR=blue]Set[/COLOR] C = [B]sh.[/B]Columns(3).Find(Left(Fichier.Name, Len(Fichier.Name) - 4), _
                                          LookIn:=xlValues)
                              [COLOR=blue]If Not[/COLOR] C [COLOR=blue]Is Nothing Then[/COLOR]
[B]                                     sh.[/B]Hyperlinks.Add Anchor:=C.Offset(0, 1), Address:=Fichier.Path
[B]                                     C.Offset(0, 1).Value = C.Offset(0, 26).Value[/B]
                                    L = L + 1
                              [COLOR=blue]End If
[B]                         Next[/B][/COLOR][B] sh[/B]
                  [COLOR=blue]End If
            Next
      Next[/COLOR] D
      [COLOR=blue]Set[/COLOR] Dossier = [COLOR=blue]Nothing[/COLOR]
      Application.ScreenUpdating = [COLOR=blue]True[/COLOR]
      MsgBox "Traitement terminé !" & vbLf & L & " lien(s) créé(s)"
[COLOR=blue]End Sub[/COLOR]

[COLOR=blue]Private Function[/COLOR] lstDossiers([COLOR=blue]ByVal[/COLOR] Chemin [COLOR=blue]As String[/COLOR], [COLOR=blue]Optional[/COLOR] Debut [COLOR=blue]As Boolean[/COLOR]) [COLOR=blue]As Variant
Dim[/COLOR] Dossier [COLOR=blue]As Object[/COLOR], SD [COLOR=blue]As Object[/COLOR], D [COLOR=blue]As Object
Static[/COLOR] TabTemp() [COLOR=blue]As String
      If[/COLOR] Debut [COLOR=blue]Then
            ReDim[/COLOR] TabTemp(1 [COLOR=blue]To[/COLOR] 1)
            TabTemp(1) = Chemin
      [COLOR=blue]End If
      Set[/COLOR] Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
      [COLOR=green]'examen du dossier courant[/COLOR]
      [COLOR=blue]For Each[/COLOR] D [COLOR=blue]In[/COLOR] Dossier.subfolders
            [COLOR=blue]ReDim Preserve[/COLOR] TabTemp(1 [COLOR=blue]To UBound[/COLOR](TabTemp) + 1)
            TabTemp([COLOR=blue]UBound[/COLOR](TabTemp)) = D.Path
      [COLOR=blue]Next[/COLOR]
      [COLOR=green]'Traitement récursif des sous-dossiers (d'après un code de F.Sigonneau)[/COLOR]
      [COLOR=blue]For Each[/COLOR] SD [COLOR=blue]In[/COLOR] Dossier.subfolders
         lstDossiers SD.Path
      [COLOR=blue]Next[/COLOR] SD
      lstDossiers = TabTemp()
      [COLOR=blue]Set[/COLOR] Dossier = [COLOR=blue]Nothing
End Function[/COLOR][/SIZE]
Cordialement,
 

fredh

XLDnaute Occasionnel
Re : Chercher fichier contenu dans celulle et creation hyperlien

mDF tu est apparement né(e) dans un fichier excel..(humour!).
Moi j'ai encore du taf pour comprendre ton code magique....

J'ai apporter tes corections et ca roule nickel sur excel 2003/XPSP2.
Je les testerais demain sur excel97/nt4
Je te remercie pour ton code, ta patience et ta franchise.
Ce poste a ete resolu grace a toi et ta maitrise VBA.

Au plaisir de te relire mDF
@+ Fredh
 

fredh

XLDnaute Occasionnel
Re : Chercher fichier contenu dans celulle et creation hyperlien

Bonsoir le fil

mDF j'ai modifier un peu ton code.
En effet j'ai stocke les sources de donnée et les module dans perso.xls (dans excellstart) car j'aurai besoin de lancer la macro depuis excell et dans n'importe qu'elle fichier.

Seulement voila j'ai un soucis.
Si j'appelle la macro par une icone dans une barre d'outil ca roule.
Par contre si je crée un bouton de commande sur une feuille d'un fichier ca ne marche pas. Une idées de la provenance du Bug ?

dans un module de perso.xls
Code:
Option Explicit

Sub ScanClasseurs()
'myDearFriend! - Septembre 2006
Dim Dossier As Object, Fichier As Object
Dim TabDossiers As Variant, Rep As Variant
Dim C As Range
Dim Chemin As String
Dim L As Long, D As Long
Dim sh As Worksheet
      Rep = Application.InputBox("entrez le nom du répertoire à explorer", "Chemin du répertoire", _
                  "[COLOR="Red"]C:\_PC033_prb\Dokumentation\Daten\daten_prb\Schlamm\EMSR_Doku\[/COLOR]", Type:=2)
      If Rep = False Then Exit Sub
      If Not Rep Like "*\?*" Then
            MsgBox "Veuillez indiquer un dossier (pas un disque)!"
            Exit Sub
      End If
      Application.ScreenUpdating = False
      'Création du tableau des sous-dossiers existants
      TabDossiers = lstDossiers(Rep, True)
      For D = 1 To UBound(TabDossiers)
            'Chemin du dossier (ou sous-dossier) à analyser
            Chemin = TabDossiers(D) & "\"
            'Analyse du dossier (ou sous-dossier)
            Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
            For Each Fichier In Dossier.Files
                  'Liste les fichiers Excel
                  If Fichier.Name Like "*.xls" Then
                         For Each sh In Worksheets
                              Set C = sh.Columns([COLOR="red"]4[/COLOR]).Find(Left(Fichier.Name, Len(Fichier.Name) - 4), _
                                          LookIn:=xlValues)
                              If Not C Is Nothing Then
                                     sh.Hyperlinks.Add Anchor:=C.Offset(0, [COLOR="red"]-1[/COLOR]), Address:=Fichier.Path
                                     C.Offset(0, [COLOR="red"]-1[/COLOR]).Value = [COLOR="red"]C.Value[/COLOR]
                                    L = L + 1
                              End If
                         Next sh
                  End If
            Next
      Next D
      Set Dossier = Nothing
      Application.ScreenUpdating = True
      MsgBox "Traitement terminé !" & vbLf & L & " lien(s) créé(s)"
End Sub

Private Function lstDossiers(ByVal Chemin As String, Optional Debut As Boolean) As Variant
Dim Dossier As Object, SD As Object, D As Object
Static TabTemp() As String
      If Debut Then
            ReDim TabTemp(1 To 1)
            TabTemp(1) = Chemin
      End If
      Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
      'examen du dossier courant
      For Each D In Dossier.subfolders
            ReDim Preserve TabTemp(1 To UBound(TabTemp) + 1)
            TabTemp(UBound(TabTemp)) = D.Path
      Next
      'Traitement récursif des sous-dossiers (d'après un code de F.Sigonneau)
      For Each SD In Dossier.subfolders
         lstDossiers SD.Path
      Next SD
      lstDossiers = TabTemp()
      Set Dossier = Nothing
End Function

le commande bouton dans fichierx
Code:
Private Sub CommandButton1_Click()
    Application.Run "Personl.xls!ScanClasseurs"
End Sub

Merci et @+
 
Dernière édition:

fredh

XLDnaute Occasionnel
Re : Chercher fichier contenu dans celulle et creation hyperlien

Bonsoir mDF; le fil

Apres avoir tester sur Excel97/NT4 pendant 2 jour

Je me rend compte que si je clique sur hyperlien1 dans mon fichier A, excel me ferme le fichier A et m'ouvre le fichier hyperlien1 . J'ai l'impresion que c'est carement l'aplication(excel) qui est fermer et qui se reouvre.

De plus je reouvre le fichier A par l'explorateur pour cliquer sur hyperlien2 et la pareil, il me ferme le fichier A (ou l'aplication excel) et ouvre le fichier hyperlien2 dans la meme aplication que hyperlien1.

Je ne sais pas si cela est du a excel97/nt4 ou si cela provient de la creation de hyperlien par ton code.

C'est bizarre n'est ce pas?; d'autant plus que cela n'est pas le cas pour Excell2003/XP

Cela est tres genant car nous utilisont le fichier A comme fichier principale pour lancer les hyperliens, de plus si il faut a chaque fois reouvrir le fichier A c'est pas la peine d'avoir fais des hyperlien...

Merci et @+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 276
Messages
2 086 714
Membres
103 377
dernier inscrit
fredy45