Recherche de fichier à partir d'excel

rimkaduclos Messages postés 8 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
j'ai des fichiers qui sont rangé dans un dossier qui est décomposé en autres sous dossiers etc et en dernier rang on trouve ces fichiers. je souhaiterais me créer une petite application sous excel employant les liens hypertexte de telle facons que lorsque je tape le numéro du fichier que je souhaite obtenir celui ci s'ouvre automatiquement.
il faudrait que cette petite application retrouve le fichier uniquement a partir du dossier principal (car tout les sous dossier ont des noms différents donc difficile a mettre en ouevre une forme de pré tri)
est ce que c'est possible de faire ce genre de chose ou faut il que j'arrète de rêver???
Configuration: Windows XP Internet Explorer 7.0

8 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    J'ai trouvé ici un code que j'ai adapté...:

    Dim ScanFic As Office.FileSearch
    Dim NomFic As Variant
    Dim Diag As String
    Dim Nbr As Long
    Dim I As Long
    Set ScanFic = Application.FileSearch
    With ScanFic
    .NewSearch
    .LookIn = "E:\Utilisateurs\gnagnagna\etc etc"
    .SearchSubFolders = True
    .Filename = "xls"
    .MatchTextExactly = True
    .FileType = msoFileTypeAllFiles
    Nbr = .Execute
    I = 0
    For Each NomFic In .FoundFiles
    I = I + 1
    Sheets("Feuil1").Cells(I, 1).Select
    ActiveCell = I
    ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:=NomFic
    Next
    End With
    0
    1. rimkaduclos Messages postés 8 Statut Membre
       
      merci pour l'info
      mais je suis grave novice dans le domaine et le truc que tu m'a envoyer ben je ne sais pas comment je dois l'utiliser (ou est ce qu'il faut que je le note quel paramètre je dois modifier etc etc)
      merci d'avance
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Alors pas de souci.
    Le plus simple est un "CommandButton".
    Tu ouvres un classeur Excel.
    Tu l'enregistres (par exemple recherche fichiers.xls)
    Tu va dans Affichage/Barre d'outils/Barre d'outils contrôles. Tu coches cette option (si ce n'est pas déjà fait).
    Dans cette barre d'outils, tu cherches l'icône correspondante à "Bouton de Commande" (petit rectangle gris)
    Tu cliques dessus et dessines ton propre bouton dans la feuille Feuil1 de ton classeur Excel.
    Double clic sur ce bouton et apparait la fenêtre VBE avec dedans :

    Private Sub CommandButton1_Click()

    End Sub

    Entre ces deux lignes, tu fais un copier / coller de ce code en adaptant les parties grasses :

    Dim ScanFic As Office.FileSearch
    Dim NomFic As Variant
    Dim Diag As String, fich As String
    Dim Nbr As Long, I As Long
    Dim prem As Integer, dern As Integer
    Set ScanFic = Application.FileSearch
    With ScanFic
    .NewSearch
    .LookIn = "C:\Utilisateurs\gnagnagna\Mes documents\TRAVAIL\gnagnagna" '--->ici tu remplaces par le chemin de ton dossier
    .SearchSubFolders = True
    .Filename = "*.*" '---> affiche tous les fichiers de tous les sous dossiers du dossier choisi. Tu peux remplacer par xls, ppt ou doc etc....
    .MatchTextExactly = True
    .FileType = msoFileTypeAllFiles
    Nbr = .Execute
    I = 0
    For Each NomFic In .FoundFiles
    prem = Len(NomFic)
    dern = Len("C:\Utilisateurs\gnagnagna\Mes documents\TRAVAIL\gnagnagna") '--->recopie exactement le chemin que tu as indiqué plus haut
    fich = Right(NomFic, prem - dern - 1)
    I = I + 1
    Sheets("Feuil1").Cells(I, 1).Select
    ActiveCell = I
    Sheets("Feuil1").Cells(I, 2).Select
    ActiveCell = fich
    ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:=NomFic
    Next
    End With
    Columns("A:B").EntireColumn.AutoFit

    pour obtenir ceci :

    Private Sub CommandButton1_Click()

    ici tout le code...

    End Sub

    Ensuite, tu fermes cette fenêtre VBE et cliques sur l'icône "Désactiver le mode création" (première à gauche normalement).
    Et cliques sur ton bouton
    0
    1. rimkaduclos Messages postés 8 Statut Membre
       
      merci pour les explication
      je viens d'essayer et en fait il y a un passage que j'ai du supprié parce que ça buggait
      "pour obtenir ceci :

      Private Sub CommandButton1_Click()

      ici tout le code..."

      et le truc c'est que pour le moment en fait ça me crée un lien hypertexte pour tout les fichiers qui existe dans le dossier et ce que je voudrais c'est que je tape mon nom de fichier sur une cellule je clique sur le bouton et ça me met le lien hypertexte sur la ligne de dessous ou un truc du genre

      encore désolé de t'embeter mais vraiment je suis grave novice la dedans
      et merci encore
      0
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Je vais voir ce que je peux faire... De retour dans 5 minutes...
    0
  4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Voilà : Tu écris ton nom de fichier en A2 avec l'extension (ex : classeur1.xls) et tu cliques

    Dim ScanFic As Office.FileSearch
    Dim NomFic As Variant
    Dim Diag As String, fich As String, exten As String
    Dim Nbr As Long, I As Long
    Dim prem As Integer, dern As Integer
    Set ScanFic = Application.FileSearch
    With ScanFic
    .NewSearch
    .LookIn = "C:\Utilisateurs\gnagna\Mes documents\TRAVAIL\blablabla"
    .SearchSubFolders = True
    .Filename = exten
    .MatchTextExactly = True
    .FileType = msoFileTypeAllFiles
    Nbr = .Execute
    I = 1
    For Each NomFic In .FoundFiles
    prem = Len(NomFic)
    dern = Len("C:\Utilisateurs\gnagna\Mes documents\TRAVAIL\blablabla")
    fich = Right(NomFic, prem - dern - 1)
    If fich = Range("A2").Value Then
    Range("A3").Select
    ActiveCell = fich
    ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:=NomFic
    Else
    I = I + 1
    End If
    Next
    End With
    Columns("A:B").EntireColumn.AutoFit

    A placer entre : Private Sub CommandButton2_Click() et End sub
    0
    1. rimkaduclos Messages postés 8 Statut Membre
       
      ça ne marche pas
      après avoir créé le bouton j'ai inscrit sur la cellule A2 le nom du fichier mais sans son extension puis cliqué sur le bouton créé, ça m'a marqué erreur automation défaillance irrémédiable, puis j'ai cliqué sur déboguage et là ça m'a surligné en jaune le mot Next
      j'ai pourtant bien corrigé le chemin du dossier dans les 2 lignes de code et j'ai remarqué qu'au niveau de Filename ça à changé par rapport a tout à l'heure ( "*.*" est devenu exten)
      je crois que je ne vais jamais y arrivé
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Non c'est ma faute.
    Voici le code pour rechercher des fichiers excel :

    Dim ScanFic As Office.FileSearch
    Dim NomFic As Variant
    Dim Diag As String, fich As String, exten As String
    Dim Nbr As Long, I As Long
    Dim prem As Integer, dern As Integer
    Set ScanFic = Application.FileSearch
    With ScanFic
    .NewSearch
    .LookIn = "C:\Utilisateurs\gnagna\Mes documents\TRAVAIL\blablabla"
    .SearchSubFolders = True
    .Filename = "xls"
    .MatchTextExactly = True
    .FileType = msoFileTypeAllFiles
    Nbr = .Execute
    I = 1
    For Each NomFic In .FoundFiles
    prem = Len(NomFic)
    dern = Len("C:\Utilisateurs\gnagna\Mes documents\TRAVAIL\blablabla")
    fich = Right(NomFic, prem - dern - 1)
    If fich = Range("A2").Value Then
    Range("A3").Select
    ActiveCell = fich
    ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:=NomFic
    Else
    I = I + 1
    End If
    Next
    End With
    Columns("A:B").EntireColumn.AutoFit
    0
    1. rimkaduclos Messages postés 8 Statut Membre
       
      plus de bug mais rien qui marche
      d'après ce que j'ai pu comprendre normalement la fonction devrait générer un lien hypertext sur la cellule A3
      mais là rien ne se passe. autre truc ce que je recherche c'est des dwg donc au lieu de xls j'ai mis dwg
      et dans la cellule A2 je met le nom de fichier avec son extension je clique sur le bouton le sablier apparait et après rien ne se passe (pas de création hyperlien)
      je commence à déprimer lol
      0
  7. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    Bonjour,
    j'ai quelque peu modifié le code de pijaku, cela devrais maintenant fonctionner (reste à le faire sur toute la feuille ou créer une fonction,mais là je laisse la main, jdois filer....) :
    Dim ScanFic As Office.FileSearch
    Dim Nbr As Long
    Set ScanFic = Application.FileSearch
    With ScanFic
    .NewSearch
    .Filename = Range("A2").Value
    .LookIn = "C:\Utilisateurs\gnagna\Mes documents\TRAVAIL\blablabla"
    .SearchSubFolders = True
    .FileType = msoFileTypeExcelWorkbooks
    Nbr = .Execute
    End With
    If Nbr = o Then
        Range("A3").Value = "Aucun fichier trouvé"
        Exit Sub
    ElseIf Nbr > 1 Then
        Range("A3").Value = "Plusieurs fichiers trouvés"
        Exit Sub
    End If 
    For Each f In ScanFic.FoundFiles
        ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Range("A3"), Address:=f, TextToDisplay:=f
    Next f
    0
    1. rimkaduclos Messages postés 8 Statut Membre
       
      nickel j'ai juste fais une petite modif sur le filetype j'ai mis que c'étais allfiles parce qu'il y a différent format de fichier
      ça marche au poil
      vraiment merci à toi tompols et aussi a toi pijaku de m'avoir accordé beaucoup de votre temps
      @+
      0
    2. rimkaduclos Messages postés 8 Statut Membre
       
      je fais plein d'essai en tout genre mais en fait il me manque une petite info
      quand on a plusieurs même nom de fichiers (sous des extensions différentes) le programme m'indique qu'il y a plusieurs fichiers trouvé mais je n'ai pas les liens qui apparaissent que dois je faire pour les faire apparaitre
      merci d'avance
      0
  8. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Salut,
    Je reprends en route...
    Plusieurs fichiers trouvés et rien ne s'affiche... Normal tu as mis ce code (sortir de la macro si plusieurs fichiers trouvés...) :

    ElseIf Nbr > 1 Then
    Range("A3").Value = "Plusieurs fichiers trouvés"
    Exit Sub
    End If

    J'ai retravaillé sur la base de tompols et ça donne :

    Dim ScanFic As Office.FileSearch
    Dim Nbr As Long
    Set ScanFic = Application.FileSearch
    With ScanFic
    .NewSearch
    .Filename = Range("A2").Value
    .LookIn = "C:\Utilisateurs\gnagna\Mes documents\TRAVAIL\blablabla"
    .SearchSubFolders = True
    .FileType = msoFileTypeAllFiles
    Nbr = .Execute
    End With
    If Nbr = o Then
    Range("A3").Value = "Aucun fichier trouvé"
    Exit Sub
    ElseIf Nbr > 1 Then
    Range("A3").Value = "Plusieurs fichiers trouvés"
    End If
    ActiveSheet.Range("A3").Select
    For Each f In ScanFic.FoundFiles
    If ActiveCell <> "" Then
    ActiveCell.Offset(1, 0).Select
    End If
    ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:=f, TextToDisplay:=f
    Next f

    Cette fois ci c'est la bonne!!!!
    0
    1. rimkaduclos Messages postés 8 Statut Membre
       
      nickel ça marche bien le seul truc c'est que dès que je lance la recherche ça m'efface tout l'historique de mes précédente recherche genre un truc dans le programme qui fais effacer les lignes A3 à A10 par exemple
      et après ce sera tip top
      0
  9. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Avec ceci une glace vanille un milkShake banane et une boisson fraiche???

    Je plaisante.
    Pour l'effacement ajoute ceci :
    Range("A3:A10").ClearContents
    après :
    Nbr = .Execute
    End With
    0