Trouver les fichiers en mode dynamique ?

MJ13

XLDnaute Barbatruc
Re : Trouver les fichiers en mode dynamique ?

Re bonjour
Bon j'ai un peu modifié le code pour avoir le chemin + le nom du fichier (voir post -2).

Pour ouvrir un fichier avec le path (ou chemin) + le nom du fichier dans une cellule tu peux utiliser

Sub ouvre_fichier
Rn = ActiveCell.Text
ThisWorkbook.FollowHyperlink Rn
End sub
 

Épaf

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

alucard_xs a dit:
sinon je vois que j'ai accès quà mon D: et sous repertoire , est ce possible d'avoir accès à tout son disque dur ?
Je vais répondre à tes questions une par une
Pour voir tout ton disque dur, tu mets simplement dans la première macro
Code:
Sub ListerLesFichiersDunRepertoire()
Dim chemin As String
    chemin = ChoixDossierFichier[COLOR="Red"]("")[/COLOR] '<- ici le chemin de ton choix
    If chemin = "" Then Exit Sub
    ListerLesFichiersParOrdreAlpha (chemin)
End Sub
Ensuite
alucard_xs a dit:
Par contre j'ai une erreur dans le programme
erreur 445
cet objet ne gere pas cette action et la ligne en jaune est la suivante :
Set fs = Application.FileSearch
Quelle version d'Excel as-tu ?
Sélectionne FileSearch et fais une recherche dans l'aide en ligne (F1). Si tu ne l'as pas, il va falloir que tu cherches l'équivalent dans ta version.
Enfin,
=alucard_xs a dit:
sinon pour mes fichiers, je pense que un simple click sur les fichiers présents en liste dans la feuille un devrait suffire.
Là c'est simple. Tu vas dans l'éditeur VBA, tu sélectionnes "Feuil1" (deux clics t'ouvre la feuille de code).
Là tu mets ce code
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub
If MsgBox("Ouvrir le fichier " & Target, vbYesNo, "Ouvrir un fichier") = vbYes Then _
    Workbooks.Open Target
End Sub
A chaque sélection d'un nom de fichier, te sera posée la question "Ouvrir Oui/Non"
Pour FileSearch, vérifie que les références ci-après sont bien validées -> Dans l'éditeur VB -> Menu Outils -> Références -> Tu valides les 4 présentes dans l'exemple Références_.JPG
@+

NB - L'exemple ci-dessus est pour Office 10.0 (2003)
 
Dernière édition:

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

et bien, vous êtes de sacrées tête pour aller aussi vite ...
j'ai trouvé un sub pour affecter une macro à toute une série de fichier excel présent dans un repertoire (fixe pour le moment hélas)

Code:
Sub loopThroughFilesExample() 
application.DisplayAlerts = false
myFile = activeworkbook.name
myPath = "C:\Excel\deleteThese\"       'Change this to your directory
workfile = Dir(myPath & "*.xls")
do While workfile <> "" 
application.StatusBar = "Now working on " & workfile workbooks.Open Filename:=myPath & workfile
doSomething activeworkbook
activeworkbook.save : Windows(workfile).Close
Windows(myFile).Activate workfile = Dir() 
loop
application.StatusBar = false 
end Sub Sub doSomething(inBook As Workbook)
'indiquez ce que vous voulez faire pour un classeur & utilisez les instruction suivantes pour boucler sur ses feuilles
for each wksht In inBook.worksheets
        'do whatever you want here to each worksheet....
next wksht
end Sub
Ce dont je ne comprends pas c'est ce

Code:
myPath = "C:\Excel\deleteThese\"       'Change this to your directory
Comment le faire passer pour une variable puisque cela va dépendre de mon choix dans la boite de browsing du départ ?
 

Staple1600

XLDnaute Barbatruc
Re : Trouver les fichiers en mode dynamique ?

Bonjour

Pourquoi pas avec une Inputbox

comme je te l'indiquait dans le post cité par MJ13

et dans ton code initial
Code:
Sub ListerLesFichiersDunRepertoire()
Dim RepFich as String
Dim chemin As String
RepFich=InputBox("Chemin et nom répertoire?")
    chemin = ChoixDossierFichier(RepFich) '<- ici le chemin de ton choix
    If chemin = "" Then Exit Sub
    ListerLesFichiersParOrdreAlpha (chemin)
End Sub

Dans ton "sub"
Remplacer
myPath = "C:\Excel\deleteThese\"

par

myPath = InputBox("Répertoire?")
 
Dernière édition:

Épaf

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

alucard_xs a dit:
Ce Application.FileSearch, il nous renvoie quelle information, de plus quelle est sa dimension ?
J'espère que tu n'es pas sur MAC :
L'aide a dit:
Cette propriété renvoie un objet FileSearch pour utilisation avec des recherches de fichier. Cette propriété est disponible uniquement dans Microsoft Windows.
alucard_xs a dit:
j'utilise office 2007 je pense que ça doit venir de là je vais essayer chez un pote sur office 2003.
C'est sans doute la raison, mais tu dois avoir l'équivalent sur 2007.
Pour que ça fonctionne dans les deux cas, et si tu souhaites essayer avec mon code, tu diras, je te dirai comment faire, je ne vais pas allourdir ce post puisque tu as d'autres réponses.
Bon courage
 

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

oui pas d'inquiétude j'ai installé la version 2003 de toute façon qui doit etre plus compatible.

Code:
Sub loopThroughFilesExample()
Application.DisplayAlerts = False
myFile = ActiveWorkbook.Name
myPath = InputBox("Choix du repertoire")       'Change this to your directory
workfile = Dir(myPath & "*.xls")
Do While workfile <> ""
  'application.StatusBar = "Now working on " & workfile workbooks.Open Filename:=myPath & workfile
  doSomething ActiveWorkbook
  ActiveWorkbook.Save: Windows(workfile).Close
  'Windows(myFile).Activate workfile = Dir()
Loop
Application.StatusBar = False
End Sub
par contre pour appeler cette sub normalement dans ma sub principale, j'ai rajouté cette ligne :

Code:
Sub ListerLesFichiersDunRepertoire()
Dim chemin As String
    chemin = ChoixDossierFichier("") '<- ici le chemin de ton choix
    If chemin = "" Then Exit Sub
    ListerLesFichiersParOrdreAlpha chemin
    loopThroughFilesExample()
    
End Sub
mais à priori, vu qu'elle est en rouge il doit me manquer des paramètres
 

Épaf

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

Oui, si loopThroughFilesExample est une macro que tu appelles, pour appeler une macro, supprime les parenthèses
@+
 
Dernière édition:

MJ13

XLDnaute Barbatruc

Épaf

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

Edit
Pour appeler une macro tu peux écrire

Code:
loopThroughFilesExample
'ou
Call loopThroughFilesExample
Avec paramètres, tu peux écrire
Code:
LaMacro LeParam1, LeParam2
'ou
Call LaMacro(LeParamètre, LeParam2)
 

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

ok merci le soucis de la "myPath = InputBox("Répertoire?")" c'est qu'il va falloir re-entrer le repertoire que j'aurai choisi dès le départ et en plus le re-entrer à la main, donc peu pratique, comment sauvegarder le repertoire choisi du départ et le placer ici ?

au fait le fait d'ouvrir mes fichiers excel en cliquant dessus marche bien mais le soucis c'est que toutes se superposent en fait à la premiere feuille.
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Re : Trouver les fichiers en mode dynamique ?

Bonjour Alucard_XS, Épaf, MJ13, les amis et amies du Forum

En effet le code "tel-quel" d'Épaf contient une erreur aussi si je le fais tourner chez moi...

Par contre, j'ai eu souvent besoin de faire le genre de travail que tu demandes, et bien que j'utilise aussi une Objet Shell "BrowseForFolder" suivi d'un simple Application "FileSearch", il semble que je passe mes arguments entre les deux d'une manière plus "blindée".

Pour BrowserForFolder, il faut connaître un petit peu les paramètres nécessaires à son bon fonctionnement :

ObjShell.BrowseForFolder(0, Prog, True, TheDrive)

Le premier paramètre 0 pour le "handle" de la fenêtre qui va "surgir" (toujours zéro, ou en HexaDecimal qui me parraît toujours aussi chinois à lire)

Le second paramètre Prog pour le message que l'on veut faire passer dans le Pop-Up


Le troisème paramètre True (ou -1) est une option pour éviter de laisser la possibilité à l'utilisateur d'avoir le bouton "New Folder" ou "Créer un Nouveau Dossier" puisqu'inutile dans le cas présent où l'on cherche des dossiers existants (mettre à False ou 0 pour avoir ce choix)

Pour le quatrième et dernier paramètre TheDrive il permet de placer le Browsing sur le Drice ou le Chemin de départ, je le place en Constante (Private Const) en top de module (comme pour les autres constantes)

Voilà pour démystifier un peu ce "BrowseForFolder".

En ce qui concerne le "FileSearch" il est très simple d'emploi pour peu que l'on lise comme suit :

Set SearcherFile = Application.FileSearch = Creation de L'objet
With SearcherFile
.NewSearch = Initialisation
.Filename = ArgTheFilter = La Constante "*.xls" pour filter sur un type de fichier)
.LookIn = ArgThePath = L'Argument du Chemin passé par la Function BrowseForFolder
.SearchSubFolders = False = Si on place à true, on va remonter aussi les fichiers des sous répertoires
.Execute msoSortByFileName, msoSortOrderAscending
= On passe les option de Tri, et d'Ordre dans l'exécution.


