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
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
A voir également:
- Recherche de fichier à partir d'excel
- Fichier rar - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Liste déroulante excel - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
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
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
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
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
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
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
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
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
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
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
4 août 2009 à 15:47
Je vais voir ce que je peux faire... De retour dans 5 minutes...
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
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
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
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
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é
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é
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
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
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
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
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
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
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
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....) :
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
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
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
@+
ça marche au poil
vraiment merci à toi tompols et aussi a toi pijaku de m'avoir accordé beaucoup de votre temps
@+
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
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
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
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
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!!!!
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!!!!
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
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
et après ce sera tip top
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
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
Je plaisante.
Pour l'effacement ajoute ceci :
Range("A3:A10").ClearContents
après :
Nbr = .Execute
End With
4 août 2009 à 14:48
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