Problème avec mkdir

Bonjour,

ci-joint mon fichier.

J'essaye de copier mon fichier et de créer un répertoire s'il n'existe pas, le problème c'est que si le répertoire n'existe pas, ça me fait planter excel.

Je comprends pas mon problème si une personne pouvait m'aider.

Cordialement

86test1.xlsm (18.65 Ko)

Bonjour,

Il te suffit de tester si le répertoire existe avant. Pour ça, un tite fonction :

Function Exist_Rep(Ttk As String) As Boolean
    On Error Resume Next
    Exist_Rep = GetAttr(Ttk ) And vbDirectory
End Function

Et un test avant d'enregistrer :

Dim Rep as string

Rep = ActiveWorkbook.Path & "\Sous dossier\"
If Not Exist_Rep(Rep) Then MkDir Rep
' ... enregistrement

Pierre

Bonjour,

merci de ta réponse,

il y a quelque truc que je comprend pas.

La fonction est ce que je peux le mettre dans Thisworkbook ou je dois le mettre dans un module?

je comprend pas le fait de tester si le répertoire existe?

 If Dir(chemin, vbDirectory) = "" Then
    MkDir (chemin)

ça te teste pas cette partie justement?

J'ai essayer de mettre ce que tu m'as mis en voulant remplacer cette partie :

 If Dir(chemin, vbDirectory) = "" Then
    MkDir (chemin)

par

If Not Exist_Rep(Rep) Then MkDir Rep

(je ne sais pas si c'est le bon endroit) ça me dit que la fonction elseif ne fonctionne pas sans IF, on ne peut mettre un else ou un elsif avec un if not?

Rep = ActiveWorkbook.Path & "\Sous dossier\"

pour ce passage, je dois mettre tous mes sous dossier ? c'est à dire le chemin complet ou juste la partie à tester?

Cordialement

Oula

* La fonction tu la mets dans un module quelconque

* Une bonne façon de tester si un répertoire existe passe par la fonction que je te donne plus haut qui gère les erreurs éventuelles

* pas besoin de "else", si le répertoire n'existe pas, il le crée et juste après tu peux y mettre ce que tu veux. S'il existe, le code continue aussi.

* tu mets ce que tu veux comme répertoire, ça peut être aussi genre : rep="c:\trucmuche\"

et tu peux appeler ta variable comme tu veux rep, chemin, ou bidule

Pierre

Bonjour,

j'ai fait tout ce que tu as dit mais j'ai toujours un problème

donc j'ai ce code là :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim chemin As String, chemin2 As String
Dim Rep As String

chemin = "C:\pizza" & "\" & Sheets("Plan_fab").Range("A3")
chemin2 = chemin & "\" & Sheets("Plan_fab").Range("A5") & ".xlsm"

If Not Exist_Rep(chemin) Then MkDir chemin

nom_du_fichier = chemin2
ActiveWorkbook.SaveAs nom_du_fichier, FileFormat:=52

End Sub

et j'ai mis ceci dans un module

    Function Exist_Rep(Ttk As String) As Boolean
        On Error Resume Next
        Exist_Rep = GetAttr(Ttk ) And vbDirectory
    End Function

donc ça enregistre bien où il faut et ça créer bien le dossier si besoin sauf que juste après avoir enregistrer excel se met à planter et je dois l'éteindre et le redémarrer. C'est normal ou j'ai encore fait une boulette.

Cordialement

Rechercher des sujets similaires à "probleme mkdir"