Création dossier VBA (MKDIR)

matthieu2701

XLDnaute Occasionnel
Bonjour,

J’essaie de créer un dossier avec la fonction MKDIR mais j'obtiens le message suivant : Erreur d'éxécution '75'. Erreur d'accès Chemin/Fichier.

Je viens vers vous pour que vous m'apportiez votre aide.

Merci par avance.
 

Pièces jointes

  • Normalisation courriers et mails Réclas.xls
    38.5 KB · Affichages: 67
  • Normalisation courriers et mails Réclas.xls
    38.5 KB · Affichages: 63
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Création dossier VBA (MKDIR)

Bonjour.

Essayez peut être aussi comme ça :
VB:
Option Explicit
'

Sub CreerDossier()
Dim T()
T = Worksheets("Réclamations").[B6:E6].Value
If CheminCourantAssumé("Q:\CLI11PTE\AA-RECLAMATION GAZ\Historique des Réclamations\" _
    & T(1, 1) & " " & T(1, 2) & " " & T(1, 3) & " " & T(1, 4)) Then
'Faire apparaite bulle
    ActiveSheet.Shapes("MonBouton1").Visible = True
    Application.OnTime Now + TimeValue("00:00:02"), "EffacerMessage1"
    End If
End Sub
'

'Effacement de la bulle
Sub EffacerMessage1()
ActiveSheet.Shapes("MonBouton1").Visible = False
'Call Enregistrer_Classeur
'Sheets("Echéancier").Range("K4").Value = Format(Now, "dddd dd mmmm yyyy / h:mm")
End Sub
'

