Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

romainchu78

XLDnaute Occasionnel
Bonjour a tous,
Je continu avec mes questions...

je stock le chemin d'acces d'un fichier TXT avec le "GetOpenFilename" que je stock dans une variable avec ceci:

FileToOpen = Application.GetOpenFilename("Fichiers texte (*.txt), *.txt")

Comment puis-je faire pour stocker ensuite seulement le titre du fichier sans le chemin.
par default dans la variable FileToOpen, j'ai par exemple:
C:\Documents and Settings\Romain\Mes documents\list.txt
je souhaiterais ne stocker que "list.txt" ou encore mieux "list" dans une autre variable sans a avoir a ouvrir le fichier TXT.

merci pour vos reponses
 
Re : GetOpenFilename...

bonjour

peut etre comme ceci :

FileToOpen = Application.GetOpenFilename("Fichiers texte (*.txt), *.txt")
FileToOpen = Split(FileToOpen, "\")(UBound(Split(FileToOpen, "\")))
FileToOpen = Split(FileToOpen, ".")(0)
MsgBox FileToOpen'pour test

salut 🙂
 
Re : GetOpenFilename...

Merci pour ta reponse,

ca semble fonctionne...
peut tu cependant me confirmer que cela peut aussi etre utilise avec un opentext. Va t'il reconnaitre le chemin d'acces pour charger le fichier txt par la suite.

jai teste je pense que c bon, mais je voudrais etre sur que cela va marcher tout le temps.

encore merci.
bon dimanche
 
Re : GetOpenFilename...

Bonjour
En fait la fonction split découpe la chaîne chemin+nomfichier là où se trouve des \ . On obtient donc un bout pour chaque dossier du chemin et le dernier bout est donc le nom du fichier
La fonction ubound prend ce dernier bout.
Une deuxième fonction split cherche le point pour couper en 2 : nom du fichier et extension. le chiffre 0 indique le premier bout donc le nom du fichier.
Le seul cas où ça ne marcherait pas c'est pour un nom de fichier contenant un ou plusieurs points.
 
Re : GetOpenFilename...

Bonjour

En complément de la solution donnée par mon ami Hervé, une autre façon de faire :
Code:
[SIZE=2]Dim FileTo[COLOR=navy]Open As String[/COLOR]
      FileTo[COLOR=navy]Open[/COLOR] = Application.[COLOR=navy]GetOpen[/COLOR]Filename("Fichiers texte (*.txt), *.txt")
      FileTo[COLOR=navy]Open[/COLOR] = Replace(Mid(FileTo[COLOR=navy]Open[/COLOR], InStrRev(FileTo[COLOR=navy]Open[/COLOR], "\") + 1), ".txt", "")

      MsgBox IIf(FileTo[COLOR=navy]Open[/COLOR] = "Faux", "Bouton Annuler", FileTo[COLOR=navy]Open[/COLOR])[/SIZE]
Cordialement,
 
Re : GetOpenFilename...

Merci a vous pour vos explications.

MyDearFriend, est ce que code permet de zapper la condition qui impose que le titre du fichier TXT n'est qu'un seul point.
en d'autre mots, est ceque si j'ai un titre "a1.ff.TXT" ton code me le prendra en compte ?
 
Re : GetOpenFilename...

Re
Oui ce code de MDF extrait le nom du fichier en partant de la fin du nom jusqu'au \ le précédent et n'enlève que la partie .txt.
Cependant de façon générale il est plus que déconseillé de mettre des points dans les noms des fichiers : nombre d'utilitaires se repère sur le 1er point rencontré et pourraient ne pas fonctionner correctement.
D'ailleurs la plupart des systèmes d'exploitation ne les acceptent pas.
Utilise le _ (tiret de soulignement ou underscore).
 
Re : GetOpenFilename...

Re,

romainchu78, tout d'abord je te confirme que ce code fonctionnera dès lors où tu n'as qu'une seule occurence de l'expression ".txt" dans le nom de ton fichier (logiquement à la fin 😉).
Donc avec un nom de fichier comme : "Truc.machin.chose.270806.txt" ça fonctionnera.

Je te confirme aussi que si le nom de ton fichier (peu probable) est :
Truc.txtmachin.270806.txt alors ça ne fonctionnera plus...

Sinon, une autre possibilité, que je suppose "béton" cette fois, pour contourner le dernier cas (même s'il me paraît peu probable) et qui aurait l'avantage de fonctionner quelque soit l'extension du fichier :
Code:
[SIZE=2]Dim FileTo[COLOR=navy]Open As String[/COLOR]
      FileTo[COLOR=navy]Open[/COLOR] = Application.[COLOR=navy]GetOpen[/COLOR]Filename("Fichiers texte (*.txt), *.txt")
      [COLOR=navy]If [/COLOR]FileTo[COLOR=navy]Open[/COLOR] = "Faux" [COLOR=navy]Then Exit Sub[/COLOR]

      FileTo[COLOR=navy]Open[/COLOR] = Mid(FileTo[COLOR=navy]Open[/COLOR], InStrRev(FileTo[COLOR=navy]Open[/COLOR], "\") + 1)
      FileTo[COLOR=navy]Open[/COLOR] = Left(FileTo[COLOR=navy]Open[/COLOR], InStrRev(FileTo[COLOR=navy]Open[/COLOR], ".") - 1)

      MsgBox FileToOpen[/SIZE]
Cela dit, je pense tout à fait comme chris : il est toujours préférable de réserver le "." pour l'extension du fichier.

Personnellement, je trouve le code d'Hervé très original (c'est tellement rare dans le forum).

Par ailleurs, si je puis me permettre romainchu78 : tu ne crois pas que le meilleur moyen de maitriser un sujet et d'acquérir des connaissances, c'est de procéder soi-même à des tests ?

Cordialement,
 
Re : GetOpenFilename...

myDearFriend, merci pour ta reponse.

ton code ne semble pas fonctionner dans mon programme. par contre celui d'herve oui, ca me suffit. merci quant meme.

par contre tu peux etre m'aider sur quelque chose d'autre...mon titre ne dois pas comporter de point.
aurais tu une idee sur un code simple permettant de detecter le presence de point dans le titre (titre toujours stoke dans la variable "NomFichierCourt2")
et si au moins un point est present, un message s'affiche a l'utilisateur l'invitant a choisir un autre nom sans point.

merci beaucoup (et bien sur a tout ceux qui mon repondu auparavent)
 
Re : GetOpenFilename...

Bonjour
Bizzare le code fonctionne chez moi sans problème.
Pour ta question
If InStr(NomFichierCourt2, ".") <> 0 Then
MsgBox "message d'erreur"
Exit sub
End If

le Exit sub est à mettre si ce test est au milieu d'une procédure (sub) qui continue si tout va bien ou s'arrête si le titre doit être modifié.
 
Re : GetOpenFilename...

ok, le code pour tester la presence de point marche tres bien ainsi que la nouvelle version de code fait par MyDearFriend.
Merci a vous.

MyDearFriend je n'ai pas dit que ton code ne fonctionnais pas en soi, mais en tout cas, integre dans le miens ca n'a pas marche. y a du avoir une interference avec autre chose...ne te vexe pas, tu m'ais d'une grande aide toi aussi. merci encore.

j'ai un autre petit soucis, jai integre un code apres le getopenfilename qui permet de quitter la procedure si l'utilisateur clique sur annule au lieu de charger un fichier.
cela marche, mais du coup je ne peut plus charge de fichier, il me mais un message d'erreur "type mismatch" au niveau de la ligne "If FileToOpenCAB1 = False Then Exit Sub"

voici mon code:
FileToOpenCAB1 = Application.GetOpenFilename("Fichiers texte (*.txt), *.txt") 'On preleve le chemin d'acces du fichier a charger
If FileToOpenCAB1 = False Then Exit Sub

quelqu'un q t'il une idee ?
merci par avance
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
309
Retour