Syntaxe CreateFolder incorrecte ?

Résolu
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - Modifié par CerberusPau le 14/11/2013 à 18:10
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - 14 nov. 2013 à 19:48
Bonjour à tous,

Je veux créer une arborescence à partir du contenu aléatoire d'une boîte de dialogue : par exemple C:\REP1\REP2\
Je voulais utiliser CreateFolder comme ci-dessous...

Sub Chemin()

    Dim TLdda As String
    Dim fx As Scripting.FileSystemObject
    Set fx = New Scripting.FileSystemObject
    TLdda = "C:\REP1\REP2\" '(contenu de la TextBox)
    'C'est OK avec un seul REP : TLdda = "C:\REP1\"
    fx.CreateFolder (TLdda)
    Set fx = Nothing

End Sub


CreateFolder ne fonctionne que pour UN SEUL répertoire, et je n'ai pas su trouver comment prendre en compte le sous-répertoire REP2 de mon exemple.

Merci d'un coup de main.

Cordialement
Rataxes64

13 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 nov. 2013 à 18:17
Bonjour,
Tu ne nous précises pas si REP1 existe déjà, lui ...
S'il n'existe pas, il faut le créer avant de créer REP2
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 14/11/2013 à 18:30
Mais dis-moi : tu es certain de développer sous VB.Net (la présente section du forum) ?
Car si sous VBA ou VB6, j'ai pour toi une solution sans faille et (cerise sur le gâteau), sans utiliser ce lourdaud de FSO (et donc vbs, qui peut être inhibé sur certaines machines, dont la mienne).
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
14 nov. 2013 à 18:30
Bonjour ucfoutu,

Je n'ai pas voulu "charger" inutilement mon post, mais bien sûr je vérifie avant que le lecteur appelé existe bien et que l'arborescence COMPLETE n'existe pas. Mais effectivement, il est possible qu'une partie existe déjà. Dans mon exemple, on peut imaginer que REP1 existe, mais pas REP2.
Peut-être faut-il impérativement que je "décompose" le contenu de la TextBox à l'aide des "\" et tester/créer un par un au fur et à mesure...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 nov. 2013 à 18:32
Réponds d'abord à ma dernière question, ta réponse conditionnant la mienne (important) !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
14 nov. 2013 à 18:33
Ah, je me suis trompé?
Oui, oui c'est du VBA
Désolé de cette erreur, mais alors où donc se cache-t'il ce bon vieux forum VBA?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 nov. 2013 à 18:35
Où il se cache ?
Dans la liste déroulante que je vais moi-même utiliser pour déplacer cette discussion .
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 14/11/2013 à 18:45
Fait (déplacé)
Le choix de la section est TRES IMPORTANT (tu le vois bien !).
Voilà ton code sans FSO
Dans la partie déclarative :
Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long

et dans ta sub chemin :
 SHCreateDirectoryEx 0, "C:\REP1\REP2\", ByVal 0&

en te précisant que REP1 sera également créé s'il n'existe pas (idem pour REP2)
essaye et tu comprendras.
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
14 nov. 2013 à 18:57
Voila ce que j'ai copié
Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long


Sub chemin()
     SHCreateDirectoryEx 0, ""C:\REP1\REP2\"", ByVal 0&
End Sub


Mais la ligne
SHCreateDirectoryEx 0, ""C:\REP1\REP2\"", ByVal 0&
s'affiche en rouge...

J'utilise (toujours) VisualBasic de mon bon vieil Excel2003

Qu'est-ce que j'ai mal fait?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 14/11/2013 à 19:11
Où as-tu mis la déclaration et où as-tu mis la sub chemin ?
Si la sub chemin est dans un module, la déclaration doit se trouver dans le même module
Ah ! je vois : tu n'as pas vu ma modif (pas de double "", mis par erreur lorsque j'ai frappé).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
14 nov. 2013 à 19:10
Voila ce que j'ai copié:
Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long

Sub chemin()

    SHCreateDirectoryEx 0, ""C:\REP1\REP2\"", ByVal 0&
    
End Sub


Mais la ligne
SHCreateDirectoryEx 0, ""C:\REP1\REP2\"", ByVal 0&
reste en rouge... (erreur de syntaxe)

Je suis dans VB de Excel2003

Qu'est-ce que j'ai mail fait ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 nov. 2013 à 19:12
relis-moi " et non ""
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
14 nov. 2013 à 19:15
Oui, oui.
C'est bien sûr dans le même module :
La déclaration en tête, suivie de la sub, sans rien d'autre
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 nov. 2013 à 19:38
As-tu enfin (oui ou non) remplacé les "" par " ?
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
14 nov. 2013 à 19:40
Ah oui!
C'est bon, ça fonctionne nickel.
Si tu as "un peu" de temps, j'aimerais bien que tu expliques ton code.
Merci beaucoup
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 nov. 2013 à 19:43
Il n'y a rien à expliquer !
C'est tout simplement la fonctionnalité d'une fonction de l'Api de Windows : la fonction SHCreateDirectoryEx de la librairie shell32 de l'Api de Windows. Elle existe et a été utilisée. C'est tout.
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
14 nov. 2013 à 19:48
Je ne connaissais pas.
C'est bon d'en apprendre tous les jours
Amicalement
0
Rejoignez-nous