[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
atchalak - 22 déc. 2015 à 13:58
A voir également:
- [VB] Connaitre extension d'un fichier
- Fichier rar - Guide
- Fichier host - Guide
- Changer extension fichier - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
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
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
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
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
15 juil. 2009 à 14:05
up
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
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++ ?
en quel langage?? vb, php, c++ ?
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
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.
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.
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
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
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
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
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 :)
Merci pour ta réponse :)
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
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 ^^.
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 ^^.
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
15 juil. 2009 à 14:42
lol.. ben tu la trouve 'porc' ma solution ??
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
23 juil. 2010 à 09:46
Sinon il y a ça :
https://vb.developpez.com/faq/?page=Fichiers#ext_rep
https://vb.developpez.com/faq/?page=Fichiers#ext_rep
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
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
7 oct. 2014 à 16:14
Bonjour,
Je profites de la remontée de ce sujet pour proposer une solution variante :
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))
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
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
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 :)
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 :)
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
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 :)
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 :)
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
15 juil. 2009 à 14:29
oups, desolé :)
Right(ActiveWorkbook.FullName, 3)
Right(ActiveWorkbook.FullName, 3)
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
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.
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.
Toutes les réponses sont mauvaises et crades.
La méthode officielle est avec l'api Shell (code Microsoft)
La méthode officielle est avec l'api Shell (code Microsoft)
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
15 juil. 2009 à 18:19
et donc, un bout de code pour pas mourrir ignard ??