DÉFINIR LE NOM DU FICHIER GRACE A SON CHEMIN

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 30 oct. 2002 à 18:50
romit Messages postés 160 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 30 juin 2011 - 1 juin 2006 à 21:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/4922-definir-le-nom-du-fichier-grace-a-son-chemin

romit Messages postés 160 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 30 juin 2011
1 juin 2006 à 21:54
L'avantage de ma fonction c'est que pour les sites WEB ça marche (en principe, je pense qu'il y a un bug si il y a les deux caractères ("" et "/") mais je verais après !)
romit Messages postés 160 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 30 juin 2011
1 juin 2006 à 21:53
C'est horrible mais ça marche très bien et pour les sites WEB aussi. Et on peut définir le nombre max de "" et "/" à rechercher !

Public Function FindFile(adresse As String) As String
FindFile = adresse
Dim position As Integer
Dim nb As Integer
Dim max As Integer
If adresse = "" Then Exit Function
max = 50
renew:
If nb > max Then GoTo fin
position = InStr(adresse, "")
If position <> 0 Then
adresse = Mid(adresse, position + 1)
nb = nb + 1
GoTo renew
End If
fin:
renew2:
nb = 0
If nb > max Then GoTo fin2
position = InStr(adresse, "/")
If position <> 0 Then
adresse = Mid(adresse, position + 1)
nb = nb + 1
GoTo renew2
End If
fin2:
FindFile = adresse
End Function

Vous trouverez peut-être ça lent et long mais pas grave car ça marche et ce n'est pas lent !

J'ai fait aussi la même chose pour les extensions (je sais qu'on peut utiliser Right etc... mais ça prendrais les 3 dernières lettres. Et si l'extension fait 4 lettre ?! (sisi, ça arrive ^^)

Public Function FindExt(adresse As String) As String
FindExt = adresse
Dim position As Integer
Dim nb As Integer
Dim max As Integer
If adresse = "" Then Exit Function
max = 50
renew:
If nb > max Then GoTo fin
position = InStr(adresse, ".")
If position <> 0 Then
adresse = Mid(adresse, position + 1)
nb = nb + 1
GoTo renew
End If
fin:
FindExt = adresse
End Function

je sais que c'est pas beau mais faites copier coller des fonctions dans votre projet, envoyer lui comme paramètres le chamin d'acces au fichier et voila !

Ex: MsgBox FindFile("C:\Program Files\Entreprise\programme.exe")

Affichera une messagebox contenant "programme.exe"

^^
soldier8514 Messages postés 295 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 24 janvier 2014 1
1 mai 2006 à 12:33
kan c plus de l'ansi mais de l'unicode et que par exemple vos nom de fichier sont écrits en japonais ou autres _ vous faites quoi ? hein !?? kan ça plante _paceke ça va planter votre chmilblik les filles
laghyou Messages postés 3 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 28 avril 2006
27 avril 2006 à 19:57
g 1 probleme . je voudrai modifier les valeurs d'un fichier mé je ne sais pas comment faire .
et en plus il ne faut pas voir le fichier .
il faut effectuer les modification sans voir le fichier
aidez moi.
ma boit de message est : laghyou_50@hotmail.com
Belegaer Messages postés 12 Date d'inscription mercredi 24 juillet 2002 Statut Membre Dernière intervention 5 novembre 2002
6 nov. 2002 à 10:25
connaissait pas instrrev

merci jack, ca s'implifie ma fonction cheminfichier() ;-)
erreurs404 Messages postés 117 Date d'inscription lundi 23 octobre 2000 Statut Membre Dernière intervention 12 août 2009
31 oct. 2002 à 11:00
il y a aussi ...
Dim Temp() As String
Temp = Split(Path, "/")
File = Temp(Ubound(Temp))

j'ai mis slash à cause du pb de l'anti-slash
ovRflow Messages postés 42 Date d'inscription vendredi 2 août 2002 Statut Membre Dernière intervention 5 novembre 2004
31 oct. 2002 à 10:58
If Mid$(Fichier,Y,1)="/" Then .... voila la correction est faite.
cs_Cracker Messages postés 82 Date d'inscription dimanche 9 septembre 2001 Statut Membre Dernière intervention 21 août 2006
30 oct. 2002 à 22:04
put1, le slach y passe pas, bon c pas grave je pense que vous avez compri comen marche ma source ;)
cs_Cracker Messages postés 82 Date d'inscription dimanche 9 septembre 2001 Statut Membre Dernière intervention 21 août 2006
30 oct. 2002 à 22:00
Oups, je me suis trompé, voici la correction :

If Mid$(Fichier, Y, 1) = "" Then
cs_Cracker Messages postés 82 Date d'inscription dimanche 9 septembre 2001 Statut Membre Dernière intervention 21 août 2006
30 oct. 2002 à 21:46
Ou alors, + long qu'avec InStrRev, mais plus court que le code de LaMoUcHe2002
:)

dim Fichier as string
dim Y as integer
dim H as integer

For Y = 1 To Len(Fichier)
If Mid$(Fichier, Y, 1) = "" Then
H = Y
End If
Next Y
NomFichier= Mid$(Fichier, H + 1, Len(Fichier))
VicoLaChips2 Messages postés 436 Date d'inscription dimanche 20 janvier 2002 Statut Membre Dernière intervention 2 février 2010 2
30 oct. 2002 à 19:14
euuhhh NomFichier = Right(chemin, Len(chemin) - InStrRev(chemin, ""))
VicoLaChips2 Messages postés 436 Date d'inscription dimanche 20 janvier 2002 Statut Membre Dernière intervention 2 février 2010 2
30 oct. 2002 à 19:11
euuhh sans ça qu'est que vb6.exe fait sur ton bureau ..?
jack >> tu l'as essayer ton code avant de le sortir ??
ça muy mas bueno ...
NomFichier = Right(chemin, Len(chemin) - InStrRev(chemin, ""))

@+
LaMoUcHe2002 Messages postés 37 Date d'inscription samedi 4 mai 2002 Statut Membre Dernière intervention 13 mars 2003
30 oct. 2002 à 18:56
Je ne connaisais pas cette fonction InstrRev, merci :)
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
30 oct. 2002 à 18:50
Ce qui peut se résumer en une seule commande :
NomFichier = Right(Chemin, Len(Chemin) - InstrRev(Chemin, ""))

Pour info, InstrRev fait une recherche en commençant par la fin.
:-))