Function CheminCourantAssumé(ByVal Chm As String) As Boolean
Dim TSpl() As String, P&
TSpl = Split(Chm, "\")
On Error Resume Next
ChDrive TSpl(0): If Err Then MsgBox "Lecteur """ & Left$(TSpl(0), 1) & """ inconnu.", _
    vbCritical, "CheminCourantAssumé": Exit Function
ChDir TSpl(0) & "\"
For P = 1 To UBound(TSpl)
    If TSpl(P) <> "" Then
        ChDir TSpl(P)
        If Err Then
            Err.Clear: MkDir TSpl(P): If Err Then MsgBox "Impossible de créer un dossier """ _
                & TSpl(P) & """ sur :" & vbLf & CurDir, vbCritical, "CheminCourantAssumé": Exit Function
            ChDir TSpl(P): End If
        End If: Next P
CheminCourantAssumé = True
End Function
 

Dranreb

XLDnaute Barbatruc
Re : Création dossier VBA (MKDIR)

Je ne suis pas fondé à penser que l'erreur vienne de là.
Néanmoins je conseille toujours aussi de cocher la référence Microsoft Scripting Runtime.
Mais dans ce cas éviter le type Object, sinon elle ne sert presque à rien, dans la mesure où elle ne peut quand même pas éviter les liaisons tardives lors de l'exécution, au lieu de liaisons anticipées lors de la compilation. Déclarer Fs As FileSystemObject et initialisez la par Set Fs = New FileSystemObject

À part ça, Mathieu2701, qu'en est-il de ma solution ?
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Création dossier VBA (MKDIR)

Bonsoir à tous,

Un autre essai qui fonctionne sous Windows à partir des versions NT/2000/XP.
Normalement, on n'a pas besoin de se placer sur le disque cible (dans l’exemple d) et peu importe si des dossiers sont déjà existants ; ils seront conservés avec leur contenu. Si un dossier du chemin n'existe pas, il sera créé (@ ZZ zz ou x y z et bien sûr les 5 dossiers PrefixeDossier & i).

VB:
Sub CreerRepert()
  Const repert = "d:\@ ZZ zz\x y z"
  Const PrefixeDossier = "Mon nouveau dossier "
  
  Dim i&, NouveauDossier

  For i = 1 To 5
    NouveauDossier = repert & "\" & PrefixeDossier & i
    Shell "cmd /C mkdir """ & NouveauDossier & """", vbHide
  Next i
End Sub
 

Pièces jointes

  • Creer Repertoire- v1.xlsm
    14.7 KB · Affichages: 37
Dernière édition:

matthieu2701

XLDnaute Occasionnel
Re : Création dossier VBA (MKDIR)

Bonjour.

Essayez peut être aussi comme ça :
VB:
Option Explicit
'

Sub CreerDossier()
Dim T()
T = Worksheets("Réclamations").[B6:E6].Value
If CheminCourantAssumé("Q:\CLI11PTE\AA-RECLAMATION GAZ\Historique des Réclamations\" _
    & T(1, 1) & " " & T(1, 2) & " " & T(1, 3) & " " & T(1, 4)) Then
'Faire apparaite bulle
    ActiveSheet.Shapes("MonBouton1").Visible = True
    Application.OnTime Now + TimeValue("00:00:02"), "EffacerMessage1"
    End If
End Sub
'

'Effacement de la bulle
Sub EffacerMessage1()
ActiveSheet.Shapes("MonBouton1").Visible = False
'Call Enregistrer_Classeur
'Sheets("Echéancier").Range("K4").Value = Format(Now, "dddd dd mmmm yyyy / h:mm")
End Sub
'

Function CheminCourantAssumé(ByVal Chm As String) As Boolean
Dim TSpl() As String, P&
TSpl = Split(Chm, "\")
On Error Resume Next
ChDrive TSpl(0): If Err Then MsgBox "Lecteur """ & Left$(TSpl(0), 1) & """ inconnu.", _
    vbCritical, "CheminCourantAssumé": Exit Function
ChDir TSpl(0) & "\"
For P = 1 To UBound(TSpl)
    If TSpl(P) <> "" Then
        ChDir TSpl(P)
        If Err Then
            Err.Clear: MkDir TSpl(P): If Err Then MsgBox "Impossible de créer un dossier """ _
                & TSpl(P) & """ sur :" & vbLf & CurDir, vbCritical, "CheminCourantAssumé": Exit Function
            ChDir TSpl(P): End If
        End If: Next P
CheminCourantAssumé = True
End Function

Bonjour,

Je viens de tester et cela fonctionne. Merci

Par contre, je me suis trompé dans les champs que je souhaite voir apparaitre à la création de mon dossier.

Je souhaite le Nom (D6) et le PCE (C2) mais je n'y arrive pas. J'arrive pas à rajouter le PCE dans la variable T.

Je te remets mon fichier un peu modifié.

Merci par avance.
 

Pièces jointes

  • Normalisation courriers et mails Réclas.xls
    39 KB · Affichages: 36
  • Normalisation courriers et mails Réclas.xls
    39 KB · Affichages: 21

gilbert_RGI

XLDnaute Barbatruc
Re : Création dossier VBA (MKDIR)

Néanmoins je conseille toujours aussi de cocher la référence Microsoft Scripting Runtime.
Mais dans ce cas éviter le type Object, sinon elle ne sert presque à rien, dans la mesure où elle ne peut quand même pas éviter les liaisons tardives lors de l'exécution, au lieu de liaisons anticipées lors de la compilation. Déclarer Fs As FileSystemObject et initialisez la par Set Fs = New FileSystemObject

Peut-être as tu raison mais en faisant la modification de déclaration j'ai une "erreur de compilation"
par contre l'initialisation par Set Fs = New FileSystemObject fonctionne

alors pourquoi chez moi ça fonctionne avec le "Scripting.FileSystemObject" et la déclaration de type "Object"
 

gilbert_RGI

XLDnaute Barbatruc
Re : Création dossier VBA (MKDIR)

Bonjour,

Je souhaite le Nom (D6) et le PCE (C2) mais je n'y arrive pas. J'arrive pas à rajouter le PCE dans la variable T.

Merci par avance.

le tableau est déclaré T = Worksheets("Réclamations").[B6:E6].Value donc [C2] n'en fait pas partie

si c'est toujours [c2]

mettre & T(1, 1) & " " & [c2] & " " & T(1, 3) & " " & T(1, 4))
 

matthieu2701

XLDnaute Occasionnel
Re : Création dossier VBA (MKDIR)

Je viens de créer une nouvelle macro pour récupérer un fichier .doc type qui sera sur le bureau. En cliquant sur le bouton "Importer la réclamation" je souhaite que le fichier soit importé dans le fichier excel. Je suis arrivé à faire cela.

Néanmoins, je souhaiterais que ce fichier est le nom suivant : Type (B6) - N° BRDG (C6) - Nom (D6) - Initiales (E6) et qu'il soit mit à coté de la bulle "Importer la réclamation.

Le but est que par la suite, ce fichier soit modifier pour répondre à la réclamation et que ce fichier, qui est dans le fichier excel, soit récupéré pour être enregistré dans le dossier qui a été créé dans "Q:\CLI11PTE\AA-RECLAMATION GAZ\Historique des Réclamations\" _
& T(1, 3) & " " & [C2])

Je vous remets le fichier avec les nouveautés.

Merci encore pour votre aide.
 

Discussions similaires

Statistiques des forums

Discussions
312 230
Messages
2 086 428
Membres
103 207
dernier inscrit
Michel67