Comment briser une chaine de caractères représentant l'arboresen ce de dossier ?
9 réponses
Lolo
Bonjour à tous
Soit une variable myPath = "C:\Dossier01\Dossier02\Dossier03\Dossier04"
J'aimerais créer ce dossiers ainsi que ses sous-dossiers alors qu'aucun d'eux n'existe préalablement, ce via VBA.
Seulement, si j'utilise la commande "MkDir", je suis obligé d'abord de créer Dossier01, puis Dossier02,etc (car pour faire 'MkDir "C:\Dossier01\Dossier02\Dossier03\Dossier04"', cette commande ne s'adressant qu'à Dossier04, il faut avoir préablablement créer les autres dossiers ... et faire d'autant de MkDir qu'il y a de sous-répertoires, pfffff)
Donc pour ce faire, je devrais faire une recherche dans la variable myPath du caractère "\" pour extraire les noms de dossiers à créer l'un après l'autre.... Qqn pour m'aider? Ou me trouver une solution plus directe que ce "MkDir" ?
ça me va... j'avais fini par trouver par moi-même mais merci !! :-)
Voici donc le code avec gestion d'erreur à ceux qui ça intéresse (création de sous-répertoire pour enregistrement du fichier ouvert)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False On Error Resume Next
myPath = "C:Dossier01Dossier02Dossier03" 'peut faire référence à une cellule nommée aussi ;-)
Dim Tableau As Variant Tableau = Split(myPath, "", -1) Chemin = Tableau(0)
For i = 1 To UBound(Tableau) Step 1 Chemin = Chemin & "" & Tableau(i) MkDir Chemin Next
ChDir myPath
......... End Sub
gilbert
Bonjour Lolo
Est-ce que cela peut faire
Sub creadossier() racine = "D:" 'dossier => donner une valeur avec ce que vous désirez _ comme nom de dossier For i = 1 To 4 MkDir (racine & "dossier" & (i)) rep = (racine & "dossier" & (i)) racine = rep & "" Next End Sub
ou
Sub créadossiersdif() racine = "D:" nbdossier = InputBox("Indiquez le nombre de dossiers à créér", "Nombre de dossiers", "4") If nbdossier = "" Then Exit Sub If nbdossier < 1 Then GoTo erreur For i = 1 To 4 dossier = InputBox("Donnez un nom au dossier n°" & i, "Nom de Dossier", "Dossier") If dossier = "" Then Exit For MkDir (racine & dossier) ' & (i)) rep = (racine & dossier) ' & (i)) racine = rep & "" Next msg = "Les Dossiers :" + vbCrLf msg = msg + racine + vbCrLf msg = msg + "ont été créés" MsgBox msg Exit Sub erreur: MsgBox "Le nombre de dossiers est incorrect" End Sub
-- Gilbert +--------------------------------------------------------------------------- ---------------------------+ supprimer 'stpspam' à mon adresse de messagerie pour me joindre directement . SVP +--------------------------------------------------------------------------- ---------------------------+ "Lolo" a écrit dans le message de news:
Bonjour à tous
Soit une variable myPath = "C:Dossier01Dossier02Dossier03Dossier04"
J'aimerais créer ce dossiers ainsi que ses sous-dossiers alors qu'aucun d'eux n'existe préalablement, ce via VBA.
Seulement, si j'utilise la commande "MkDir", je suis obligé d'abord de créer Dossier01, puis Dossier02,etc (car pour faire 'MkDir
"C:Dossier01Dossier02Dossier03Dossier04"', cette commande ne s'adressant qu'à Dossier04, il faut avoir préablablement créer les autres dossiers ... et faire d'autant de MkDir qu'il y a de sous-répertoires, pfffff)
Donc pour ce faire, je devrais faire une recherche dans la variable myPath du caractère "" pour extraire les noms de dossiers à créer l'un après
l'autre.... Qqn pour m'aider? Ou me trouver une solution plus directe que ce "MkDir" ?
Merci d'avance!!!
Bonjour Lolo
Est-ce que cela peut faire
Sub creadossier()
racine = "D:"
'dossier => donner une valeur avec ce que vous désirez _
comme nom de dossier
For i = 1 To 4
MkDir (racine & "dossier" & (i))
rep = (racine & "dossier" & (i))
racine = rep & ""
Next
End Sub
ou
Sub créadossiersdif()
racine = "D:"
nbdossier = InputBox("Indiquez le nombre de dossiers à créér", "Nombre de
dossiers", "4")
If nbdossier = "" Then Exit Sub
If nbdossier < 1 Then GoTo erreur
For i = 1 To 4
dossier = InputBox("Donnez un nom au dossier n°" & i, "Nom de Dossier",
"Dossier")
If dossier = "" Then Exit For
MkDir (racine & dossier) ' & (i))
rep = (racine & dossier) ' & (i))
racine = rep & ""
Next
msg = "Les Dossiers :" + vbCrLf
msg = msg + racine + vbCrLf
msg = msg + "ont été créés"
MsgBox msg
Exit Sub
erreur:
MsgBox "Le nombre de dossiers est incorrect"
End Sub
--
Gilbert
+---------------------------------------------------------------------------
---------------------------+
supprimer 'stpspam' à mon adresse de messagerie pour me joindre directement
. SVP
+---------------------------------------------------------------------------
---------------------------+
"Lolo" <laurent_hosch@hotmail.com> a écrit dans le message de
news:D07DFF70-4EC6-4547-86CC-3F49B272B57E@microsoft.com...
Bonjour à tous
Soit une variable myPath = "C:Dossier01Dossier02Dossier03Dossier04"
J'aimerais créer ce dossiers ainsi que ses sous-dossiers alors qu'aucun
d'eux n'existe préalablement, ce via VBA.
Seulement, si j'utilise la commande "MkDir", je suis obligé d'abord de
créer Dossier01, puis Dossier02,etc (car pour faire 'MkDir
"C:Dossier01Dossier02Dossier03Dossier04"', cette commande ne s'adressant
qu'à Dossier04, il faut avoir préablablement créer les autres dossiers ...
et faire d'autant de MkDir qu'il y a de sous-répertoires, pfffff)
Donc pour ce faire, je devrais faire une recherche dans la variable myPath
du caractère "" pour extraire les noms de dossiers à créer l'un après
l'autre.... Qqn pour m'aider? Ou me trouver une solution plus directe que ce
"MkDir" ?
Sub creadossier() racine = "D:" 'dossier => donner une valeur avec ce que vous désirez _ comme nom de dossier For i = 1 To 4 MkDir (racine & "dossier" & (i)) rep = (racine & "dossier" & (i)) racine = rep & "" Next End Sub
ou
Sub créadossiersdif() racine = "D:" nbdossier = InputBox("Indiquez le nombre de dossiers à créér", "Nombre de dossiers", "4") If nbdossier = "" Then Exit Sub If nbdossier < 1 Then GoTo erreur For i = 1 To 4 dossier = InputBox("Donnez un nom au dossier n°" & i, "Nom de Dossier", "Dossier") If dossier = "" Then Exit For MkDir (racine & dossier) ' & (i)) rep = (racine & dossier) ' & (i)) racine = rep & "" Next msg = "Les Dossiers :" + vbCrLf msg = msg + racine + vbCrLf msg = msg + "ont été créés" MsgBox msg Exit Sub erreur: MsgBox "Le nombre de dossiers est incorrect" End Sub
-- Gilbert +--------------------------------------------------------------------------- ---------------------------+ supprimer 'stpspam' à mon adresse de messagerie pour me joindre directement . SVP +--------------------------------------------------------------------------- ---------------------------+ "Lolo" a écrit dans le message de news:
Bonjour à tous
Soit une variable myPath = "C:Dossier01Dossier02Dossier03Dossier04"
J'aimerais créer ce dossiers ainsi que ses sous-dossiers alors qu'aucun d'eux n'existe préalablement, ce via VBA.
Seulement, si j'utilise la commande "MkDir", je suis obligé d'abord de créer Dossier01, puis Dossier02,etc (car pour faire 'MkDir
"C:Dossier01Dossier02Dossier03Dossier04"', cette commande ne s'adressant qu'à Dossier04, il faut avoir préablablement créer les autres dossiers ... et faire d'autant de MkDir qu'il y a de sous-répertoires, pfffff)
Donc pour ce faire, je devrais faire une recherche dans la variable myPath du caractère "" pour extraire les noms de dossiers à créer l'un après
l'autre.... Qqn pour m'aider? Ou me trouver une solution plus directe que ce "MkDir" ?
Merci d'avance!!!
Michel Pierron
Bonsoir Lolo; La procédure ci-dessous crée l'ensemble des directories définis dans Test Private Declare Function MakeSureDirectoryPathExists _ Lib "imagehlp.dll" (ByVal lpPath As String) As Boolean
Function MkDirAll(PathToCreate As String) As Boolean On Error GoTo Failed MkDirAll = MakeSureDirectoryPathExists(PathToCreate) Exit Function Failed: MsgBox Err.Number & vbLf & Err.Description, 48 MkDirAll = False End Function
Sub Test() If MkDirAll("C:TestIfItCreatedThisDirectoryStructure") Then MsgBox "Created directory structure !", 64 End If End Sub
MP
"Lolo" a écrit dans le message de news:
Bonjour à tous
Soit une variable myPath = "C:Dossier01Dossier02Dossier03Dossier04"
J'aimerais créer ce dossiers ainsi que ses sous-dossiers alors qu'aucun d'eux n'existe préalablement, ce via VBA.
Seulement, si j'utilise la commande "MkDir", je suis obligé d'abord de créer Dossier01, puis Dossier02,etc (car pour faire 'MkDir
"C:Dossier01Dossier02Dossier03Dossier04"', cette commande ne s'adressant qu'à Dossier04, il faut avoir préablablement créer les autres dossiers ... et faire d'autant de MkDir qu'il y a de sous-répertoires, pfffff)
Donc pour ce faire, je devrais faire une recherche dans la variable myPath du caractère "" pour extraire les noms de dossiers à créer l'un après
l'autre.... Qqn pour m'aider? Ou me trouver une solution plus directe que ce "MkDir" ?
Merci d'avance!!!
Bonsoir Lolo;
La procédure ci-dessous crée l'ensemble des directories définis dans Test
Private Declare Function MakeSureDirectoryPathExists _
Lib "imagehlp.dll" (ByVal lpPath As String) As Boolean
Function MkDirAll(PathToCreate As String) As Boolean
On Error GoTo Failed
MkDirAll = MakeSureDirectoryPathExists(PathToCreate)
Exit Function
Failed:
MsgBox Err.Number & vbLf & Err.Description, 48
MkDirAll = False
End Function
Sub Test()
If MkDirAll("C:TestIfItCreatedThisDirectoryStructure") Then
MsgBox "Created directory structure !", 64
End If
End Sub
MP
"Lolo" <laurent_hosch@hotmail.com> a écrit dans le message de
news:D07DFF70-4EC6-4547-86CC-3F49B272B57E@microsoft.com...
Bonjour à tous
Soit une variable myPath = "C:Dossier01Dossier02Dossier03Dossier04"
J'aimerais créer ce dossiers ainsi que ses sous-dossiers alors qu'aucun
d'eux n'existe préalablement, ce via VBA.
Seulement, si j'utilise la commande "MkDir", je suis obligé d'abord de
créer Dossier01, puis Dossier02,etc (car pour faire 'MkDir
"C:Dossier01Dossier02Dossier03Dossier04"', cette commande ne s'adressant
qu'à Dossier04, il faut avoir préablablement créer les autres dossiers ...
et faire d'autant de MkDir qu'il y a de sous-répertoires, pfffff)
Donc pour ce faire, je devrais faire une recherche dans la variable myPath
du caractère "" pour extraire les noms de dossiers à créer l'un après
l'autre.... Qqn pour m'aider? Ou me trouver une solution plus directe que ce
"MkDir" ?
Bonsoir Lolo; La procédure ci-dessous crée l'ensemble des directories définis dans Test Private Declare Function MakeSureDirectoryPathExists _ Lib "imagehlp.dll" (ByVal lpPath As String) As Boolean
Function MkDirAll(PathToCreate As String) As Boolean On Error GoTo Failed MkDirAll = MakeSureDirectoryPathExists(PathToCreate) Exit Function Failed: MsgBox Err.Number & vbLf & Err.Description, 48 MkDirAll = False End Function
Sub Test() If MkDirAll("C:TestIfItCreatedThisDirectoryStructure") Then MsgBox "Created directory structure !", 64 End If End Sub
MP
"Lolo" a écrit dans le message de news:
Bonjour à tous
Soit une variable myPath = "C:Dossier01Dossier02Dossier03Dossier04"
J'aimerais créer ce dossiers ainsi que ses sous-dossiers alors qu'aucun d'eux n'existe préalablement, ce via VBA.
Seulement, si j'utilise la commande "MkDir", je suis obligé d'abord de créer Dossier01, puis Dossier02,etc (car pour faire 'MkDir
"C:Dossier01Dossier02Dossier03Dossier04"', cette commande ne s'adressant qu'à Dossier04, il faut avoir préablablement créer les autres dossiers ... et faire d'autant de MkDir qu'il y a de sous-répertoires, pfffff)
Donc pour ce faire, je devrais faire une recherche dans la variable myPath du caractère "" pour extraire les noms de dossiers à créer l'un après
l'autre.... Qqn pour m'aider? Ou me trouver une solution plus directe que ce "MkDir" ?
Bonjour Alain; sauf échec lors de la création, cette fonction retourne toujours vrai puisque si le chemin mentionné existe, c'est tout bon et dans le cas contraire, chemin incomplet ou inexistant, la fonction crée les manques. MP
"Alain CROS" a écrit dans le message de news:688701c3e62c$6b06c0a0$ Bonjour.
Bonjour Alain; sauf échec lors de la création, cette fonction retourne toujours
vrai puisque si le chemin mentionné existe, c'est tout bon et dans le cas
contraire, chemin incomplet ou inexistant, la fonction crée les manques.
MP
"Alain CROS" <PERSONNE@ICI> a écrit dans le message de
news:688701c3e62c$6b06c0a0$a601280a@phx.gbl...
Bonjour.
Bonjour Alain; sauf échec lors de la création, cette fonction retourne toujours vrai puisque si le chemin mentionné existe, c'est tout bon et dans le cas contraire, chemin incomplet ou inexistant, la fonction crée les manques. MP
"Alain CROS" a écrit dans le message de news:688701c3e62c$6b06c0a0$ Bonjour.