Voilà c'est pas plus sorcier pour les principes de base, évidemment il y a besoin d'une certaine maîtrise de VB, VBA pour ensuite mettre le tout ensemble, j'ai essayé d'être propre dans la Démo ci-jointe qui, j'espère, sera utile à tout les visiteurs et visiteuses.

Je pense que tu seras content alucard_xs car j'ai également préparé une surprise pour la suite de ton projet de programme que je te laisse découvrir...

Bon Week End
@+Thierry


EDITION : Bonjour aussi à Stapple
PS : DEMO Réalisée sous Office 2003, ça m'interresserait de savoir si elle passe sous 2007
 

Fichiers joints

Dernière édition:

Épaf

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

Dans mon code, tu le sélectionnes dans la boîte de dialogue qui s'affiche... En outre, les noms placés dans Feuil1 incluent le chemin. Donc cette question ne s'adresse pas à moi. Mais je pense que
myPath = RépertoireDuDépart & InputBox("Répertoire?")"
ou
myPath = RépertoireDuDépart & " \" & InputBox("Répertoire?")"
devrait régler ton pb
@+
 

_Thierry

XLDnaute Barbatruc
Re : Trouver les fichiers en mode dynamique ?

Re bonjour à tous

Oups, dans la Démo disponible ci-dessus, j'ai laissé ma constante comme suit lors de mes derniers tests...

