IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Enumérer les constantes Office pour les utiliser en LATE BINDING


Sujet :

Contribuez

  1. #1
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut Enumérer les constantes Office pour les utiliser en LATE BINDING
    Bonjour,
    Lorsque l'on fait du Late Binding, on peut rencontrer des erreurs du fait des constantes qui ne sont pas connues.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'early binding
    dim oApp as Word.application
    set oApp = word.application
    En gras ci-dessous les erreurs, dé-commentez Option explicit et compilez pour vous en assurer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    'Option Explicit
    
    Sub LateBinding_ConstantesAbsentes()
    
        Dim oApp As Object
        Set oApp = CreateObject("Word.Application")
        oApp.Visible = True
        oApp.documents.Add
        oApp.Selection.TypeText Text:="Je devrais être en orange"
        
        oApp.Selection.HomeKey Unit:=5, Extend:=1
    
        With oApp.Selection.Font
            .Name = "Tahoma"
            .Size = 20
            .Underline = wdUnderlineDouble
            .UnderlineColor = wdColorBlue
            .Color = wdColorOrange
            .Animation = wdAnimationLasVegasLights
        End With
    End Sub
    lire early ou late binding

    Voici un code pour récupérer une énumération des constantes.

    Cela nécessite la DLL tlbinf32.dll,fournie avec Visual Studio ou certaines versions de Office.

    (j'utilise une version du 22/02/2004 CHECKSUM MD5= 62CC2C6B200D995791ACFC527CA4CC58)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    'Nécessite la DLL tlbinf32.dll
    ' fournie avec Visual Studio ou certaines version de Office
    'Ajoutez la référence : TypeLib Information (c:\windows\system32\TLBINF32.DLL)
    'inspiré de http://officesystemaccess.seneque.net/vba/tableconstantes.htm
     
    Option Explicit
     
    Dim fName As String
    Dim TLInfo As TypeLibInfo
    Dim CSTInfo As ConstantInfo
    Dim MbrInfo As MemberInfo
    Dim Db As Workbook
    Dim tblDef As Worksheet
     
     
    Public Sub getTLInfo()
        On Error Resume Next
        Set Db = ActiveWorkbook
        Dim NomDefault
        NomDefault = Application.Path & "\*.olb"
     
    choix:
        'sous programme : http://excel.developpez.com/faq/?page=FenetresExcel#FileDialog
        With Application.FileDialog(msoFileDialogFilePicker)
            'Définit un titre pour la boîte de dialogue
            .Title = "Choix de la librairie"
            'Autorise la multi-sélection
            .AllowMultiSelect = False
            'Définit un nom de fichier par défaut
            .InitialFileName = NomDefault
            'Efface les filtres existants.
            .Filters.Clear
            'Définit une liste de filtres pour le champ "Type de fichiers".
            .Filters.Add "Librairie(*.olb)", "*.olb"
            .FilterIndex = 1
            'Indique le type d'affichage dans la boîte de dialogue
            .InitialView = msoFileDialogViewList
            'Affiche la boîte de dialogue
            .Show
     
            fName = .SelectedItems(1)
        End With
        If fName = "" Then GoTo choix
        Dim tableName
        tableName = Right(fName, Len(fName) - InStrRev(fName, "\", -1, vbTextCompare))
        If Db.Worksheets(tableName).Name = tableName Then
            If Err <> 0 Then Db.Worksheets.Add after:=Db.Worksheets(1)
            ActiveSheet.Name = tableName
            Err.Clear
            Db.Worksheets(tableName).cells.Clear
        End If
     
        Set tblDef = Db.Worksheets(tableName)
     
        tblDef.Range("a1:D1").Font.Bold = True
        tblDef.Range("a1").Value = "CONST_CONSTANTE"
        tblDef.Range("B1").Value = "CONST_MEMBRE"
        tblDef.Range("C1").Value = "CONST_VALEUR"
        tblDef.Range("D1").Value = "DECLARATION"
        Dim Ligne
        Ligne = 2
        Set TLInfo = TypeLibInfoFromFile(fName)
        For Each CSTInfo In TLInfo.Constants
            For Each MbrInfo In CSTInfo.Members
                tblDef.Cells(Ligne, 1).Value = CSTInfo.Name
                tblDef.Cells(Ligne, 2).Value = MbrInfo.Name
                tblDef.Cells(Ligne, 3).Value = MbrInfo.Value
                tblDef.Cells(Ligne, 4).Value = "Public Const " & MbrInfo.Name & "=" & MbrInfo.Value
     
                Ligne = Ligne + 1
            Next MbrInfo
        Next CSTInfo
     
        Cells.Columns.AutoFit
        Set TLInfo = Nothing
        Set CSTInfo = Nothing
        Set MbrInfo = Nothing
        MsgBox "terminé"
    End Sub
    vous n'avez plus qu'à coller les lignes de la colonne D dans un nouveau module de votre projet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'on peut toutes les mettre bien sûr
    Public Const wdUnderlineDouble = 3
    Public Const wdColorBlue = 16711680
    Public Const wdColorOrange = 26367
    Public Const wdAnimationLasVegasLights = 1
    'etc...

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Pour ajouter la référence à TLBLIB

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub ajout_reference_tlblib()
    ThisWorkbook.VBProject.References.AddFromGuid "{8B217740-717D-11CE-AB5B-D41203C10000}", 0, 0
     
    End Sub

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Bien qu'ayant voté au moment de la publication de cette contribution, je n'avais pas dit bravo pour celle-ci
    C'est fait
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. comment aspirer les liens "embed" pour les utiliser sur mon site
    Par stephanech dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 03/08/2010, 08h56
  2. Réponses: 5
    Dernier message: 14/11/2009, 01h11
  3. [XL-2003] feuille verouillé pour les utilisateurs pas pour les macro
    Par nemoc dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/07/2009, 11h00
  4. Réponses: 11
    Dernier message: 16/06/2009, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo