[VB] Connaitre extension d'un fichier

matthoffman Messages postés 404 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.
Configuration: Windows XP
Firefox 3.0.9

15 réponses

  1. matthoffman Messages postés 404 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
  2. matthoffman Messages postés 404 Date d'inscription   Statut Membre Dernière intervention   47
     
    up
    0
  3. jjsteing Messages postés 1613 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
    1. D4rkness
       
      nana c'est en html :')
      0
  4. matthoffman Messages postés 404 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jjsteing Messages postés 1613 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
    1. matthoffman Messages postés 404 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
  7. matthoffman Messages postés 404 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
  8. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    lol.. ben tu la trouve 'porc' ma solution ??
    0
  9. 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
  10. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    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
  11. 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
  12. jjsteing Messages postés 1613 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
  13. jjsteing Messages postés 1613 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
  14. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    oups, desolé :)

    Right(ActiveWorkbook.FullName, 3)
    -2
    1. matthoffman Messages postés 404 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
  15. Yesman
     
    Toutes les réponses sont mauvaises et crades.
    La méthode officielle est avec l'api Shell (code Microsoft)
    -3
    1. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
       
      et donc, un bout de code pour pas mourrir ignard ??
      0
    2. 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
    3. Alex
       
      System.IO.Path.GetExtension(fileName)
      0