Accéder à un répertoire à partir de .GetOpenFilename

Résolu/Fermé
conrade82 Messages postés 96 Date d'inscription dimanche 21 avril 2013 Statut Membre Dernière intervention 9 septembre 2016 - 2 oct. 2014 à 16:49
 celine - 29 déc. 2015 à 22:20
Bonjour,

Je travaille sur un fichier dont certaines feuilles doivent être mise à jour à partir d'autre fichier. Un de ces fichiers est situé sur un autre répertoire réseau et porte un nom différent exemple Ditri 689, 690, 670... ainsi de suite. Il est actualisé deux à trois fois par semaine.

Au début j'ai voulu trouver le moyen de repérer le dernier fichier modifier du répertoire. Dommage, je n'ai rien trouvé qui me convienne car le répertoire ne contient pas que ce fichier...

Récemment, j'ai découvert le code application.GetOpenFilename("Fichier Excel (*.xls),*.xls") e j'ai aimé car je peux faire ceci : Distri=application.GetOpenFilename("Fichier Excel (*.xls),*.xls") Distri étant une variable string qui pourra me servir plus loin dans le traitement de ma macro.

Mon souci: ce code démarre la "fonction" OUVRIR d'excel pour ouvrir un fichier excel. Mais la fenêtre qui s'ouvre est par défaut soit le dernier répertoire qu'on a ouvert dans Excel soit Mes Documents ou un truc dans le genre. Ma question: comment pus-je faire pour que la fenêtre s'ouvre directement sur le chemin d'accès réseau qui m'intéresse pour y sélectionner le fichier recherché qui sera appelé plus tard dans ma macro ?

Merci d'avance de votre aide.


3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par pijaku le 2/10/2014 à 18:09
Essaies cette fonction

Function recherchedossier()
' @+thierry_xld et michel_m
Dim ObjShell As Object, ObjFolder As Object
Dim Message As String
Dim Chemin As String
    
Message = "Faire la Sélection du Repertoire de sauvegarde:"

Set ObjShell = CreateObject("Shell.Application")
Set ObjFolder = ObjShell.BrowseForFolder(&H0&, Message, 1)
    
    On Error Resume Next 'Si on sort sans sélection
    Chemin = ObjFolder.ParentFolder.ParseName(ObjFolder.Title).Path & "\"
    If Chemin = "" Then End
    recherchedossier = Chemin
End Function


et pour rendre le dossier actif
chdir chemin

Michel
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 2/10/2014 à 18:13
Salut Michel,
Un bug sur les balises codes nous empêche de placer : "\"
Par conséquent, lorsque tu places un "\" entre les balises code comme tu l'as fait, pour qu'il apparaisse à la lecture, il faut que tu le double : "\\"

Essai 1 : "" donne
""
EDIT : oh ben là il est même pas passé en dehors des balises code...

Essai 2 : "\\" donne
"\"

C'est embêtant car quand il n'apparait pas, le code sort avec une erreur "le fichier n'existe ^pas" blablabla...
Voilà
A+
0
conrade82 Messages postés 96 Date d'inscription dimanche 21 avril 2013 Statut Membre Dernière intervention 9 septembre 2016 4
Modifié par conrade82 le 2/10/2014 à 21:24
Bonjour,

ta proposition ne me convient pas Michel. Je pensais qu'on pouvais cibler le répertoire dans lequel l'ouverture du fichier se ferait... là tu me donnes une autre façon d'ouvrir un dossier ce que mon code de départ fait déjà. Mon but c'est d'éviter la personne qui lance ma macro de devoir rechercher l'accès réseau vers lequel on doit sélectionner le fichier qui nous intéresse. Ou alors je n'ai pas compris ton idée.

Une idée svp?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
2 oct. 2014 à 22:59
Merci pour le temps passé
0
conrade82 Messages postés 96 Date d'inscription dimanche 21 avril 2013 Statut Membre Dernière intervention 9 septembre 2016 4
Modifié par conrade82 le 3/10/2014 à 13:01
Désolé Michel. Merci en effet pour ta proposition, désolé que ma réponse ait eu l'impression de dénigrer ta proposition. En fait ce n'est pas tout à fait ce que je recherchais. Mais merci beaucoup en effet pour avoir réfléchi à mon problème. :)

Très Cdt,
0