Recherche de fichier à partir d'excel

Fermé
rimkaduclos Messages postés 8 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009 - 4 août 2009 à 13:45
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 5 août 2009 à 11:43
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???
A voir également:

8 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
4 août 2009 à 14:36
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
rimkaduclos Messages postés 8 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009
4 août 2009 à 14:48
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
4 août 2009 à 15:06
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
rimkaduclos Messages postés 8 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009
4 août 2009 à 15:36
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
4 août 2009 à 15:47
Je vais voir ce que je peux faire... De retour dans 5 minutes...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
4 août 2009 à 15:55
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
rimkaduclos Messages postés 8 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009
4 août 2009 à 16:35
ç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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
4 août 2009 à 16:37
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
rimkaduclos Messages postés 8 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009
4 août 2009 à 17:07
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
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
4 août 2009 à 18:19
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
rimkaduclos Messages postés 8 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009
4 août 2009 à 18:35
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
rimkaduclos Messages postés 8 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009
4 août 2009 à 18:55
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
5 août 2009 à 08:41
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
rimkaduclos Messages postés 8 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009
5 août 2009 à 11:31
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
5 août 2009 à 11:43
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