Choisir un lecteur ou repertoire/sous repertoire source variable

pouloucarine Messages postés 8 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 26 novembre 2015 - Modifié par jordane45 le 13/02/2015 à 09:12
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 13 févr. 2015 à 19:06
Bonjour,

j'ai une macro excel qui me permet de rechercher puis copier et coller dans un autre répértoire des fichiers *.jpg à partir d'une liste dans excel.

Malheureusement, j'ai en dur le répertoire source (qui dans mon cas est un lecteur réseau), mais je souhaiterai pouvoir en vrai choisir (par boite de dialogue explorer windows) soit un lecteur réseau, soit un répertoire avec lecture dans tous les sous-répertoires de ce répertoire. Je tourne un peu en rond. Pourriez vous m'adier.
Ci dessous la macro :

Sub dupliean()

Dim P As Range, DosSource$, DosDestin$, ext$, c As Range, DernLigne As Long
DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Set P = Range("A1:A" & DernLigne) 'plage avec les noms des fichiers (sans extension)
DosSource = "Z:\" 'à adapter
DosDestin = "D:\Test\" 'à adapter
ext = ".jpg"
Application.DisplayAlerts = False
On Error Resume Next
MkDir DosDestin 'crée le dossier s'il n'existe pas
For Each c In P
  FileCopy DosSource & c & ext, DosDestin & c & ext
  c(1, 2) = IIf(Dir(DosDestin & c & ext) = "", "", "OK")
Next
MsgBox Application.CountA(P.Offset(, 1)) & " fichiers copiés"
End Sub


Merci de votre aide

Cordialement
pouloucarine


EDIT : Ajout des balises de code

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
13 févr. 2015 à 09:17
Bonjour,

Un truc du genre peut être..

Function GetFolder(strPath As String) As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
    .Title = "Select a Folder"
    .AllowMultiSelect = False
    .InitialFileName = strPath
    If .Show <> -1 Then GoTo NextCode
    sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function



Et pour l'utiliser dans ton code :
DosSource = GetFolder("Z:\")
DosDestin = GetFolder("D:\Test\")


0
pouloucarine Messages postés 8 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 26 novembre 2015
13 févr. 2015 à 10:08
bonjour,

merci pour cette réponse, mais j'avoue que je n'arrive pas à l'insérer dans mon code.
Ou dois je mettre cette fonction? j'ai l'impression que même si je sélectionne avec la boite de dialogue un autre répertoire, la macro reste bloqué sur une recherche dans z:\ et reviens dans d:\test ?

Cordialement

pouloucarine
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344 > pouloucarine Messages postés 8 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 26 novembre 2015
13 févr. 2015 à 10:24
Tu places la fonction dans un module.

Si tu n'y arrives pas ... montres nous ton code modifié qu'on le regarde
0
pouloucarine Messages postés 8 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 26 novembre 2015 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
13 févr. 2015 à 10:41
je crois avoir réussi, la macro tourne j'attends son "retour" :-)

merci

pouloucarine
0
pouloucarine Messages postés 8 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 26 novembre 2015
13 févr. 2015 à 17:33
Bon, j'ai réussi en partie mais celà ne va pas dans les sous répertoires. Il faut que l'on sélectionne rep par rep alors que mon souhait c'est qu'à partir du niveau choisi (lecteur réseau par exemple) la macro balaye tous les répertoires et les sous-répertoires pour ensuite pouvoir copie et coller les fichiers "jpg" vers le rep de destination (qui lui peut rester en dur, ce n'est pas grave).
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
13 févr. 2015 à 19:06
Là. .c'est une autre question. ..
la récursivité ne faisant pas parti de ta question initiale...merci d'ouvrir une nouvelle discussion.
0
Rejoignez-nous