Bonjour,
Je vais creer des dossiers en VBA mais seulement si ceux-ci n existe pas donc mon idee est de tester la presence du dossier mais je ne connais pas le code ?
Merci
Tom
Version imprimable
Bonjour,
Je vais creer des dossiers en VBA mais seulement si ceux-ci n existe pas donc mon idee est de tester la presence du dossier mais je ne connais pas le code ?
Merci
Tom
Bonjour,
Utilise simplement la fonction Dir avec l'attribut 16 (ou la constante VBDirectory)
Tu as un exemple dans ton aide en ligne (sur ta machine) et également des exemples dans des discussions encore très récentes.
EDIT : je te signale également la possibilité d'utiliser la fonction SHCreateDirectoryEx de la Librairie Shell32 de l'Api de Windows (c'est ce que je préfère personnellement utiliser) .
Cette fonction en en effet, elle, capable de ne créer un répertoire QUE S'IL N'EXISTE PAS (et le tout en silence).
merci beaucoup Ucfoutu surtout pour l Edit qui m interesse beaucoup...
Ucfoutu :
Est ce que tu peux poster un exemple d utilisation de la fonction:
SHCreateDirectoryEx
J'essaye de m'aider du FAQ sur les API mais je dois pas developper le bon code je pense.
Merci
Tom
bonjour
Comment vérifier si un dossier existe ?
bonne journée
michel
Oui ?
regarde alors la réponse N° 6 donnée ici :
http://www.developpez.net/forums/sho...ateDirectoryEx
Et analyse-la, puis adapte
Et oublie donc cette partie, qui n'est là que pour "montrer" :
Saute-la donc (elle ne sert à rien dan ton cas...)...:lol:Code:
1
2
3
4
5 If Dir(fichier, 0) = "" Then 'ici tes instructions de sauvegarde Else MsgBox "le fichier " & fichier & " existe déjà !" End If
ceci fonctionne tres bien mais j ai voulu le simplifier avec une boucle For NextCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Private Sub commandButton1_click() Dim i As Integer Dim Directory1, Directory2, Directory3, Directory4, Directory5, Directory6 As String Dim CheckCreate As Long Directory1 = "D:\Documents and Settings\My Documents\structure" Directory2 = "D:\Documents and Settings\My Documents\shared" Directory3 = "D:\Documents and Settings\My Documents\structure\template A" Directory4 = "D:\Documents and Settings\My Documents\structure\template B" Directory5 = "D:\Documents and Settings\My Documents\structure\template C" Directory6 = "D:\Documents and Settings\My Documents\structure\template D" CheckCreate = SHCreateDirectoryEx(0&, Directory1, 0&) CheckCreate = SHCreateDirectoryEx(0&, Directory2, 0&) CheckCreate = SHCreateDirectoryEx(0&, Directory3, 0&) CheckCreate = SHCreateDirectoryEx(0&, Directory4, 0&) CheckCreate = SHCreateDirectoryEx(0&, Directory5, 0&) CheckCreate = SHCreateDirectoryEx(0&, Directory6, 0&) UserForm1.Show End Sub
Dim i as integer
For i = 1 to 6
j ai aussi essayeCode:
1
2
3
4
5
6
7
8
9 Directory1 = "D:\Documents and Settings\My Documents\structure" Directory2 = "D:\Documents and Settings\My Documents\shared" Directory3 = "D:\Documents and Settings\My Documents\structure\template A" Directory4 = "D:\Documents and Settings\My Documents\structure\template B" Directory5 = "D:\Documents and Settings\My Documents\structure\template C" Directory6 = "D:\Documents and Settings\My Documents\structure\template D" CheckCreate = SHCreateDirectoryEx(0&, Directory& i, 0&)
mais je peux pas declarer Directory 1
car des que je fais Dim Directory 1 as string => bug sur le 1
une idee pour simplifier ou sinon je reste comme ca , enfin c est pour m instruire aussi que je demande cela.Code:
1
2
3
4
5
6
7 Directory 1 = "D:\Documents and Settings\My Documents\structure" Directory 2 = "D:\Documents and Settings\My Documents\shared" Directory 3 = "D:\Documents and Settings\My Documents\structure\template A" Directory 4 = "D:\Documents and Settings\My Documents\structure\template B" Directory 5 = "D:\Documents and Settings\My Documents\structure\template C" Directory 6 = "D:\Documents and Settings\My Documents\structure\template D" CheckCreate = SHCreateDirectoryEx(0&, Directory & i, 0&)[/
merci
Ben alors, tomY ?
Je t'avais expliqué, non ? (il crée et crée en silence, en plus)
Essaye et tu vas voir la puissance de cette fonction :
Puis ouvre ton explorateur et constate...:lol:Code:
1
2
3
4
5
6
7 Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _ (ByVal hwnd As Long, ByVal pszPath As String, ByVal lngsec As Long) As Long Private Sub Command1_Click() repertoire = "D:\repA\repB\repC" SHCreateDirectoryEx 0&, repertoire, 0& End Sub
Et si tu relances, il ne ne plante pas (il ne crée que ce qui n'est pas déjà créé) ...
Essaye et tu vas voir ...