Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment ajouter une référence en VBA

6 réponses
Avatar
RENAUD Eric
Bonjour,

Est-ce possible d'ajouter une référence comme Microsoft Word 11.0 Object
Library dans un projet via du code VBA.
Exemple :
But :
Tester si référence existe existe sinon ajouter référence

D'avance rmerci

6 réponses

Avatar
lSteph
Bonjour,
si c'est juste pour une variable ....as object
t'en dispensera

sinon faut connaître le chemin exact (ou l'Id situ utilises
AddfromGUID)

Sub ajoutREf()
With ThisWorkbook.VBProject.References
.AddFromFile "C:Program Files..."
End With
End Sub


Cordialement.

lSteph
On 4 juil, 10:27, "RENAUD Eric" <erenaud(retirerceci)@fr.fm> wrote:
Bonjour,

Est-ce possible d'ajouter une référence comme Microsoft Word 11.0 Obj ect
Library dans un projet via du code VBA.
Exemple :
But :
Tester si référence existe existe sinon ajouter référence

D'avance rmerci


Avatar
lSteph
...
Tester si référence existe existe sinon ajouter référence
pour éluder le pb (ex pour office Word97)



Sub ajoutREf()
On Error Resume Next
With ThisWorkbook.VBProject.References
Application.DisplayAlerts = False
.AddFromFile "C:Program FilesMicrosoft OfficeOfficeMSWORD8.OLB"
End With
Application.DisplayAlerts = True
On Error GoTo 0
'..la suite
End Sub


On 4 juil, 10:27, "RENAUD Eric" <erenaud(retirerceci)@fr.fm> wrote:
Bonjour,

Est-ce possible d'ajouter une référence comme Microsoft Word 11.0 Obj ect
Library dans un projet via du code VBA.
Exemple :
But :
Tester si référence existe existe sinon ajouter référence

D'avance rmerci


Avatar
MichDenis
Explication à partir d'une référence exemple : "MsForms" qui s'ajoute
dans une application dès que tu ajoutes un formulaire...(userform)

A ) C'est toujours une bonne idée de s'assurer que l'application développé ne contient pas
des références qui sont inutiles, le cas échéant.

B ) La problématique qui se pose avec les références est qu'elles ne sont pas nécessairement
situées au même endroit dans l'arborescence des fichiers de Windows. Selon le système
d'exploitation utilisé, la référence dont il est question peut se retrouver à différent endroit
:

Fm20.dll => fichier responsable de la référence

windows 98 et Millénium : C:WindowsSystemFm20.dll
Windows2000 C:WinntSystem32Fm20.dll
Windows Xp C:WindowsSystem32Frm20.dll

Conclusion évidente : Au chargement de l'application, Excel peut éprouver de la
difficulté à localiser la référence ... et envoie un message d'erreur

C ) Solution 1

Dans le ThisWorkbook, tu utilises la procédure événementielle suivante afin de
t'assurer que le chemin de la référence est bonne :
'---------------------------------
Private Sub Workbook_Open()
TesterBibliothequeFormulaire
End Sub
'---------------------------------


Dans un module Standard de ton application. copie ce qui suit :

'Haut de ton module, Déclaration de l'API
Private Declare Function GetSystemDirectory Lib "kernel32" _
Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, _
ByVal nSize As Long) As Long
'--------------------------------
Function CheminSystem()
Dim RetVal As Long
Dim SysDir As String

SysDir = Space$(256)
RetVal = GetSystemDirectory(SysDir, Len(SysDir))

If RetVal <> 0 Then
CheminSystem = Left$(SysDir, RetVal)
End If
End Function
'--------------------------------
Sub TesterBibliothequeFormulaire()

Dim File As String
File = CheminSystem & "FM20.DLL"
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromFile File
End Sub
'--------------------------------


Solution II

Cette solution ne requiert pas d'API, mais tu dois connaître le GUID.

Guid : Global Unique Identifier => il est extrait directement à partir de
la base de registre de Windows. Un numéro qui a cette forme :
{0D452EE1-E08F-101A-852E-02608C4D0BB4}

Lorsque tu utilises le GUID pour insérer des nouvelles références, comme dans
l'exemple que j'ai donné, cette procédure se fout complètement des chemins où
sont logés les fichiers, donc elle s'applique à tous les systèmes d'exploitations
Windows.(Jamais testé ça sur des versions windows 3.1 et plus ancien !)

