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
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