Détecter le format Excel VBA

Bonjour,

Mon programme est au format "Modèle Microsoft Excel Avec Macro" lorsque l'utilisateur l'utilise pour la première fois, la macro lui propose de sauvegarder sous.

Une fois le fichier sauvée chez l'utilisateur, je ne veux plus sauvgarder sous le fichier.

Donc je voulais ajouter un SI = format excel "Modèle Microsoft Excel Avec Macro" alors SaveAs

Sauf que je n'arrive pas à récupèrer l'extension de mon fichier..

J'ai essayé ThisWorkbook.name ou ThisWorkbook.path pensant obtenir l'extension après le nom mais non...

Une idée du coup ? merci!

Bonjour,

pour "récupérer" l'extension, essayez:

MsgBox Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") + 1)

A+

Bonjour AlgoPlus merci de la réponse.

Je viens de tester et cela fonctionne bien sur un Excel avec un extension type .xlsx

Sauf que moi travail sur un document au format "Modèle Excel Prenant en charge les macros"

Et il semblerait que .name ne renvoi pas d'extension....

Dans mon fichier Msgbox ThisWorkBook.Name renvoi:

image

Avec un "1" qui se rajoute tout seul.

Chez moi ça fonctionne avec un classeur xlsm. Bizarre !

Je ne pense pas que ThisWorkBook.Name "s'amuse" à regarder l'extension et l'affiche si bon lui semble ... et/ou modifie le nom du classeur si l'original ne lui convient pas ....

D'après votre dernier post, on sait que

MsgBox Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") + 1)

fonctionne avec une classeur xlsx, mais on ne sait pas si ça fonctionne avec un classeur xlsm ....

J'ai dit .xlsx je me suis peut etre trompé.. Je viens de tester avec le format xlsm cela fonctionne également.

image

Mais comment s'appelle le format "modèle excel prenant en charge les macros" ? Car avec ce format la je n'ai pas d'extension pas de résultats avec Thisworkbook.name

image

Mais comment s'appelle le format "modèle excel prenant en charge les macros" ? Car avec ce format la je n'ai pas d'extension pas de résultats avec Thisworkbook.name

les classeurs excel Modèle prenant en charge les macros possèdent l'extension xltm.

Même si j'avais zappé qu'il s'agissait d'un classeur modèle, ce que j'ai dit reste vrai... et ça marche chez moi ...

L'image concernant le classeur AAAA-MM.... n'est pas issue d'excel mais d'un explorateur de fichier qui est sans doute paramétré pour ne pas afficher les extension de fichier .... Mais l'extension existe toujours! Le code que je vous ai proposé fonctionnera forcément...

MsgBox Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") + 1)

depuis un classeur modèle renverra : xltm

depuis un classeur prenant en charge les macros renverra : xlsm

vous n'avez donc pas testé ce petit code depuis votre modèle ....

Ou alors je n'ai rien compris.....

Bonjour AlgoPlus,

Désolé de la réponse tardive je croule sous d'autres projet cette semaine !

Voici mon code:

Sub test()
MsgBox Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") + 1)
MsgBox ThisWorkbook.Name
End Sub

Les résultats obtenues:

image

Puis à nouveau...

image

Ci-joint le fichier Excel

8ddt-pour-forum.xltm (133.64 Ko)

Bonjour,

A méditer !?

Cdlt.

Sub test()
Dim nm, ext
    nm = ActiveWorkbook.Name
    MsgBox "Nom fichier : " & nm
    Select Case ActiveWorkbook.FileFormat
        Case 51: ext = "xlsx"
        Case 52: ext = "xlsm"
    End Select
    MsgBox "Extension fichier : " & ext
End Sub

Hello Jean-Eric, merci de la proposition.

Visiblement, que mon fichier soit au format .xlsm ou .xltm

Activeworkbook.FileFormat renvoi 52 donc forcément xlsm... cela ne me permet donc pas de différentier ces formats.

Re,

Je pense que tu dois préciser ta demande.

Tu ouvres un xlstx, l'extension sera 51
Tu ouvres un xltm, l'extension sera 52

Teste ThisWorkbook.Fileformat et quelle est alors l'extension ?

Cdlt.

J'ai un fichier au format .xltm Lorsque je l'ouvre, et que l'utilisateur utilise une macro cette dernière déclenche un sauvegarder sous .xlsm

Si l'utilisateur réutilise le fichier qui sera donc cette fois .xlsm je ne veux pas que la macro propose à nouveau enregistrer sous ce n'est pas la peine...

Donc je cherchais à "détecter" le format .xlsm ou .xltm

Ce qu'il en est d'après vos proposition c'est que lorsque j'ouvre mon format .xltm les macros test renvoi tjrs une extension 52

Je dois passer à coté de quelques chose...

EDIT j'ai joint précédemment mon fichier .xltm avec dedans les macros test thisworkbook.name etc... Je vous invite à tester voir ce que vous obtenez..

Bonjour,

Une nouvelle piste.

Cdlt.

If InStr(Right(ActiveWorkbook.Name, 5), ".xl") > 0 Then
    'Save
Else
    'SaveAs
End If

Bonjour Jean-Eric merci pour la commande if, c'est parfaitement fonctionnel

Bonne journée !

Rechercher des sujets similaires à "detecter format vba"