OVH Cloud OVH Cloud

compléter le nom d'un repertoire

9 réponses
Avatar
gilles
Bonjour =E0 tous,
J'ai une macro qui cr=E9e un repertoire et de s /repertoires
Pour renommer ce repertoire, j'ai tent=E9 d'adapter , avec=20
mon niveau de VBAtiste d=E9butant, quelques lignes de code=20
que Steph m'a sugg=E9r=E9 pour renommer un fichier et qui=20
marche impeccable
Sachant que [B3] est une cellule de la feuille XL ou est=20
plac=E9e la proc=E9dure, qui comporte le nom que je veux=20
ajouter =E0 l'ancien nom.
=E7a donne ceci :

Option Explicit

Sub creerepertoire_et_renomme()
On Error Resume Next
MkDir "c:\QSE\NouvelleAffaire" ' jusque l=E0 =E7a marche
Dim machaine, newchain As String
machaine =3D "NouvelleAffaire"
newchain =3D [B3] & Mid(machaine, 1, Len(machaine) - 4)
End Sub

Il cr=E9e bien le repertoire nouvelle affaire, mais ne=20
change pas le plus petit morceau de nom, sans m'envoyer=20
de message
J'aurais voulu trouv=E9 : toto nouvelle affaire (toto est=20
en B3)
Si un Dieu du VBA accepte de quitter son farniente=20
annuel bien m=E9rit=E9 pour s'interesser =E0 mes humbles=20
soucis, qu'il en soit infiniment remerci=E9
A+

9 réponses

Avatar
papou
Bonjour
Surtout pas dieu du VBA et en tout cas pas sûr d'avoir tout compris ;-)
Machaine = "C:QSE " & [B3] & " Nouvelle Affaire"
MkDir Machaine

Précisions toutefois :
Il faut que le répertoire QSE existe
Attention avec l'utilisation de l'expression [B3] si le nom de la feuille
n'est pas précisé, la valeur retournée correspond systématiquement à la
valeur de la cellule B3 de la *feuille active*

Cordialement
Pascal

"gilles" a écrit dans le message de
news:64ae01c47551$5435f6c0$
Bonjour à tous,
J'ai une macro qui crée un repertoire et de s /repertoires
Pour renommer ce repertoire, j'ai tenté d'adapter , avec
mon niveau de VBAtiste débutant, quelques lignes de code
que Steph m'a suggéré pour renommer un fichier et qui
marche impeccable
Sachant que [B3] est une cellule de la feuille XL ou est
placée la procédure, qui comporte le nom que je veux
ajouter à l'ancien nom.
ça donne ceci :

Option Explicit

Sub creerepertoire_et_renomme()
On Error Resume Next
MkDir "c:QSENouvelleAffaire" ' jusque là ça marche
Dim machaine, newchain As String
machaine = "NouvelleAffaire"
newchain = [B3] & Mid(machaine, 1, Len(machaine) - 4)
End Sub

Il crée bien le repertoire nouvelle affaire, mais ne
change pas le plus petit morceau de nom, sans m'envoyer
de message
J'aurais voulu trouvé : toto nouvelle affaire (toto est
en B3)
Si un Dieu du VBA accepte de quitter son farniente
annuel bien mérité pour s'interesser à mes humbles
soucis, qu'il en soit infiniment remercié
A+
Avatar
gilles
Salut Pascal, (peut être pas dieu, mais très nettement
plus fort que
moi...!)
Merci pour la rapidité de ta réponse
Le réperoire QSE existe bien et dedans , je crée des rep
et sous rep
je veux que les noms de ces rep soient précédés d'un
prefixe qui est défini
dans la cellule B3 de la feuille
il n'y a qu'un une feuille sur le classeur
J'essaie ton code
Merci encore
gilles
----- Original Message -----
From: "papou" <cestpasbonprobin@çanonpluscg44.fr>
Newsgroups: microsoft.public.fr.excel
Sent: Thursday, July 29, 2004 1:06 PM
Subject: Re: compléter le nom d'un repertoire
Avatar
JpPradier
Bonjour Gilles

Voici adaptée du site de Frédéric Sigonneau :

j-p

Sub test()

On Error Resume Next
MkDir "c:QSENouvelleAffaire"
Dim machaine, newchain As String
machaine = "NouvelleAffaire"
newchain = [B3] & Mid(machaine, 1, Len(machaine) - 4)
RenommeDossier "c:QSENouvelleAffaire", 0, newchain
End Sub

