Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

GetOpenFilename si condition

2 réponses
Avatar
Patrick Loury
Bonjour à tous,
à l'ouverture d'un classeur, sur une condition que je teste, je
propose à l'utilisateur de reprendre les données de l'ancienne
version d'un classeur, installé lui sait où.
Si Ok:

Dim fn As Variant
fn = Application.GetOpenFilename("excel,*.xls", 1, "choisis
l'ancien fichier ", , False)
If TypeName(fn) = "Boolean" Then Exit Sub
Debug.Print "Selected file: " & fn
Workbooks.OpenText fn, Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited,
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True

jusque là, pas de problème.

fn renvoie une string du genre "C:\Rep\sousrep\fichier.xls"

Avant d'ouvrir, je voudrais obtenir le FullName de fn, et le
comparer à un tableau listant les anciennes versions.
mais fn.FullName n'existe pas encore avant l'ouverture.

A votre avis, suis-je mal parti ou dois-je me lancer dans un
traitement de chaîne et obtenir la partie après le dernier "\"
pour récuperer le nom du fichier qu'on va ouvrir (si je veux !)

au plaisir de vous lire, Pat

2 réponses

Avatar
anonymousA
bonojur,

je ne suis pas ur de comprendre ta question. si tu obtiens
"C:Repsousrepfichier.xls" pour fn, c'est que tu as déjà ton fullname. Si
par contre tu veux n'obetnir que le nom du fichier ou seulement le path ou
autre, je te propose les instructions suivantes.
Dans ce qui suit remplace ActiveWorkbook.FullName par la variable fn.

Dim fso As FileSystemObject

Set fso = CreateObject("Scripting.FileSystemObject")

MsgBox fso.GetBaseName(ActiveWorkbook.FullName) 'nom fichier sans path et
sans extension
MsgBox fso.GetAbsolutePathName(ActiveWorkbook.FullName) 'nom fichier avec
path complet et extension
MsgBox fso.GetFileName(ActiveWorkbook.FullName) 'nom fichier sans path et
avec extension

Si ca ne fonctionne pas mettre dans le projet VBA une référence a Microsoft
scripting runtime dasn Outils/Reférences.

A+


Bonjour à tous,
à l'ouverture d'un classeur, sur une condition que je teste, je
propose à l'utilisateur de reprendre les données de l'ancienne
version d'un classeur, installé lui sait où.
Si Ok:

Dim fn As Variant
fn = Application.GetOpenFilename("excel,*.xls", 1, "choisis
l'ancien fichier ", , False)
If TypeName(fn) = "Boolean" Then Exit Sub
Debug.Print "Selected file: " & fn
Workbooks.OpenText fn, Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited,
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:úlse, Tab:=True, Semicolon:=True

jusque là, pas de problème.

fn renvoie une string du genre "C:Repsousrepfichier.xls"

Avant d'ouvrir, je voudrais obtenir le FullName de fn, et le
comparer à un tableau listant les anciennes versions.
mais fn.FullName n'existe pas encore avant l'ouverture.

A votre avis, suis-je mal parti ou dois-je me lancer dans un
traitement de chaîne et obtenir la partie après le dernier ""
pour récuperer le nom du fichier qu'on va ouvrir (si je veux !)

au plaisir de vous lire, Pat






Avatar
Patrick Loury
Bonjour et merci,
tu as raison, j'ai dû mal formuler la question.
il s'agissait bien d'obtenir le nom du fichier qu'on va peut-être
ouvrir, s'il est en rapport avec le classeur appellant.
J'ai contourné le problème ainsi :

fn = Application.GetOpenFilename("excel,*.xls", 1, "choisis un
fichier ", , False)

If TypeName(fn) = "Boolean" Then Exit Sub
Debug.Print "Selected file: " & fn
'si le classeur qui va s'ouvrir n'est pas Arc-Gestion*, on sort
PosMyStr = InStr(1, fn, "Arc-Gestion")
If PosMyStr = 0 Then Exit Sub

à une autre fois
Pat

"anonymousA" a écrit dans
le message de news:

bonojur,

je ne suis pas ur de comprendre ta question. si tu obtiens
"C:Repsousrepfichier.xls" pour fn, c'est que tu as déjà ton
fullname. Si

par contre tu veux n'obetnir que le nom du fichier ou seulement
le path ou

autre, je te propose les instructions suivantes.
Dans ce qui suit remplace ActiveWorkbook.FullName par la
variable fn.


Dim fso As FileSystemObject

Set fso = CreateObject("Scripting.FileSystemObject")

MsgBox fso.GetBaseName(ActiveWorkbook.FullName) 'nom fichier
sans path et

sans extension
MsgBox fso.GetAbsolutePathName(ActiveWorkbook.FullName) 'nom
fichier avec

path complet et extension
MsgBox fso.GetFileName(ActiveWorkbook.FullName) 'nom fichier
sans path et

avec extension

Si ca ne fonctionne pas mettre dans le projet VBA une référence
a Microsoft

scripting runtime dasn Outils/Reférences.

A+


Bonjour à tous,
à l'ouverture d'un classeur, sur une condition que je teste,
je


propose à l'utilisateur de reprendre les données de
l'ancienne


version d'un classeur, installé lui sait où.
Si Ok:

Dim fn As Variant
fn = Application.GetOpenFilename("excel,*.xls", 1, "choisis
l'ancien fichier ", , False)
If TypeName(fn) = "Boolean" Then Exit Sub
Debug.Print "Selected file: " & fn
Workbooks.OpenText fn, Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited,
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:úlse, Tab:=True,
Semicolon:=True



jusque là, pas de problème.

fn renvoie une string du genre "C:Repsousrepfichier.xls"

Avant d'ouvrir, je voudrais obtenir le FullName de fn, et le
comparer à un tableau listant les anciennes versions.
mais fn.FullName n'existe pas encore avant l'ouverture.

A votre avis, suis-je mal parti ou dois-je me lancer dans un
traitement de chaîne et obtenir la partie après le dernier
""


pour récuperer le nom du fichier qu'on va ouvrir (si je veux
!)



au plaisir de vous lire, Pat