Lancement de macro a l'ouverture

Résolu
Bonjour,

j'aimerais que excel exécute une macro automatiquement si il détecte une certaine extension de fichier.

Je bute sur la détection de fichier.
J'ai placé ça dans un module :

Sub auto_open()
Dim Extension As String
Extension = IIf(Mid(StrReverse(ThisWorkbook.name), 4, 1) = ".", Right(ThisWorkbook.name, 3), Right(ThisWorkbook.name, 4))
MsgBox Extension
End Sub

Mais ça sort "XSLB" quelque soit le fichier ouvert... on dirait que c'est exécuté une fois excel ouvert mais avant le classeur.

Si vous avez une idée, merci bien.

Matthieu

8 réponses

  1. Contributeur
    Bonjour,

    Workbook_Open() de ThisWorkbook se lance uniquement à l'ouverture du fichier le contenant.

    Maintenant tu as aussi l'événement d'application App_WorkbookOpen(ByVal Wb As Workbook) qui se lance à l'ouverture de n'importe quel classeur (avec ou sans macro) et qui te passe en paramètre le Workbook qui vient de s'ouvrir.
    Mais les événements App ne sont pas accessibles directement. Il faut faire qq manip avant de les avoir.
    Voir ici : http://www.cpearson.com/excel/AppEvent.aspx
    eric
    1. Merci beaucoup !

      Résolu avec ce code


      Private WithEvents App As Application

      Private Sub Workbook_Open()
      Set App = Application

      End Sub
      Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
      If Wb.name <> "PERSONAL.XLSB" Then

      Dim fso As Object
      Set fso = CreateObject("Scripting.FileSystemObject")
      MsgBox fso.GetExtensionName(Wb.name)

      End If
      End Sub