Sub RenommeDossier(LeDossier$, Idx As Long, NewNom$)
Dim fso As Object, Dossier As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)
titi = Dossier.Name
Dossier.Name = NewNom
Set Dossier = Nothing
Set fso = Nothing

End Sub 'fs
Avatar
gilles
merci à toi aussi jp
je crois comprendre qu' il y a 2 procédures : l'une qui
déclare (renomme dossier) et celle que je lance (test)
à placer dans la feuille ou sur un module?
J'essaie tout ça
merci encore
-----Message d'origine-----
Bonjour Gilles

Voici adaptée du site de Frédéric Sigonneau :

j-p

Sub test()

On Error Resume Next
MkDir "c:QSENouvelleAffaire"
Dim machaine, newchain As String
machaine = "NouvelleAffaire"
newchain = [B3] & Mid(machaine, 1, Len(machaine) - 4)
RenommeDossier "c:QSENouvelleAffaire", 0, newchain
End Sub

Sub RenommeDossier(LeDossier$, Idx As Long, NewNom$)
Dim fso As Object, Dossier As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)
titi = Dossier.Name
Dossier.Name = NewNom
Set Dossier = Nothing
Set fso = Nothing

End Sub 'fs

.



Avatar
LeSteph
Bonsoir Gilles,
Ouille ouille!
quelques lignes de code
que Steph m'a suggéré pour renommer un fichier et qui
marche impeccable
[...

Mid(machaine, 1, Len(machaine) - 4)
...
ceci (Mid) extrait depuis le caractère (1) jusqu'à la longueur
de chaine(len(machaine)) hors extension (-4) d'un nom de fichier]
soit -4 caractères , ceux cis : ".xls"
Ce n'est pas approprié pour un répertoire!
------------------

Pour repartir de ton code définis le nom avant et crée le répertoire ensuite
Sub GenRep
Dim machaine as string
machaine="c:" & [b3] & "NouvAffaire"
Mkdir machaine
End sub

;-)

LeSteph

"gilles" a écrit dans le message de
news:64ae01c47551$5435f6c0$
Bonjour à tous,
J'ai une macro qui crée un repertoire et de s /repertoires
Pour renommer ce repertoire, j'ai tenté d'adapter , avec
mon niveau de VBAtiste débutant, quelques lignes de code
que Steph m'a suggéré pour renommer un fichier et qui
marche impeccable
Sachant que [B3] est une cellule de la feuille XL ou est
placée la procédure, qui comporte le nom que je veux
ajouter à l'ancien nom.
ça donne ceci :

Option Explicit

Sub creerepertoire_et_renomme()
On Error Resume Next
MkDir "c:QSENouvelleAffaire" ' jusque là ça marche
Dim machaine, newchain As String
machaine = "NouvelleAffaire"
newchain = [B3] & Mid(machaine, 1, Len(machaine) - 4)
End Sub

Il crée bien le repertoire nouvelle affaire, mais ne
change pas le plus petit morceau de nom, sans m'envoyer
de message
J'aurais voulu trouvé : toto nouvelle affaire (toto est
en B3)
Si un Dieu du VBA accepte de quitter son farniente
annuel bien mérité pour s'interesser à mes humbles
soucis, qu'il en soit infiniment remercié
A+

Avatar
gilles
Bonjour à tous,notamment JPP , PASCAL et STEPH dont je
viens seulemnt de voir le message que je n'ai donc pas
testé
J' en appelle encore à votre puits de savoir
J'ai essayé le code de JPP : ça marche mais ça efface le
contenu da la cellule qui donne le nom du repertoire
J'ai essayé le code de PAPOU : ça marche (voir code ci
dessous)

Sub creerepertoire_comme_cellule() 'prend le nom de la
cellule B3
On Error Resume Next
Dim machaine, newchain As String
machaine = "C:QSE " & [B3]
MkDir machaine
ça me crée bien le repertoire au nom de B3
Toutefois j'aimerais créer des s :repertoires derriere
celui crée
Ex : B3 =ZAZA
MkDir "c:QSEZAZAarborescence affaire"
MkDir "c:QSEZAZAarborescence affairea-fournisseurs"
MkDir "c:QSEZAZAarborescence affaireb-Gestion
facturation Budget"

J'ai essayé ceci
MkDir machaine " arborescence affaire"
Ça ne cree que le repertoire ZAZA et pas le
s :repertoire arborescence affaire

Alors si dans votre grande mansuétude.
A poor lonesone VBAtiste
Gilles
A +

