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

Bonsoir,
avec ce code cela devrait ouvrir directement dans le répertoire pIni, chez moi ça ouvre
Effectivement, ça ne fonctionne que si pIni est déclaré variant (et non string...avec la froidure sans doute) ou indiqué littéralement dans le paramètre !
Sinon, utiliser la méthode NameSpace du Shell
Code:
Sub RechercheDossier()
Dim oSh As Object, pIni As Object, pfile As Object
Set oSh = CreateObject("Shell.Application")
Set pIni = oSh.Namespace("D:\")
On Error Resume Next
Set pfile = oSh.BrowseForFolder(0&, "Sélectionnez un dossier", &H1 + &H40 + &H200 + &H4000, pIni)
If Not pfile Is Nothing Then
    MsgBox pfile.items.Item.Path
End If
On Error GoTo 0
Set pIni = Nothing
Set pfile = Nothing
Set oSh = Nothing
End Sub
En outre, j'avais mal placé la gestion d'erreur pour le cas ou l'item sélectionné est un fichier et non un dossier (on peut aussi tester la propriété FolderItem.Isfolder du Shell) et surtout j'avais oublié d'éteindre la lumière en sortant
A+
kjin
 
Re : Definir Chemin d'un dossier pour macro

bonjour a tous
pour choisir un chemin je connais cela

Code:
Sub test()
ch = Application.GetSaveAsFilename
MsgBox ch
End Sub
peut on m'expliquer la différence entre les deux et ainsi de connaitre l'intérêt de choisir celle ci ou celle la

merci d'avance
 
Re : Definir Chemin d'un dossier pour macro

Bonjour,
La question était d'ouvrir une boite de dialogue qui permette de lister les dossiers et les fichiers et de renvoyer le chemin du dossier choisi en appuyant sur OK
Il y a plusieurs solutions, celle que j'ai transmise en est une parmi d'autre mais elle répond exactement
On peut, pourquoi pas, utiliser GetSaveAsFilename, mais appuyer sur le bouton enregistrer pour choisir un dossier peut dérouter, d'autant qu'il faut renseigner le nom du fichier; A cela s'ajoute que le classeur n'existant pas à ce moment, il faudra extraire le chemin de la variable renvoyée
Code:
Dim x
x = Application.GetSaveAsFilename(fileFilter:="Classeurs Excel (*.xls), *.xls")
If x <> False Then
    For i = 1 To Len(x)
        If Mid(x, i, 1) = "\" Then pfile = Mid(x, 1, i)
    Next
    MsgBox pfile
End If
A+
kjin
 
Re : Definir Chemin d'un dossier pour macro

Bonjour à tous,

Merci kjin pour cette explication.


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…