Bonjour,
Je n'ai pas réussi à trouver un code(ni de topic)pour savoir comment afficher un nom de répertoire dans une cellule
Merci
Jeyjey
Bonjour,
Je n'ai pas réussi à trouver un code(ni de topic)pour savoir comment afficher un nom de répertoire dans une cellule
Merci
Jeyjey
NB - Pas de majuscule dans le sujet de discussion (lis les règles du forum, elles t'aideront dans tes recherches)
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cells(NoLig, NoCol) = NomRep
Merci pour ta réponse et désolé pour les majuscules, mais le nom de mon répertoire changera souvent
Bonjour
Ta question n'est pas claire... Quel répertoire? Celui du classeur actif?
Si oui
renvoie le chemin du dossier contenant le classeur qui contient le code...
Code : Sélectionner tout - Visualiser dans une fenêtre à part thisworkbook.Path
Donc
renvoie le chemin dans la cellule A1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part range("a1")=thisworkbook.Path
Note qu'il est possible de réaliser cela directement en Excel, sans passer par VBA...
Ok?
Code : Sélectionner tout - Visualiser dans une fenêtre à part =GAUCHE(CELLULE("nomfichier");CHERCHE("[";CELLULE("nomfichier"))-2)
pour résumé j'ai un repertoire A, dedans un fichier xls (contenant mon code) et un sous rep B, moi je voudrais avoir le nom du repertoire dans une des cellule de mon fichier excel
Et bien sur j'utilise Vba
Merci
Tu as un seul sous-répertoire?
Pour l'instant oui un seul repertoire
Je ne comprends toujours pas bien ta question. Que souhaites-tu réaliser?
Si tu n'as qu'un sous-dossier, c'est encore assez simple, mais si tu en as plusieurs, il faudrait que tu détermines ce qui te fait en choisir un plutôt qu'un autre...
A ce stade, il serait bien que tu réfléchisses calmement au problème et à la façon de l'énoncer... puis que tu reviennes vers nous pour l'exposer clairement.
Pardon j'avais oublié un morceau...
j'ai un repertoire A, dedans un fichier xls 'toto' (contenant mon code) et un sous rep B, moi je voudrais avoir le nom du sous repertoire B dans une des cellules (A1 par exemple) de mon fichier excel 'toto'
Toujours la même question : As-tu plusieurs sous-répertoires ou un seul ?Envoyé par "par toi"
1 seul sous répertoire B, mais le nom ne sera jamais le meme
Alors utilise Dir.
Il y a plus simple avec fso mais c'est dans la FAQ
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub LectureDuRépertoire() Dim Chemin, NomRep ' Extrait la première entrée. Chemin = "D:\xls\" NomRep = Dir(Chemin, vbDirectory) Do While NomRep <> "" ' Commence la boucle. ' Ignore le répertoire courant et les répertoires "." et ".." If NomRep <> "." And NomRep <> ".." Then ' vérifie que NomRep est un répertoire. If (GetAttr(Chemin & NomRep) And vbDirectory) = vbDirectory Then ' Affiche l'entrée uniquement si c'est un répertoire MsgBox NomRep 'là tu as le nom du répertoire End If End If NomRep = Dir ' Extrait l'entrée suivante. Loop End Sub
Il y a peut-être plus simple. Il faut avoir coché la référence "Microsoft Scripting Runtime" dans Outils/Références, ou utiliser la liaison tardive, et modifier les premières lignes du code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Function NomSousDossierUnique(NomDossier As String) As String Dim fs As New Scripting.FileSystemObject Dim Dossier As Scripting.Folder Dim SousDossier As Scripting.Folder Dim sf Set Dossier = fs.GetFolder(NomDossier) Set sf = Dossier.SubFolders For Each SousDossier In sf NomSousDossierUnique = SousDossier.Name Exit For Next Set fs = Nothing Set Dossier = Nothing Set SousDossier = Nothing Set sf = Nothing End Function
Il suffit d'utiliser cette fonction en passant le chemin du fichier actif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim fs As Object Dim Dossier As Object Dim SousDossier As Object Dim sf Set fs = CreateObject("scripting.filesystemobject") Set Dossier = fs.GetFolder(NomDossier) ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part range("a1") = NomSousDossierUnique(thisworkbook.path)
C'est Nickel ça marche du tonerre, Merci mes amis.
Correction
Sans ajouter la référence Microsoft scripting Runtime
Merci Pierre
Juste pour dire que fs, f, f1, fc peuvent être déclarés en tant que variants
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub Test() Rep = NomRep(ActiveWorkbook.path & "\") End sub Function NomRep(Rep) Dim fs, f, f1, fc Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(Rep) Set fc = f.SubFolders For Each f1 In fc NomRep = f1.Name exit for Next Set fs = Nothing Set fc = Nothing Set f = Nothing End Function
(Salut Pierre)
Bonjur à tous
formule à mettre dans la cellule où tu desires ton chemin
Bien sur, une sauvegarde est necessaire, les classeurs en cours de creation (en memoire), n'ont pas de chemin
Code : Sélectionner tout - Visualiser dans une fenêtre à part =GAUCHE(CELLULE("nomfichier");CHERCHE("[";CELLULE("nomfichier"))-2)
Bonne journée
Bonjour Wilfried, regarde ce que Jeyjey1 a mis là, c'est pas pareil !![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager