Syntaxe CreateFolder incorrecte ? [Résolu]

Signaler
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018
-
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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).
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

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...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Réponds d'abord à ma dernière question, ta réponse conditionnant la mienne (important) !
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

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?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Où il se cache ?
Dans la liste déroulante que je vais moi-même utiliser pour déplacer cette discussion .
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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.
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

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?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

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 ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
relis-moi " et non ""
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
As-tu enfin (oui ou non) remplacé les "" par " ?
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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.
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

Je ne connaissais pas.
C'est bon d'en apprendre tous les jours
Amicalement