Problème avec MkDir dans une macro

valenton

XLDnaute Nouveau
Bonjour à toutes et tous,

Je rencontre un problème très bizare en voulant créer un dossier via une macro. J'ai cherché sur le forum et sur internet sans succès. Je vous joints mon fichier avec la macro qui me pose problème.

J'ai un fichier excel qui réalise un pré-traitement de données brutes pour générer des fichiers texte qui me servent à paramétrer un modèle. Tous ces fichiers texte sont enregistré dans un dossier nommé "aaammjj_test_data" (aaammdd étant la date du jour, exemple 20141218 pour aujourd'hui), dossier créé par la macro.

L'adresse du répertoire qui va acceuillir ce dossier est donnée dans une cellule du classeur. Je commence par un test pour vérifier si cette adresse existe existe, si non je créé ce dossier. Ensuite un autre test pour vérifier si à cette adresse il existe déjà un dossier nommé "aaammjj_test_data". Si non je le créé, si oui je regarde s'il contient des fichiers et si oui je les supprime tous.

Le problème que je rencontre est dans le cas où le dossier "aaammjj_test_data" existe déjà et contient un ou plusieurs fichiers. Dans ce cas, à la dernière commande de ma macro (mkdir dir_export) j'ai une erreur d'exécition 75... Dans tous les autres cas la macro fonctionne correctement.

Qu'est-ce que fais mal dans l'histoire ?

Merci pour votre aide !
 

Pièces jointes

  • probleme_mkdir.xlsm
    18.6 KB · Affichages: 26

pierrejean

XLDnaute Barbatruc
Re : Problème avec MkDir dans une macro

Bonjour valenton

Je n'ai pas testé (trop de choses à mettre en place !!!) mais je te propose d'essayer:

Code:
...............
If Dir(dir_export, vbDirectory) <> "" Then
        If MsgBox("Directory already exists. Do you want to overwrite it? All content will be deleted", vbYesNo, "Confirm") = vbYes Then
            If Dir(dir_export & "*.*") <> "" Then
                Kill (dir_export & "*.*")
            End If
            RmDir dir_export
        Else
            MsgBox ("File export aborted")
            End
        End If
    Else
     MkDir dir_export
    End If
 

valenton

XLDnaute Nouveau
Re : Problème avec MkDir dans une macro

Merci pierrejean pour ta réponse, elle m'a fait réfléchir et j'ai modifié mon code en m'inspirant de ta proposition, maintenant ça semble fonctionne.

Je faisait inutilement compliqué en supprimant tous les fichiers, puis le dossier avant de recréer ce même dossier... Par rapport à ta proposition j'ai simplement supprimé la ligne "RmDir dir_export" qui restait, maintenant je n'ai plus de problème.

Code:
...............
If Dir(dir_export, vbDirectory) <> "" Then
        If MsgBox("Directory already exists. Do you want to overwrite it? All content will be deleted", vbYesNo, "Confirm") = vbYes Then
            If Dir(dir_export & "*.*") <> "" Then
                Kill (dir_export & "*.*")
            End If
        Else
            MsgBox ("File export aborted")
            End
        End If
    Else
     MkDir dir_export
    End If

Toutefois si quelqu'un sait dire pourquoi mon code initial ne fonctionnait pas, ça m'intéresse de savoir pourquoi, juste par curiosité !
 

pierrejean

XLDnaute Barbatruc
Re : Problème avec MkDir dans une macro

Re

A priori c'est assez simple

If Dir(dir_export, vbDirectory) <> "" Then ' = si dir_export existe alors
...
else 'sinon
MkDir dir_export ' le creer
end if

Le MkDir dir_export en fin de sub refusait de creer un existant
 

Discussions similaires

Réponses
6
Affichages
196