Récuperer le nom d'un fichier à partir de Application.FileDialog(msoFileDialogOpen)

  • Initiateur de la discussion Initiateur de la discussion oasis2k
  • Date de début Date de début

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 !

oasis2k

XLDnaute Nouveau
Bonjour

Tout est dit dans le titre, comment récupérer le nom du fichier ouvert à partir d'une commande de type Application.FileDialog(msoFileDialogOpen).show ?

Je souhaite traiter un fichier (exemple toto.csv dans le repertoire c:\mondossier\test). le nom de se fichier va changer, ainsi que le dossier dans lequel il est. Le code permettant de traiter le fichier est ok (j'utilise une query table et je souhaite conserver ce code), mais je n'arrive pas à placer dans une variable "fichier" le nom du fichier ouvert. J'ai récupéré le nom du chemin du dossier.

Pour le moment, j'ai écris:
Code:
Application.FileDialog(msoFileDialogOpen).Show
  Repertoire = Application.FileDialog(msoFileDialogOpen).InitialFileName
  MsgBox Repertoire

If Right(Repertoire, 1) <> "\" Then Repertoire = Repertoire & "\"

Fichier = "toto.csv"

Chaine = "TEXT;" & Repertoire & Fichier
     
    Sheets("Feuil2").Select
     
    With ActiveSheet.QueryTables.Add(Connection:=Chaine, Destination:=Range("A1"))
        .Name = Fichier
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
.
.
.
End With

ce qui me permet de récupérer le nom du chemin dans la variable "repertoire" mais pas le nom du fichier !!!!

Je pensais écrire un bout de code qui à partir du chemin "repertoire" retire tout ce qui est avant le nom du fichier pour ne conserver que "toto.csv" seulement dans ma variable "repertoire" le nom du fichier n'apparait pas.... Quelle serai la syntaxe à employer?

A votre bon coeur si vous avez une idée !!!


Merci par avance
 
Re : Récuperer le nom d'un fichier à partir de Application.FileDialog(msoFileDialogOp

Bonjour

employer la boite suivante
'Outils/Références : cocher "Microsoft Excel XX.X Object Library"

Sub ChoixFichier()
FichierChoisi = Application.GetOpenFilename ("CSV Files (*.CSV), *.CSV")
MsgBox FichierChoisi
End Sub

Salutations

RGI
 
Dernière édition:
Re : Récuperer le nom d'un fichier à partir de Application.FileDialog(msoFileDialogOp

Merci pour votre réponse.

Je veux bien utiliser GetOpenFileName (déja testé par ailleur), mais:

1- Si j'utilise Application.GetOpenFilename la variable "Fichier" prend pour valeur c:\mondossier\test\toto.csv

2- et un message d'erreurs apparait à la ligne

Code:
 With ActiveSheet.QueryTables.Add(Connection:=Chaine, Destination:=Range("A1"))
        .Name = Fichier
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 932
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileDecimalSeparator = "."
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False     <----------MESSAGE D'ERREUR
    End With

MESSAGE d'ERREUR : 1004 fichier inaccessible, ce qui est normal puisque la variable "chaine" prend pour valeur "repertoire+ fichier" soit "c:\mondossier\test\c:\mondossier\test\toto.csv" ce dossier n'existe pas.

Je reformule à nouveau ma demande comment supprimer "c:\mondossier\test\ " de c:\mondossier\test\toto.csv ? Quelle est la syntaxe à utiliser afin que la variable "fichier" prenne pour valeur toto.csv
 
Re : Récuperer le nom d'un fichier à partir de Application.FileDialog(msoFileDialogOp

ceci donne le chemin complet et ensuite le fichier

Code:
Sub ChoixFichier()
  fichierchoisi = Application.GetOpenFilename("CSV Files (*.CSV), *.CSV")

  MsgBox fichierchoisi
  fichier = Split(fichierchoisi, "\")
x = fichierchoisi
a = Split(x, "\")
n = Len(a(UBound(a)))
MsgBox Right(fichierchoisi, n)

  
End Sub

Cdlt

RGI
 
Re : Récuperer le nom d'un fichier à partir de Application.FileDialog(msoFileDialogOp

Après quelques recherche plus poussé 😉 j'ai trouvé la solution ici:

Il faut utilisé les fonctions Mid(), Left() ou Right() pour extraire des morceaux d'une chaine, et la fonction InstrRev() qui renvoie la position d'un caractère dans une chaine, en partant de la fin.

Soit :

Code:
  Fichier = Application.GetOpenFilename("CSV Files (*.CSV),*.CSV")
  Fichier = Mid(Range("A1").Value, InStrRev(Range("A1").Value, "\") + 1)

La variable "fichier" prend pour valeur à l'ouverture : c:\mondossier\test\toto.csv
Puis elle devient : toto.csv

au final je me retrouve avec une variable "chaine" valant "TEXT;" & Repertoire & Fichier, soit "TEXT;" c:\mondossier\test\toto.csv qui par la suite peut être appellé par ActiveSheet.QueryTables.Add (connection:=chaine).......blablabla

En espérant que cela puisse aider d'autres personnes.
 
- 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
3
Affichages
546
  • Question Question
Microsoft 365 CSV en EXCEL
Réponses
1
Affichages
64
Réponses
1
Affichages
475
Compte Supprimé 979
C
Retour