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

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 613
    Points : 6 274
    Points
    6 274
    Billets dans le blog
    16

    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
    3 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 613
    Points : 6 274
    Points
    6 274
    Billets dans le blog
    16

    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

    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    janvier 2010
    Messages
    8 658
    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 : 8 658
    Points : 20 471
    Points
    20 471
    Billets dans le blog
    8

    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
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

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