Bonjour,
Voici un essai (non fonctionnel sur Mac) avec le fichier exécutant le code se trouvant dans le dossier parent du dossier Photos (et du futur dossier Photos_New) :
Sub Intervertir()
Dim t() As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set fd = fso.GetFolder(ThisWorkbook.Path & "\Photos") 'dossier source
For Each sfd In fd.SubFolders 'pour chaque sous-dossier (dates) du dossier source
For Each ssfd In sfd.SubFolders 'pour chaque sous-dossier (lieux) des sous-dossiers (dates)
For Each fil In ssfd.Files 'pour chaque fichier des sous-dossier finaux (lieux)
n = n + 1 'incrémentation
ReDim Preserve t(1 To 2, 1 To n) 'redimension tableau accueillant chemin source et chemin destination
t(1, n) = fil.Path 'chemin source du fichier
t(2, n) = Join(Array(Replace(fd.Path, fd.Name, fd.Name & "_New"), ssfd.Name, sfd.Name, fil.Name), "\") 'chemin destination
CreerChemin fso, t(2, n) 'le cas échéant, création des nouveaux répertoires de destination
fso.copyfile t(1, n), t(2, n) 'copie fichier
Next fil
Next ssfd
Next sfd
End Sub
Function CreerChemin(fso As Object, sfilepath$)
t = Split(sfilepath, "\")
spath = t(0)
For i = LBound(t) + 1 To UBound(t) - 1
spath = spath & "\" & t(i)
If Not fso.FolderExists(spath) Then fso.CreateFolder (spath)
Next i
End Function
Ici, il faut bien que l'arborescence respecte celle affichée sur l'image : Le dossier Photos contient des sous-dossiers (dates) qui contiennent chacun des sous-dossiers (lieux) qui contiennent chacun des fichiers.
Avant d'exécuter le code, il vaut mieux s'assurer que les noms de fichiers sont uniques...
Cdlt,