-----Message d'origine-----
Bonjour Gilles

Voici adaptée du site de Frédéric Sigonneau :

j-p

Sub test()

On Error Resume Next
MkDir "c:QSENouvelleAffaire"
Dim machaine, newchain As String
machaine = "NouvelleAffaire"
newchain = [B3] & Mid(machaine, 1, Len(machaine) - 4)
RenommeDossier "c:QSENouvelleAffaire", 0, newchain
End Sub

Sub RenommeDossier(LeDossier$, Idx As Long, NewNom$)
Dim fso As Object, Dossier As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)
titi = Dossier.Name
Dossier.Name = NewNom
Set Dossier = Nothing
Set fso = Nothing

End Sub 'fs

.



Avatar
papou
Bonjour
Dim machaine, newchain As String
machaine = "C:QSE " & [B3]
MkDir machaine
MkDir machaine & "arborescence affaire"
MkDir machaine & "arborescence affairea-fournisseurs"
MkDir machaine & "arborescence affaireb-Gestion facturation Budget"
Cordialement

Pascal


"gilles" a écrit dans le message de
news:6f3c01c47606$118cad90$
Bonjour à tous,notamment JPP , PASCAL et STEPH dont je
viens seulemnt de voir le message que je n'ai donc pas
testé
J' en appelle encore à votre puits de savoir
J'ai essayé le code de JPP : ça marche mais ça efface le
contenu da la cellule qui donne le nom du repertoire
J'ai essayé le code de PAPOU : ça marche (voir code ci
dessous)

Sub creerepertoire_comme_cellule() 'prend le nom de la
cellule B3
On Error Resume Next
Dim machaine, newchain As String
machaine = "C:QSE " & [B3]
MkDir machaine
ça me crée bien le repertoire au nom de B3
Toutefois j'aimerais créer des s :repertoires derriere
celui crée
Ex : B3 =ZAZA
MkDir "c:QSEZAZAarborescence affaire"
MkDir "c:QSEZAZAarborescence affairea-fournisseurs"
MkDir "c:QSEZAZAarborescence affaireb-Gestion
facturation Budget"

J'ai essayé ceci
MkDir machaine " arborescence affaire"
Ça ne cree que le repertoire ZAZA et pas le
s :repertoire arborescence affaire

Alors si dans votre grande mansuétude.
A poor lonesone VBAtiste
Gilles
A +

-----Message d'origine-----
Bonjour Gilles

Voici adaptée du site de Frédéric Sigonneau :

j-p

Sub test()

On Error Resume Next
MkDir "c:QSENouvelleAffaire"
Dim machaine, newchain As String
machaine = "NouvelleAffaire"
newchain = [B3] & Mid(machaine, 1, Len(machaine) - 4)
RenommeDossier "c:QSENouvelleAffaire", 0, newchain
End Sub

Sub RenommeDossier(LeDossier$, Idx As Long, NewNom$)
Dim fso As Object, Dossier As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)
titi = Dossier.Name
Dossier.Name = NewNom
Set Dossier = Nothing
Set fso = Nothing

End Sub 'fs

.



Avatar
LeSteph
Bonjour Papou,

Et ben oui! on définit d'abord et on mkdir après, merci papou
;D lol
dailleurs ben ce que je lui ai dit si tu lis c'est ben pareil
Ah Que ! aussi le newchain y sert plus a grand chose ...

Et Bonnes vacances à tout ceux qui partent en vacances...

LeSteph

"papou" <cestpasbonprobin@çanonpluscg44.fr> a écrit dans le message de
news:e%
Bonjour
Dim machaine, newchain As String
machaine = "C:QSE " & [B3]
MkDir machaine
MkDir machaine & "arborescence affaire"
MkDir machaine & "arborescence affairea-fournisseurs"
MkDir machaine & "arborescence affaireb-Gestion facturation Budget"
Cordialement

Pascal


"gilles" a écrit dans le message de
news:6f3c01c47606$118cad90$
Bonjour à tous,notamment JPP , PASCAL et STEPH dont je
viens seulemnt de voir le message que je n'ai donc pas
testé
J' en appelle encore à votre puits de savoir
J'ai essayé le code de JPP : ça marche mais ça efface le
contenu da la cellule qui donne le nom du repertoire
J'ai essayé le code de PAPOU : ça marche (voir code ci
dessous)

