Bonjour Pierre, le Forum
Je ne peux pas actuellement télécharger de fichier pour raison de sécurité, mais je pense cerner ta question sans voir ton exemple.
Voici une étude/test que je me suis faite et que je garde comme exemple :
Const TheMainPath As String = "C:\Program Files\My Program\"
Const TheArchivePath As String = "C:\Program Files\My Program\My Archive\"
Sub TestMkDirMultiLevel1()
On Error GoTo NextStep
MkDir TheMainPath
NextStep:
TestMkDirMultiLevel2
End Sub
Sub TestMkDirMultiLevel2()
On Error GoTo Sortie
MkDir TheArchivePath
Exit Sub
Sortie:
If Err = 75 Then
MsgBox "Le Chemin " & TheArchivePath & " existe déjà"
Else
MsgBox "Une Erreur non gérée s'est Produite : " & Err.Number & " " & Err.Description
End If
End Sub
Cette double procédure est en fait assez simple, si le répertoire "My Program" n'existe pas en tant que sous répertoire dans "Program Files" alors il sera créé par la Sub "TestMkDirMultiLevel1"... Si par contre il existe déjà, celà génère une erreur que je gère avec l'étiquette "NextStep:" (On Error GoTo NextStep) qui, donc permet de passer à l'étape suivante en lançant la macro "TestMkDirMultiLevel2".
Dans cette dernière c'est le même processus, si le sous répertoire "My Archive" n'existe pas dans "My Program" alors il sera créé, sinon je lance un message de confirmation que le répertoire existe déjà.
Dans ton cas, il suffit de sauter cette étape de message et d'adapter à la place l'enregistrement automatique de ton fichier.
Pour finir, je procède aà la défintion des "Path" par deux Constantes (TheMainPath & TheArchivePath) mais tu pourrais définir la même chose avec des Variables pointant sur tes cellules comme ceci : (NB toujours respecter la construction d'un répertoire à la fois, le sous répertoire ne pouvant être créé qu'après création du répertoire "parent")
Dim TheMainPath As String
Dim TheArchivePath As String
Sub TestMkDirMultiLevel1()
TheMainPath = Range("Ch_Fichier")
TheArchivePath = Range("Ch_Fichier_Sub-Dir")
On Error GoTo NextStep
MkDir TheMainPath
NextStep:
TestMkDirMultiLevel2
End Sub
La suite ne changeant pas. Attention par contre il n'y a aucun test de vérification sur les valeurs contenues dans les cellules...
Bonne Journée
@+Thierry