Formule Mkdir qui ne fonctionne pas

Messages postés
2
Date d'inscription
mardi 16 avril 2019
Statut
Membre
Dernière intervention
16 avril 2019
- - Dernière réponse : cs_Le Pivert
Messages postés
5990
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 avril 2019
- 17 avril 2019 à 08:11
Bonjour,

Je débute en VBA et j'ai tenté une macro pour enregistrer mes factures et contrats en .pdf mais également pour que ceux-ci soient directement classés dans des dossiers.

Seulement ma formule ne fonctionne pas, et je suis coincé depuis plusieurs jours dessus ; voici le message affiché : erreur d'exécution 75 Erreur d'accès chemin/fichier.
En débogage, ça surligne la ligne MkDir (MonAnnee). Lorsque je passe la souris dessus, ça m'affiche la bonne année = 2019. Et cela a fonctionné la première fois pour un fichier : création du dossier etc... Mais depuis ça ne fonctionne plus...

Voici la macro :

ActiveWorkbook.Save
ChDir "C:\Users\N......F...…..\OneDrive - TASAS\CONTRAT CLIENT"

Dim MonDossier As String
Dim MonAnnee As String
Dim MonMois As String
Dim MonClient As String
MonClient = Sheets("CONTRAT CLIENT").Range("F12").Value
MonDossier = "C:\Users\N......F...….\OneDrive - TASAS\CONTRAT CLIENT\"
MonAnnee = year(Now())
MonMois = month(Now()) & MonthName(month(Now()))
If month(Now()) < 10 Then
MonMois = "0" & MonMois
End If
MonMois = UCase(MonMois)
If Len(Dir(MonAnnee)) = 0 Then
MkDir (MonAnnee)
End If
ChDir MonAnnee
If Len(Dir(MonMois)) = 0 Then
MkDir (MonMois)
End If
ChDir MonMois
If Len(Dir(MonClient)) = 0 Then
MkDir (MonClient)
End If
ChDir MonClient
'ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF,

Merci si quelqu'un peut m'aider :-)
Afficher la suite 

Votre réponse

4 réponses

Messages postés
13133
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 avril 2019
354
0
Merci
Bonjour

pour poster un code, merci de lire et d'appliquer ce qui est décrit là
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ce qui est écrit dans VBA ne sont pas des formules, mais des instructions.

Et cela a fonctionné la première fois pour un fichier : création du dossier etc... Mais depuis ça ne fonctionne plus...
alors, je suppose que le dossier 2019 existe et que du coup, il ne peut pas en créer un nouveau qui s'appelle 2019

Commenter la réponse de Whismeril
Messages postés
2
Date d'inscription
mardi 16 avril 2019
Statut
Membre
Dernière intervention
16 avril 2019
0
Merci
Bonjour Whismeril,

Je vous remercie pour votre réponse.
J'ai regardé le lien et j'appliquerais pour la prochaine fois.

La solution pour réparer la macro serait donc de changer l'année pour 2020 ? ou de supprimer ?
Commenter la réponse de creoline974_4764
Messages postés
13133
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 avril 2019
354
0
Merci
Supprimer implique de perdre toutes les données stockées dans ce répertoire.

En faire un nouveau qui s'appellerait 2020 ou tartempion c'est à toi de voir si ça colle à ton besoin.

Sinon, tu peux simplement tester s'il existe déjà et ne rien faire si oui.
Commenter la réponse de Whismeril
Messages postés
5990
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 avril 2019
79
0
Merci
Bonjour,

il suffit de vérifier l'existence du dossier:

https://excel.developpez.com/faq/?page=FichiersDir#VerifExistenceDossier

comme ceci à adapter:

 Sub essai()
 Dim existe As Boolean
existe = DossierExiste("C:\Users\Daniel\Documents\MonAnnee")
If existe = False Then
MkDir ("C:\Users\Daniel\Documents\MonAnnee\")
End If
End Sub
Function DossierExiste(NomDossier As String) As Boolean
    DossierExiste = Dir(NomDossier, vbSystem + vbDirectory + vbHidden) <> ""
End Function



Commenter la réponse de cs_Le Pivert

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.