[VB] Connaitre extension d'un fichier

Fermé
matthoffman Messages postés 405 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 22 janvier 2013 - 15 juil. 2009 à 13:17
 atchalak - 22 déc. 2015 à 13:58
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 lundi 24 mars 2008 Statut Membre Dernière intervention 22 janvier 2013 47
15 juil. 2009 à 14:48
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 lundi 24 mars 2008 Statut Membre Dernière intervention 22 janvier 2013 47
15 juil. 2009 à 14:05
up
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
15 juil. 2009 à 14:12
Comment l'utilisateur te donne le chemin du fichier? via une dialogue box ou autre??

en quel langage?? vb, php, c++ ?
0
nana c'est en html :')
0
matthoffman Messages postés 405 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 22 janvier 2013 47
15 juil. 2009 à 14:17
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 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
15 juil. 2009 à 14:39
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 lundi 24 mars 2008 Statut Membre Dernière intervention 22 janvier 2013 47
15 juil. 2009 à 14:45
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 lundi 24 mars 2008 Statut Membre Dernière intervention 22 janvier 2013 47
15 juil. 2009 à 14:41
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 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
15 juil. 2009 à 14:42
lol.. ben tu la trouve 'porc' ma solution ??
0
MrSlave Messages postés 2587 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 août 2011 146
23 juil. 2010 à 09:46
0
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
7 oct. 2014 à 16:14
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
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 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
15 juil. 2009 à 14:44
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 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
15 juil. 2009 à 14:53
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 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
15 juil. 2009 à 14:29
oups, desolé :)

Right(ActiveWorkbook.FullName, 3)
-2
matthoffman Messages postés 405 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 22 janvier 2013 47
15 juil. 2009 à 14:36
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
Toutes les réponses sont mauvaises et crades.
La méthode officielle est avec l'api Shell (code Microsoft)
-3
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
15 juil. 2009 à 18:19
et donc, un bout de code pour pas mourrir ignard ??
0
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
System.IO.Path.GetExtension(fileName)
0