[VB] Comment supprimer le chemin et garder que le nom

Comment supprimer le chemin et garder que le nom [VB] - Programmation

Marsh Posté le 15-08-2001 à 14:09:28    

En VB j'aimerais par exemple supprimer le chemin lorsqu il est stocker ds une variable
 
Dim temp As String
 
si par exemple ds temp  il y a  C:\Windows\Bureau\MonDocument.xls
 
j'aimerais recuperer MomDocument.xls  sans le chemin
Commemt om fais ca?
 
Y a a til une fomction  "concatenation" ou qqch comme ca?


---------------
Une ptite aide en VB et jVBien
Reply

Marsh Posté le 15-08-2001 à 14:09:28   

Reply

Marsh Posté le 15-08-2001 à 14:55:47    

Vlà la soluce :
 
Utilise la fonction Split :
 
a = Split("C:\Windows\Bureau\MonDocument.xls","\" )
 
b=a(Ubound(a))
 
alors, tu auras b="MonDocument.xls"
 
Vlà !
 
a+

Reply

Marsh Posté le 15-08-2001 à 15:18:47    

Trop simpa Merci
Mais je l'ai essayer et il connait pas UBound  
Pourkoi?  il me fait une erreur de compilation
il manque p etre une bibliotheque?
Je ne sais pas


---------------
Une ptite aide en VB et jVBien
Reply

Marsh Posté le 15-08-2001 à 16:17:13    

on peut faire aussi :
 
i=1
do
tt=right(temp,i)
loop while(mid(right(temp,i),1,1)<>"\" )
tt=mid(tt,1,len(tt))
 
 
 
' tt contient la variable temp débarassée du chemin

Reply

Marsh Posté le 15-08-2001 à 18:57:38    

ok merci bcp  je le test


---------------
Une ptite aide en VB et jVBien
Reply

Marsh Posté le 16-08-2001 à 07:57:46    

Ou encore comme ca, sous forme de fonction :
 
Function GetFileName(ByVal Filename As String) As String
    Dim L As Integer, J As Integer
     
    L = Len(Filename)
    For J = L To 1 Step -1
        If Mid(Filename, J, 1) = "\" Then Exit For
    Next J
     
    GetFileName = Mid(Filename, J + 1)
     
End Function

Reply

Marsh Posté le 16-08-2001 à 08:08:32    

je vous remercie tous  je test tt ca de suite


---------------
Une ptite aide en VB et jVBien
Reply

Marsh Posté le 16-08-2001 à 08:47:37    

La methode de KarLKoX marche tres bien  
merci
La methode de nur  fait une boucle infinie (while  je sais pas pk) mais si je ve garder  
 
Bureau\MonDocument.xls  c'est possible ca?


---------------
Une ptite aide en VB et jVBien
Reply

Marsh Posté le 16-08-2001 à 09:12:11    

en fait mon probleme c'est que je dois executer une macro
qui se trouve ds un fichier Excel mais pas au meme niveau que le fichier duquel elle est lancee
j'utilise ca :  Application.Run MonDocument + "!load"
 
avec MonDocument  le fichier qui est ds un repertoire project
ds ce fichier il y a la Macro  load
avec cette ligne g mis MonDocument = "project\" + MonDocument
Mais il ve pas l'executer Pourquoi?
Merci pour votre aide


---------------
Une ptite aide en VB et jVBien
Reply

Marsh Posté le 16-08-2001 à 10:37:29    

desole j'ai juste oublie de rajouter la ligne "i=i+1" dans la boucle
 
temp="c:\documets\toto.xls"
i=1
do
tt=right(temp,i)
I=I+1  'oublie
loop while(mid(right(temp,i),1,1)<>"\" )
tt=mid(tt,1,len(tt))
msgbox(tt)

Reply

Marsh Posté le 16-08-2001 à 10:37:29   

Reply

Marsh Posté le 16-08-2001 à 10:48:53    

Pour la réponse de ceyquem, c'est pas plutot la fonction Split qui n'est pas référencée (elle apparait avec vb6, donc Office2000)
 
Auquel cas tu peux programmer la fonction Split dont voici le code vb
 
 
 
Public Function Split(ByVal sIn As String, Optional sDelim As _
            String, Optional nLimit As Long = -1, Optional bCompare As _
             VbCompareMethod = vbBinaryCompare) As Variant
          Dim sRead As String, sOut() As String, nC As Integer
          If sDelim = "" Then
              Split = sIn
          End If
          sRead = ReadUntil(sIn, sDelim, bCompare)
          Do
              ReDim Preserve sOut(nC)
              sOut(nC) = sRead
              nC = nC + 1
              If nLimit <> -1 And nC >= nLimit Then Exit Do
              sRead = ReadUntil(sIn, sDelim)
          Loop While sRead <> ""
          ReDim Preserve sOut(nC)
          sOut(nC) = sIn
          Split = sOut
End Function
 
Je rajoute la fonction qui fait le contraire, à savoir join()
 
Public Function Join(source() As String, Optional _
            sDelim As String = " " ) As String
      Dim sOut As String, iC As Integer
      On Error GoTo errh:
          For iC = LBound(source) To UBound(source) - 1
              sOut = sOut & source(iC) & sDelim
          Next
          sOut = sOut & source(iC)
          Join = sOut
          Exit Function
      errh:
          Err.Raise Err.Number
End Function

Reply

Marsh Posté le 16-08-2001 à 11:09:43    

pour garder "bureau\toto\xls" :
 
 
 
temp="c:\bureau\toto.xls"
i=1
do
tt=right(temp,i)
I=I+1  'oublie
loop while(mid(right(temp,i),1,1)<>"b" )
tt=right(temp,i+1)
tt=mid(tt,2,len(tt))
msgbox(tt)  
MAIS:
 
pour lancer la macro dans un autre chemin il n'y a pas besoin
de garder le chemin puisque les 2 classeurs sonts ouverts:
  application.run(nom du fichier!load)
il faut peut etre faire:  
si tt=toto     ('on suprime .xls)
tt=tt&"!" & nom de la macro
 
pour supprimer .xls :tt=mid(tt,1,len(tt)-4)aulieu de: tt=mid(tt,1,len(tt)-1)  (dans la premiere version sans bureau)  
 
 
 
 
 
c'est peut etre un peu confus ?

Reply

Marsh Posté le 16-08-2001 à 11:40:53    

Merci a tout le monde  
je vais voie si je trouve mon bonheur la dedans  
Je vous tiens au courrant
Merci  :jap:  
 
hum....le forum rame a max chez moi c normal?


---------------
Une ptite aide en VB et jVBien
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed