Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Definir Chemin d'un dossier pour macro

  • Initiateur de la discussion Initiateur de la discussion Delux
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Delux

XLDnaute Occasionnel
Bonjour a tous et a toutes,

Desole pour les accents je bosse sur QWERTY.

Je me creuse la tete depuis plusieurs jours pour essayer de definir un chemin de repertoire qui va etre utilise par une macro.

J'aimerais pouvoir definir le repertoire ("pfile") moi meme, en choisissant le dossier, car les fichiers a selectionner pour ma macro pourront etre sauvegardes dans differents repertoires:

Code:
pfile = ActiveWorkbook.Path & "\Users\"
nfile = Dir(pfile & "*.xls")

J'ai bien trouve des macros pour selectionner des chemins d'acces vers les dossiers mais je n'arrive pas a les appliquer pour que "pfile" se modifie en fonction de la selection.

Code:
Sub test()

Dim Dossier As FileDialog
Set Dossier = Application.FileDialog(msoFileDialogFolderPicker)
MsgBox "Select a folder where the Users' templates are saved"
Dossier.Show
MsgBox Dossier.SelectedItems(1)

End Sub

Quelqu'un aurait-il une solution?

Merci d'avance

Cordialement,

Delux
 
Re : Definir Chemin d'un dossier pour macro

Bonjour,
La solution est dans ta question !
Code:
Sub test()
Dim Dossier As FileDialog
Set Dossier = Application.FileDialog(msoFileDialogFolderPicker)
Dossier.Show
If Dossier.SelectedItems.Count > 0 Then pfile = Dossier.SelectedItems(1) & "\"
End Sub
A+
kjin
 
Re : Definir Chemin d'un dossier pour macro

Kjin,

Est-il possible de voir dans le dossier les fichiers excel presents sans devoir les selectionner?

Je m'explique, si on rajoute le code suivant, la boite de dialogue s'ouvre avec les fichiers excel que contient le dossier, mais il faut choisir le fichier excel et non plus le dossier.

Code:
msoFileDialogFilePicker

Cordialement,

Delux
 
Re : Definir Chemin d'un dossier pour macro

Re,

En fait, quand on utilise le code suivant pour afficher les dossiers, les fichiers n'apparaissent pas
Code:
Application.FileDialog(msoFileDialogFolderPicker)

Si on rajoute le code qui suit, en plus de celui au dessus, on voit les dossiers et les noms des fichiers presents, mais on est desormais oblige de choisir le fichier et non plus le dossier
Code:
Application.FileDialog(msoFileDialogFolderPicker)

En gros, on obtiendra "C:\blablabla\blabla\blabla\blabla.xls"

Donc ma question est: Peut on afficher le contenu d'un dossier, mais ne selectionner que le dossier pour obtenir son chemin d'acces? ("C:\blablabla\blabla\blabla\").

Merci

Cordialement

Delux
 
Re : Definir Chemin d'un dossier pour macro

Bonsoir,
Donc ma question est: Peut on afficher le contenu d'un dossier, mais ne selectionner que le dossier pour obtenir son chemin d'acces? ("C:\blablabla\blabla\blabla\").
Eh elle fait quoi la macro réponse 4 ?!
Quand tu es dans VBE, menu afficher/variables locales puis tu executes le code en appuyant sucesssivement sur la touches F8 et tu verras les valeurs que prennent tes variables, dans l'exemple pfile renvoie le dossier sélectionné
A+
kjin
 
Re : Definir Chemin d'un dossier pour macro

Bonsoir à tous,

Bien que la macro de kjin fonctionne très bien, en voici une autre :

VB:
Sub test()
Dim objShell As Object, objFolder As Object, oFolderItem As Object 'Pour répertoire
Dim Chemin As String, Nom As String, i&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
  On Error Resume Next
  Set oFolderItem = objFolder.Items.Item
  Chemin = oFolderItem.Path
  'Si pas de répertoire ou sous-répertoire sélectionné alors on sort...
  If Chemin = "" Then Exit Sub
End Sub

A+

Martial
 
Re : Definir Chemin d'un dossier pour macro

Bonjour Kjin, Martial,

Kjin,

En fait quand on utilise "Application.FileDialog(msoFileDialogFolderPicker)", on ne voit pas le contenu du dossier (ex: je ne vois pas mes fichier excel sauvegardes a l'interieur).

Pour afficher les fichiers excel il faut rajouter "Application.FileDialog(msoFileDialogFolderPicker)", mais cela oblige des lors a selectionner un fichier excel et non plus le dossier.

Donc je voulais savoir si il etait possible d'afficher ce que contient un dossier tout en ne selectionnant que le dossier pour que j'obtienne son chemin d'acces.

Merci d'avance

Cordialement,

Delux
 
Re : Definir Chemin d'un dossier pour macro

Bonjour,
Code:
'Private Const BIF_NEWDIALOGSTYLE As Long = &H40
'Private Const BIF_NONEWFOLDERBUTTON As Long = &H200
'Private Const BIF_RETURNONLYFSDIRS As Long = &H1
'Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000

Sub RechercheDossier()
Dim oSh As Object, pFile As Object, pIni$
pIni = "x:\xxx\xxx" 'le répertoire initial
Set oSh = CreateObject("Shell.Application")
On Error Resume Next
Set pFile = oSh.BrowseForFolder(0&, "Sélectionnez un dossier", &H40 + &H200 + &H4000, pIni)
On Error GoTo 0
If Not pFile Is Nothing Then
    MsgBox pFile.Items.Item.Path & "\"
End If
End Sub

Edit : Désolé Yaloo
🙂, le nez dans le guidon...

A+
kjin
 
Dernière édition:
Re : Definir Chemin d'un dossier pour macro

Salut kjin, le forum,

@ kjin : pas de problème 😉, car toi tu réalises exactement la demande de Delux, afficher les fichiers des répertoires.

Par contre, il y a qq chose que je ne comprends pas c'est pIni = "x:\xxx\xxx" 'le répertoire initial et ... + &H200 + &H4000, pIni) avec ce code cela devrait ouvrir directement dans le répertoire pIni, chez moi ça ouvre sur mes documents. Sais-tu pourquoi ?

A+

Martial
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…