Sub creerepertoire_comme_cellule() 'prend le nom de la
cellule B3
On Error Resume Next
Dim machaine, newchain As String
machaine = "C:QSE " & [B3]
MkDir machaine
ça me crée bien le repertoire au nom de B3
Toutefois j'aimerais créer des s :repertoires derriere
celui crée
Ex : B3 =ZAZA
MkDir "c:QSEZAZAarborescence affaire"
MkDir "c:QSEZAZAarborescence affairea-fournisseurs"
MkDir "c:QSEZAZAarborescence affaireb-Gestion
facturation Budget"

J'ai essayé ceci
MkDir machaine " arborescence affaire"
Ça ne cree que le repertoire ZAZA et pas le
s :repertoire arborescence affaire

Alors si dans votre grande mansuétude.
A poor lonesone VBAtiste
Gilles
A +

-----Message d'origine-----
Bonjour Gilles

Voici adaptée du site de Frédéric Sigonneau :

j-p

Sub test()

On Error Resume Next
MkDir "c:QSENouvelleAffaire"
Dim machaine, newchain As String
machaine = "NouvelleAffaire"
newchain = [B3] & Mid(machaine, 1, Len(machaine) - 4)
RenommeDossier "c:QSENouvelleAffaire", 0, newchain
End Sub

Sub RenommeDossier(LeDossier$, Idx As Long, NewNom$)
Dim fso As Object, Dossier As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)
titi = Dossier.Name
Dossier.Name = NewNom
Set Dossier = Nothing
Set fso = Nothing

End Sub 'fs

.







Avatar
gilles
merci encore à PAPOU STEPH et JPP
Si malgré ma grande nullité je n'arrive pas à kekchose
avec les efforts que vous deployez pendant vos
vacances....
Alors justement: BONNES VACANCES
à +
-----Message d'origine-----
Bonjour Papou,

Et ben oui! on définit d'abord et on mkdir après, merci
papou

;D lol
dailleurs ben ce que je lui ai dit si tu lis c'est ben
pareil

Ah Que ! aussi le newchain y sert plus a grand chose ...

Et Bonnes vacances à tout ceux qui partent en vacances...

LeSteph

"papou" <cestpasbonprobin@çanonpluscg44.fr> a écrit dans
le message de

news:e%
Bonjour
Dim machaine, newchain As String
machaine = "C:QSE " & [B3]
MkDir machaine
MkDir machaine & "arborescence affaire"
MkDir machaine & "arborescence affairea-fournisseurs"
MkDir machaine & "arborescence affaireb-Gestion
facturation Budget"


Cordialement

Pascal


"gilles" a écrit
dans le message de


news:6f3c01c47606$118cad90$
Bonjour à tous,notamment JPP , PASCAL et STEPH dont je
viens seulemnt de voir le message que je n'ai donc pas
testé
J' en appelle encore à votre puits de savoir
J'ai essayé le code de JPP : ça marche mais ça efface
le


contenu da la cellule qui donne le nom du repertoire
J'ai essayé le code de PAPOU : ça marche (voir code ci
dessous)

Sub creerepertoire_comme_cellule() 'prend le nom de la
cellule B3
On Error Resume Next
Dim machaine, newchain As String
machaine = "C:QSE " & [B3]
MkDir machaine
ça me crée bien le repertoire au nom de B3
Toutefois j'aimerais créer des s :repertoires derriere
celui crée
Ex : B3 =ZAZA
MkDir "c:QSEZAZAarborescence affaire"
MkDir "c:QSEZAZAarborescence affairea-fournisseurs"
MkDir "c:QSEZAZAarborescence affaireb-Gestion
facturation Budget"

J'ai essayé ceci
MkDir machaine " arborescence affaire"
Ça ne cree que le repertoire ZAZA et pas le
s :repertoire arborescence affaire

Alors si dans votre grande mansuétude.
A poor lonesone VBAtiste
Gilles
A +

-----Message d'origine-----
Bonjour Gilles

Voici adaptée du site de Frédéric Sigonneau :

j-p

Sub test()

On Error Resume Next
MkDir "c:QSENouvelleAffaire"
Dim machaine, newchain As String
machaine = "NouvelleAffaire"
newchain = [B3] & Mid(machaine, 1, Len(machaine) -
4)



RenommeDossier "c:QSENouvelleAffaire", 0,
newchain



End Sub

Sub RenommeDossier(LeDossier$, Idx As Long, NewNom$)
Dim fso As Object, Dossier As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)
titi = Dossier.Name
Dossier.Name = NewNom
Set Dossier = Nothing
Set fso = Nothing

End Sub 'fs

.







.