[VB] Connaitre extension d'un fichier

matthoffman Messages postés 405 Date d'inscription   Statut Membre Dernière intervention   -  
 atchalak -
Bonjour,
Je souhaiterais savoir quelle est la fonction (s'il en existe une) qui retourne l'extension (ou le type) d'un fichier.

Si vous ne savez pas et que vous connaissez une fonction retournant la version de Microsoft Office, c'est tout aussi bien :).

D'avance merci.
A voir également:

15 réponses

matthoffman Messages postés 405 Date d'inscription   Statut Membre Dernière intervention   47
 
ouai bon ba merci de ton aide :)
ta méthode est 'porc' dans le sens ou tu joue avec le feu ;) mais ca me parait la plus adequat pour mon problème.
Pour peu que je te crée un fichier .blablabla ba ca va merder lors du traitement parce que il croira que l'extension est "abla" au lieu de "blablabla" lol
1
matthoffman Messages postés 405 Date d'inscription   Statut Membre Dernière intervention   47
 
up
0
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
Comment l'utilisateur te donne le chemin du fichier? via une dialogue box ou autre??

en quel langage?? vb, php, c++ ?
0
D4rkness
 
nana c'est en html :')
0
matthoffman Messages postés 405 Date d'inscription   Statut Membre Dernière intervention   47
 
Ba le titre du post c'est VB en meme temps alors bon le langage c'est VB ;)
Et j'obtiens le chemin du fichier par la fonction ActiveDocument.Path .
En fait je fais une macro dans un fichier Excel (ou Word) et donc voila je récupère les infos à partir du document ouvert.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
donc tout ce qu il y a apres le '.'..

ext=Right(ActiveWorkbook.FullName, 5)
if left(ext,1)<>"." then ext=Right(ActiveWorkbook.FullName, 4)



Ptit hic si ton fichier xl s apelle "monfichier..xls" (2003) il sera pris comme un 2007, mais sinon, ca marche
0
matthoffman Messages postés 405 Date d'inscription   Statut Membre Dernière intervention   47
 
oui c´est aussi une autre facon de voir la chose mais il faut faire gaffe parce que si l'extension est plus longue que 5 caractères ....
Merci pour ta réponse :)
0
matthoffman Messages postés 405 Date d'inscription   Statut Membre Dernière intervention   47
 
Je viens d'ailleurs de penser à une méthode porc de récuperer l'extension.
On incremente un compteur tant que l'on ne trouve pas de "." dans le nom du fichier en partant de la droite.
Et l'extension correspond à la string en partant de la droite de longueur le compteur.

Mais comme je viens de le dire c'est porc et trop long pour ce que c'est ^^.
0
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
lol.. ben tu la trouve 'porc' ma solution ??
0
MrSlave Messages postés 2587 Date d'inscription   Statut Membre Dernière intervention   147
 
0
cthulhu14
 
Allez... chui sympa
Private Function FileExtension(NomFichier As String) As String
    Dim DotPos As Integer
    
    If InStr(1, NomFichier, ".") = 0 Then
        FileExtension = False
    Else
        While Left(Right(NomFichier, DotPos), 1) <> "."
            DotPos = DotPos + 1
        Wend
       FileExtension = Right(NomFichier, DotPos - 1)
    End If
    
End Function
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Je profites de la remontée de ce sujet pour proposer une solution variante :
Dim Extension As String

Extension = IIf(Mid(StrReverse(ThisWorkbook.Name), 4, 1) = ".", Right(ThisWorkbook.Name, 3), Right(ThisWorkbook.Name, 4)) 



0
atchalak
 
Dim monNomDeFichier As String, extensionDeMonFichier As String
extensionDeMonFichier = Right(monNomDeFichier, InStrRev(monNomDeFichier, "."))


Instr renvoit la première occurence du caractère passé en argument, inStrRev permet de commencer par la droite, dès qu'on est arrivés au premier ".", on a donc seulement l'extension du fichier à droite. cette méthode permet également de gérer les fichiers qui ont un ou plusieurs "." à l'intérieur
0
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
ah ben sinon, faut fare le contraire, et la y a pas d exeption :

ext=Right(ActiveWorkbook.FullName, 4)
if left(ext,1)<>"." then ext=Right(ActiveWorkbook.FullName, 5)

:) :p

j suis vraiment nul quand j m y met :)
-1
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
sinon, tu peux faire quelque chose du style :

ext=Right(ActiveWorkbook.FullName, 4) '2003
if left(ext,1)<>"." then
ext=Right(ActiveWorkbook.FullName, 5) '2007
if left(ext,1)<>"." then
ext=""
msgbox "erreur d'extention)
end if


bon pour le coup.. c porc, mais ca gere toutes tes expetions :)
-1
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
oups, desolé :)

Right(ActiveWorkbook.FullName, 3)
-2
matthoffman Messages postés 405 Date d'inscription   Statut Membre Dernière intervention   47
 
Hmmm si je ne m'abuse, ta fonction me retournera les 3 dernieres lettres du nom complet ce qui fonctionne très bien pour office 2003 mais pas pour 2007 car les extensions possèdent 4 lettres (docx,xlsx...) ;).
Il me faudrait justement une fonction qui te recupere l'extension automatiquement de facon a ce que ma macro puisse s'adapter à 2003 et à 2007 sans soucis et sans avoir à modifier le code si on change de version.
0
Yesman
 
Toutes les réponses sont mauvaises et crades.
La méthode officielle est avec l'api Shell (code Microsoft)
-3
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
et donc, un bout de code pour pas mourrir ignard ??
0
Kamil
 
Oui c'est clair. Y a un sujet, une question alors autant répondre pour donner une réponse valable...
Moi aussi la solution avec le shell m'intéresse.
0
Alex
 
System.IO.Path.GetExtension(fileName)
0