Private Const FileType As String = "*.DOC"

Il est clair que l'on peut la remettre à "*.XLS " pour des Fichiers Excel ou encore "*.*" pour tout remonter


Bien à vous

@+Thierry
 

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

oui oui merci Thierry j'avais corrigé.
sinon j'ai mis

myPath = chemin

ça a l'air de passer par contre, ce qui serait bien c'est que ça me traite les fichiers contenus dans ce fameux "chemin" en fond de tâche et que ça me laisse ma feuil1 avec mes fichiers présents qu'on avait tout à l'heure.
 

Épaf

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

Je pense avoir trouvé le pb.
Dans mon code, tu as
Code:
With fs
    .LookIn = chemin
    .FileType = msoFileTypeExcelWorkbooks
Teste en remplaçant msoFileTypeExcelWorkbooks par 1 => Liste tous les fichiers du répertoire.
3 liste les .doc et 4 les .xls
Ce qui donne
Code:
With fs
    .LookIn = chemin
    .FileType = 1 ' tous les fichiers
C'est un peu fort que ça ne fonctionne que chez moi. Et ma réponse correspond très exactement à ton pb : Choix du répertoire dans une liste -> Liste des fichiers de ce répertoire dans Feuil1 -> Ouverture du fichier sélectionné. Testé.
@+
 

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

en mettan "1" il me detecte tout les fichiers, leur ouverture marche également en cliquant dessus.
 

Épaf

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

Ok, alors maintenant, teste avec 4
Pour le code à placer "derrière" la feuil1, j'ai modifié afin qu'il n'y ait pas d'erreus si tu sélectionnes la colonne ou plusieurs cellules.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub 'limité à colonne 1
If InStr(Target.Address, ":") <> 0 Then Exit Sub 'sélection de plusieurs cellules
If MsgBox("Ouvrir le fichier " & Target, vbYesNo, "Ouvrir un fichier") = vbYes Then _
    Workbooks.Open Target
End Sub
Tu corriges ;)
@+
 

Épaf

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

En prime, un lien pour FileSearch 2007
Je vais être mal vu, je suis allé le chercher sur un forum (très) ami :rolleyes:
 

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

lol c vraiment du boulot quand même , j'ai regarder le prog de Thierry, vous pensez que c'est compatibles avec les notres ?
 

Discussions similaires


Haut Bas