Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2012, 11h36   #1
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Par défaut Remonter chemin d'accès

Bonjour,

Je souhaiterais pouvoir remonter le chemin d'accès du fichier actif.

Pour l'instant j'ai ça :

Code :
1
2
3
4
5
6
Sub chemin()
Dim fichier As String
 
fichier = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, ".") - 1)
MsgBox fichier
End Sub
Mais ce code ne remonte que une lettre par une lettre. Or j'aimerais qu'il remonte d'un \ par un \.

Comment faire


Merci
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 11h39   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Le code actuel, ne remonte pas d'une lettre, il enlève l'extension. La seule chose c'est qu'il manque une vérification que "." est bien trouvé.
Mais tu peux faire la même chose en cherchant "\".
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 11h42   #3
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
J'ai essayé avec un "\" mais il ne remonte que d'une lettre par une lettre.


Code :
1
2
3
4
5
6
Sub chemin()
Dim fichier As String
 
fichier = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") - 2)
MsgBox fichier
End Sub
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 12h06   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Je ne sais pas comment tu utilises ton code, mais à mon avis le problème c'est que tu repars toujours du chemin initial. Utilise une fonction du genre :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Function CheminParent(ByVal chemin As String) As String
    Dim slashPos As Integer
 
    'On vérifie d'abord qu'il n'y a pas de \ en dernière position
    If Right(chemin, 1) = "\" Then chemin = Left(chemin, Len(chemin) - 1)
 
    'Ensuite on cherche la position du dernier \
    slashPos = InStrRev(chemin, "\")
 
    If slashPos = 0 Then
        CheminParent = chemin
    Else
        CheminParent = Left(chemin, slashPos - 1)
    End If
End Function
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 12h16   #5
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Merci pour cette réponse.

Cependant... je ne suis pas très calé en vba Quelques notions mais... rien de plus

comment je récupère mon chemin dans un msgbox ensuite ?

Merci
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h00   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Tu fais
Code :
MsgBox CheminParent(ThisWorkbook.Path)
Et si par exemple tu veux remonter de 2 crans :
Code :
1
2
3
4
Dim s As String
s = CheminParent(ThisWorkbook.Path)
s = CheminParent(s)
MsgBox s
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 16h15   #7
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Merci beaucoup
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h32.


 
 
 
 
Partenaires

Hébergement Web