Reduire une chaine de caractere en VBA

Reduire une chaine de caractere en VBA - VB/VBA/VBS - Programmation

Marsh Posté le 03-03-2006 à 09:13:13    

Bonjour,  
 
Je developpe actuellement un petit soft en VBA sous Excel, j'importe des fichiers en utilisant la fonction GetOpenFileName qui renvoi le chemin complet avec le nom de mon fichier dans une variable déclarée en Variant.  
Ca c'est bon, j'obtiens donc ma valeur sous le style c:\excel\essai.txt.  
 
Mon problème est que j'ai besoin de récupérer dans cette valeur juste le nom de mon fichier sans l'extention juste " essai ".  
 
Comment je peux faire?  
 
Merci pour vos réponses.  
Olivier

Reply

Marsh Posté le 03-03-2006 à 09:13:13   

Reply

Marsh Posté le 03-03-2006 à 09:20:05    

Dim xString as String
 
xString = Mid ( MonTexte, Len(MonTexte) - InStr ( StrReverse ( MonTexte), "\" )) ' là xstring = "essai.txt"
 
xString = left( MonTexte, InStr (xString, "." ) -1) ' là xString = "essai"

Message cité 1 fois
Message édité par Profil supprimé le 03-03-2006 à 09:21:25
Reply

Marsh Posté le 03-03-2006 à 09:36:55    


 
Bonjour,
 
Merci pour cette super info, juste une petite chose, ta première instruction me renvoi "txt" et non "essai.txt

Reply

Marsh Posté le 03-03-2006 à 10:48:07    

Code :
  1. Dim xString As String
  2. Dim MonTexte As String
  3. MonTexte = "c:\excel\essai.txt"
  4. xString = Mid(MonTexte, 2 + Len(MonTexte) - InStr(StrReverse(MonTexte), "\" ))        ' là xstring = "essai.txt"
  5. xString = Left(xString, InStr(xString, "." ) - 1)  ' là xString = "essai"


Message édité par Profil supprimé le 03-03-2006 à 10:48:28
Reply

Marsh Posté le 03-03-2006 à 10:55:28    

:bounce:  
Merci beaucoup, ça marche

Reply

Marsh Posté le 03-03-2006 à 12:31:25    

Salut,
 
Autre formulation possible avec InstrRev (non disponible avec Office 97) :
 
xString = Right(MonTexte, Len(MonTexte) - InStrRev(MonTexte, "\" ))
xString = Left(xString, InStrRev(xString, "." ) - 1)
 
A+
Horatio

Reply

Marsh Posté le 03-03-2006 à 13:10:13    

Lord Nelson a écrit :

Salut,
 
Autre formulation possible avec InstrRev (non disponible avec Office 97) :
 
xString = Right(MonTexte, Len(MonTexte) - InStrRev(MonTexte, "\" ))
xString = Left(xString, InStr(xString, "." ) - 1)
 
A+
Horatio

;)  :D  

Reply

Marsh Posté le 03-03-2006 à 13:45:59    

Hé Hé,  
 :non:  
MonTexte = "C:\Documents\Divers\Test.d'un.fichier.avec.des.points.xls"
xString = Right(MonTexte, Len(MonTexte) - InStrRev(MonTexte, "\" ))  
xString = Left(xString, InStrRev(xString, "." ) - 1)  
 :D  
A+
Horatio
 

Reply

Marsh Posté le 03-03-2006 à 15:01:45    

Lord Nelson a écrit :

Hé Hé,  
 :non:  
MonTexte = "C:\Documents\Divers\Test.d'un.fichier.avec.des.points.xls"
xString = Right(MonTexte, Len(MonTexte) - InStrRev(MonTexte, "\" ))  
xString = Left(xString, InStrRev(xString, "." ) - 1)  
 :D  
A+
Horatio


xString = Left(xString, InStrRev(xString, "." ) - 1)  >>> "ess" et non "essai"  ;)
 
Donc c'est bien :
 
xString = Left(xString, InStr(xString, "." ) - 1) >>> "essai" (jusqu'à la lettre avant le point)


Message édité par Profil supprimé le 03-03-2006 à 15:02:48
Reply

Marsh Posté le 03-03-2006 à 19:45:43    

Bizarre, bizarre,
 
xString = Left(xString, InStrRev(xString, "." ) - 1)
me donne bien essai pas ess  :non:  
 
à suivre...
 

Reply

Sujets relatifs:

Leave a Replay

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