DragonDo
Messages postés93Date d'inscriptionlundi 8 avril 2002StatutMembreDernière intervention22 juillet 2006 20 févr. 2003 à 22:41
Désolé, mais les backslash ne sont pas passés :
lire : faire rechercher tous les "backslash"
puis : MonFic = "C:TonCheminbackslashTonFichier.Ext"
@+
DragonDo
Messages postés93Date d'inscriptionlundi 8 avril 2002StatutMembreDernière intervention22 juillet 2006 20 févr. 2003 à 22:34
Ton code est sympa mais il ne fonctionne pas dans certains cas. Par exemple lorsque tu met un point dans le nom de ton fichier (ce qu'autorise les versions de win32). De plus, plutôt que de faire rechercher tous les "" en commençant par le début de la chaîne à analyser, tu aurais dû commencer par la fin en faisant une boucle du style :
For Ind=len(Chemin) to 1 step-1
if mid$(chemin,ind,1)="" then
Nomfichier=mid$(chemin,ind+1)
exit for
Next ind
Contrairement à notre ami Lamouche2002 (qui ne donne pas de réponse constructive), je vais te donner une autre solution connue et faisant appel aux APIs (désolé, mais ça fais plus d'une ligne !) :
Ce projet necessite une feuille et un bouton de commande.
Dans la zone de déclaration de ta feuille :
Option Explicit
Private Declare Function GetFileTitle Lib "comdlg32.dll" Alias "GetFileTitleA" (ByVal lpszFile As String, ByVal lpszTitle As String, ByVal cbBuf As Integer) As Integer
Private Sub Command1_Click()
'----- Déclaration des variables
Dim MonFic As String
Dim TMsg As String
'----- Appel de la fonction et affichage du nom du fichier
GetFileTitle MonFic, TMsg, Len(TMsg)
TMsg = Left$(TMsg, InStr(1, TMsg, Chr$(0)) - 1)
MsgBox "Nom du fichier : " & Left$(TMsg, Len(TMsg) - 4) & " Extension : " & Right$(TMsg, 3)
End Sub
@+ Bonne prog
cs_BFR
Messages postés88Date d'inscriptionmardi 30 juillet 2002StatutMembreDernière intervention 1 mars 2008 19 févr. 2003 à 18:06
méme problème il bouffe les slash
il existe des dizaines de façons différentes d'arriver à un résultat en programmation il suffit souvent de chercher
une autre façon..
Public Function NOM_FICHIER(Chemin As String, Optional AvecExt As Boolean) As String
'-Extraction d'un chemin du nom du fichier seul avec ou sans extension
'-Déclaration
Dim TmpNomFichier As String
'-Extraction
'-Nom du fichier avec extension
TmpNomFichier = Right(Chemin, Len(Chemin) - InStrRev(Chemin, "", -1, 1))
'-Nom du fichier sans extension
If AvecExt Then TmpNomFichier = Left$(TmpNomFichier, Len(TmpNomFichier) - 4)
'-Renvoi dans la fonction
NOM_FICHIER = TmpNomFichier
End Function
renopé
cs_BFR
Messages postés88Date d'inscriptionmardi 30 juillet 2002StatutMembreDernière intervention 1 mars 2008 19 févr. 2003 à 18:03
il existe des dizaines de façons différentes d'arriver à un résultat en programmation il suffit souvent de chercher
une autre façon..
Public Function NOM_FICHIER(Chemin As String, Optional AvecExt As Boolean) As String
'-Extraction d'un chemin du nom du fichier seul avec ou sans extension
'-Déclaration
Dim TmpNomFichier As String
'-Extraction
'-Nom du fichier avec extension
TmpNomFichier = Right(Chemin, Len(Chemin) - InStrRev(Chemin, "", -1, 1))
'-Nom du fichier sans extension
If AvecExt Then TmpNomFichier = Left$(TmpNomFichier, Len(TmpNomFichier) - 4)
'-Renvoi dans la fonction
NOM_FICHIER = TmpNomFichier
End Function
celiphane
Messages postés466Date d'inscriptionsamedi 16 février 2002StatutMembreDernière intervention20 avril 2007 19 févr. 2003 à 16:45
je le reposte car l'antislash a été nopé :
public function fichier(byval chemin as string)
fichier=Right(chemin, InStr(StrReverse(chemin), "") - 1)
end function
ICIoBRa
Messages postés368Date d'inscriptiondimanche 24 juin 2001StatutMembreDernière intervention 7 décembre 2015 19 févr. 2003 à 16:43
Ok bon ton truc est a revoir kand meme i marche pas du tout
celiphane
Messages postés466Date d'inscriptionsamedi 16 février 2002StatutMembreDernière intervention20 avril 2007 19 févr. 2003 à 16:34
Salut, le mieux c'est quand même de récupérer l'extension, car le fichier c'est son nom + son extension.
Pour ça, mieux vaut utiliser cette fonction (en une ligne de code d'ailleurs) :
public function fichier(byval chemin as string)
fichier=Right(chemin, InStr(StrReverse(chemin), "") - 1)
end function
je viens de la faire donc ya peut-être mieux, mais en tout cas elle tourne. C'est déjà mieux qu'utiliser un ForNext complètement arbitraire... c vrai que c naze comme ca car c'est pas de l'algo de faire ça.
Tchao @+
ICIoBRa
Messages postés368Date d'inscriptiondimanche 24 juin 2001StatutMembreDernière intervention 7 décembre 2015 19 févr. 2003 à 16:25
Ben Vas Y dit la ta ligne de code au lieu d'te répéter :p
LaMoUcHe2002
Messages postés37Date d'inscriptionsamedi 4 mai 2002StatutMembreDernière intervention13 mars 2003 19 févr. 2003 à 16:12
Lut
Tu peux faire ça en une seule ligne de code .. :) Cherche bien !
++
LaMoUcHe2002
Messages postés37Date d'inscriptionsamedi 4 mai 2002StatutMembreDernière intervention13 mars 2003 19 févr. 2003 à 16:12
Lut
Tu peux faire ça en une seule ligne de code .. :)
25 févr. 2003 à 01:19
http://www.vbfrance.com/article.aspx?Val=4833
20 févr. 2003 à 22:41
lire : faire rechercher tous les "backslash"
puis : MonFic = "C:TonCheminbackslashTonFichier.Ext"
@+
20 févr. 2003 à 22:34
For Ind=len(Chemin) to 1 step-1
if mid$(chemin,ind,1)="" then
Nomfichier=mid$(chemin,ind+1)
exit for
Next ind
Contrairement à notre ami Lamouche2002 (qui ne donne pas de réponse constructive), je vais te donner une autre solution connue et faisant appel aux APIs (désolé, mais ça fais plus d'une ligne !) :
Ce projet necessite une feuille et un bouton de commande.
Dans la zone de déclaration de ta feuille :
Option Explicit
Private Declare Function GetFileTitle Lib "comdlg32.dll" Alias "GetFileTitleA" (ByVal lpszFile As String, ByVal lpszTitle As String, ByVal cbBuf As Integer) As Integer
Private Sub Command1_Click()
'----- Déclaration des variables
Dim MonFic As String
Dim TMsg As String
'----- Initialisation des variables
MonFic = "C:TonCheminTonFichier.Ext"
TMsg = String(255, 0)
'----- Appel de la fonction et affichage du nom du fichier
GetFileTitle MonFic, TMsg, Len(TMsg)
TMsg = Left$(TMsg, InStr(1, TMsg, Chr$(0)) - 1)
MsgBox "Nom du fichier : " & Left$(TMsg, Len(TMsg) - 4) & " Extension : " & Right$(TMsg, 3)
End Sub
@+ Bonne prog
19 févr. 2003 à 18:06
il existe des dizaines de façons différentes d'arriver à un résultat en programmation il suffit souvent de chercher
une autre façon..
Public Function NOM_FICHIER(Chemin As String, Optional AvecExt As Boolean) As String
'-Extraction d'un chemin du nom du fichier seul avec ou sans extension
'-Déclaration
Dim TmpNomFichier As String
'-Extraction
'-Nom du fichier avec extension
TmpNomFichier = Right(Chemin, Len(Chemin) - InStrRev(Chemin, "", -1, 1))
'-Nom du fichier sans extension
If AvecExt Then TmpNomFichier = Left$(TmpNomFichier, Len(TmpNomFichier) - 4)
'-Renvoi dans la fonction
NOM_FICHIER = TmpNomFichier
End Function
renopé
19 févr. 2003 à 18:03
une autre façon..
Public Function NOM_FICHIER(Chemin As String, Optional AvecExt As Boolean) As String
'-Extraction d'un chemin du nom du fichier seul avec ou sans extension
'-Déclaration
Dim TmpNomFichier As String
'-Extraction
'-Nom du fichier avec extension
TmpNomFichier = Right(Chemin, Len(Chemin) - InStrRev(Chemin, "", -1, 1))
'-Nom du fichier sans extension
If AvecExt Then TmpNomFichier = Left$(TmpNomFichier, Len(TmpNomFichier) - 4)
'-Renvoi dans la fonction
NOM_FICHIER = TmpNomFichier
End Function
19 févr. 2003 à 16:45
public function fichier(byval chemin as string)
fichier=Right(chemin, InStr(StrReverse(chemin), "") - 1)
end function
19 févr. 2003 à 16:43
19 févr. 2003 à 16:34
Pour ça, mieux vaut utiliser cette fonction (en une ligne de code d'ailleurs) :
public function fichier(byval chemin as string)
fichier=Right(chemin, InStr(StrReverse(chemin), "") - 1)
end function
je viens de la faire donc ya peut-être mieux, mais en tout cas elle tourne. C'est déjà mieux qu'utiliser un ForNext complètement arbitraire... c vrai que c naze comme ca car c'est pas de l'algo de faire ça.
Tchao @+
19 févr. 2003 à 16:25
19 févr. 2003 à 16:12
Tu peux faire ça en une seule ligne de code .. :) Cherche bien !
++
19 févr. 2003 à 16:12
Tu peux faire ça en une seule ligne de code .. :)
++