De plus, même si la "Description de la bibliothèque (l'appellation dans la fenêtre référence)
à changer, si son nom de bibliothèque est demeuré le même(voir explorateur d'objet dans la
fenêtre VBE) , même si cette bibliothèque a subi des mises à jour,
la procédure s'applique très bien sans aucune difficulté.

IL y a seulement une petite exception, c'est lorsque Microsoft décide de modifier le nom de
la bibliothèque... Et ça arrive à l'occasion ....En conséquence, peu importe la façon utilisée,
il faut faire les recherches nécessaires et s'assurer que les références utilisées seront chargés
adéquatement à l'ouverture de l'application.
Exemple : la bibliothèque "Visual Basic Extensibility 5.3"
qui a changé d'Excel 97 à Excel 2000

Sub TesterBibliothequeFormulaire2()
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{0D452EE1-E08F-101A-852E-02608C4D0BB4}", major:=2, minor:=0
End Sub
'--------------------------------

Comment trouver les paramètres : Guid, major et minor :

Attention : Le nom de la bibliothèque, tu peux le trouver à l'aide
de l'explorateur d'objets de la fenêtre "Éditeur de code" de visual basic
(raccourci clavier F2) . Son nom est celui que tu peux sélectionner
dans la liste déroulante "Toutes les bibliothèques". Dès que tu sélectionnes
une des bibliothèques, observe dans le bas de la fenêtre, la location et le nom
du fichier qui en est responable. Ne pas mélanger "Nom de la biblothèque"
avec l'appellation descriptive qui se trouve dans la fenêtre : outils / références /

'--------------------------
Sub IdentifierParametreDuneReference()

Cells(1, 1) = ActiveWorkbook.VBProject.References("MsForms").Name
Cells(1, 2) = ActiveWorkbook.VBProject.References("MsForms").Description
Cells(1, 3) = ActiveWorkbook.VBProject.References("MsForms").GUID
Cells(1, 4) = ActiveWorkbook.VBProject.References("MsForms").Major
Cells(1, 5) = ActiveWorkbook.VBProject.References("MsForms").Minor
Cells(1, 6) = ActiveWorkbook.VBProject.References.Item("MsForms").fullpath

End Sub
'--------------------------


Et si tu désires enlever cette référence au formulaire,
A ) Supprimer tous les formulaires
B ) utiliser cette petite procédure :
'--------------------------------
Sub SupprimerUneReference()
'MsForms est le nom de la référence chargé par
'Microsoft Forms 2.0 object librairy"
Dim Ref As Object
With ThisWorkbook.VBProject
Set Ref = .References("MsForms")
.References.Remove Ref
End With

End Sub
'--------------------------------
Avatar
RENAUD Eric
Merci
Par contre je ne trouve pas la méthode pour retirer cette référence ?

"lSteph" a écrit dans le message de news:

...
Tester si référence existe existe sinon ajouter référence
pour éluder le pb (ex pour office Word97)



Sub ajoutREf()
On Error Resume Next
With ThisWorkbook.VBProject.References
Application.DisplayAlerts = False
.AddFromFile "C:Program FilesMicrosoft OfficeOfficeMSWORD8.OLB"
End With
Application.DisplayAlerts = True
On Error GoTo 0
'..la suite
End Sub


On 4 juil, 10:27, "RENAUD Eric" <erenaud(retirerceci)@fr.fm> wrote:
Bonjour,

Est-ce possible d'ajouter une référence comme Microsoft Word 11.0 Object
Library dans un projet via du code VBA.
Exemple :
But :
Tester si référence existe existe sinon ajouter référence

D'avance rmerci


Avatar
lSteph
Sub suppreF()
Dim oRef As Object

Set oRef = ThisWorkbook.VBProject.References("Word")
ThisWorkbook.VBProject.References.Remove oRef

End Sub

'Cordialement.

'lSteph


On 4 juil, 14:09, "RENAUD Eric" <erenaud(retirerceci)@fr.fm> wrote:
Merci
Par contre je ne trouve pas la méthode pour retirer cette référence ?


Avatar
RENAUD Eric
Bonsoir,
Merci à tous pour votre collaboration
Eric

Bonjour,

Est-ce possible d'ajouter une référence comme Microsoft Word 11.0 Object
Library dans un projet via du code VBA.
Exemple :
But :
Tester si référence existe existe sinon ajouter référence

D'avance rmerci