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

retrouver le chemin d'une référence

6 réponses
Avatar
michor
Bonjour,

Comment retrouver par une macro VBA le chemin du fichier d'une référence au
départ de son nom (la référence dans "références" N' EST PAS ACTIVEE) ?
ex : visual basic for applic ext a pour nom de réf VBIDE
La recherche du chemin doit être applicable qq soit la version d'office de
97 à 2003.

Merci de votre aide.

6 réponses

Avatar
Clément Marcotte
Bonjour,

Sub nouvellereference()
Dim ref As Reference, GUID As String
Dim majeure As Integer, mineure As Integer

For Each ref In ThisWorkbook.VBProject.References
'VBIDE = Nom de la bibliothèque VisualBasic for Application
Extensibility
If ref.Name = "VBIDE" Then
'retrouver le Global Unique IDentifier du fichier qui correspond à
la
bibliothèque
GUID = ref.GUID
'Retrouver la partie principale du numéro de la version (5)
majeure = ref.Major
'Retrouver le numéro de la révision (3)
mineure = ref.Minor
Exit For
End If
Next
Workbooks.Add
ActiveWorkbook.VBProject.References.AddFromGuid GUID, majeure,
mineure
End Sub

P.S. Dans l'aide d'Excel 2002, ils mettent les paramètres de la
méthode entre parenthèses. Faites comme si vous n'aviez pas vu les
parenthèses.


"michor" a écrit dans le message de
news:
Bonjour,

Comment retrouver par une macro VBA le chemin du fichier d'une
référence au

départ de son nom (la référence dans "références" N' EST PAS
ACTIVEE) ?

ex : visual basic for applic ext a pour nom de réf VBIDE
La recherche du chemin doit être applicable qq soit la version
d'office de

97 à 2003.

Merci de votre aide.




Avatar
michor
Bonjour

Merci beaucoup. Parfait.C'était le dernier maillon qui me manquait pour
terminer une macro d'installation d'une application.
Cordialement.



"Clément Marcotte" a écrit dans le message
de news: #
Bonjour,

Sub nouvellereference()
Dim ref As Reference, GUID As String
Dim majeure As Integer, mineure As Integer

For Each ref In ThisWorkbook.VBProject.References
'VBIDE = Nom de la bibliothèque VisualBasic for Application
Extensibility
If ref.Name = "VBIDE" Then
'retrouver le Global Unique IDentifier du fichier qui correspond à
la
bibliothèque
GUID = ref.GUID
'Retrouver la partie principale du numéro de la version (5)
majeure = ref.Major
'Retrouver le numéro de la révision (3)
mineure = ref.Minor
Exit For
End If
Next
Workbooks.Add
ActiveWorkbook.VBProject.References.AddFromGuid GUID, majeure,
mineure
End Sub

P.S. Dans l'aide d'Excel 2002, ils mettent les paramètres de la
méthode entre parenthèses. Faites comme si vous n'aviez pas vu les
parenthèses.


"michor" a écrit dans le message de
news:
Bonjour,

Comment retrouver par une macro VBA le chemin du fichier d'une
référence au

départ de son nom (la référence dans "références" N' EST PAS
ACTIVEE) ?

ex : visual basic for applic ext a pour nom de réf VBIDE
La recherche du chemin doit être applicable qq soit la version
d'office de

97 à 2003.

Merci de votre aide.







Avatar
michor
Bonjour,

Votre macro fonctionne pour autant que la bibliothèque ait été activée au
préalable.Comment faire si la bibliothèque n'a pas été activée? Mon but est
de vérifier que toutes les références(qui sont toutes des ref microsoft)
dont j'ai besoin dans mon projet soient bien activées.J'ai créé une liste
des références nécessaires (qui correpondent aux ref.name) dans une feuille
Excel.
Je vérifie donc d'abord si les ref disponibles correpondent bien à cette
liste (pas de problèmes), puis je voudrais ajouter celles qui manquent
(c'est là que ça coince);

Cordialement et merci d'avance


"Clément Marcotte" a écrit dans le message
de news: #
Bonjour,

Sub nouvellereference()
Dim ref As Reference, GUID As String
Dim majeure As Integer, mineure As Integer

For Each ref In ThisWorkbook.VBProject.References
'VBIDE = Nom de la bibliothèque VisualBasic for Application
Extensibility
If ref.Name = "VBIDE" Then
'retrouver le Global Unique IDentifier du fichier qui correspond à
la
bibliothèque
GUID = ref.GUID
'Retrouver la partie principale du numéro de la version (5)
majeure = ref.Major
'Retrouver le numéro de la révision (3)
mineure = ref.Minor
Exit For
End If
Next
Workbooks.Add
ActiveWorkbook.VBProject.References.AddFromGuid GUID, majeure,
mineure
End Sub

P.S. Dans l'aide d'Excel 2002, ils mettent les paramètres de la
méthode entre parenthèses. Faites comme si vous n'aviez pas vu les
parenthèses.


"michor" a écrit dans le message de
news:
Bonjour,

Comment retrouver par une macro VBA le chemin du fichier d'une
référence au

départ de son nom (la référence dans "références" N' EST PAS
ACTIVEE) ?

ex : visual basic for applic ext a pour nom de réf VBIDE
La recherche du chemin doit être applicable qq soit la version
d'office de

97 à 2003.

Merci de votre aide.







Avatar
Clément Marcotte
Bonjour,

À l'origine, l'idée de base était de récupérer les références
existantes dans Excel pour les cocher ensuite dans Word. Donc, la
macro, telle qu'elle avait été écrite à l'époque, récupérait, dans le
registre, l'idendificateur (GUID) de la bibliothèque pour le
réutiliser dans une autre application. Comme le GUID (Global Unique
IDentifier) est immuable pour une bibliothèque donnée, quelle que soit
la version du système d'exploitattion, il suffit de l'utiliser pour
établir la référence

Avec le Ref.name, on peut récupérer le GUID et l'utiliser ensuite pour
établir la référence.


Sub ReferencesAvecFeuilledeCalcul()
On Error Resume Next
Dim ref As Reference, GUID As String
Dim majeure As Integer, mineure As Integer
Dim i As Integer, derniereligne As Integer
'Récupérer les références du classeur actuel
'Nom du classeur : Références.xls
i = 1
For Each ref In ThisWorkbook.VBProject.References
Cells(i, 1).Value = ref.Name
Cells(i, 2).Value = ref.GUID
Cells(i, 3).Value = ref.major
Cells(i, 4).Value = ref.minor
i = i + 1
Next
'Créer un nouveau classeur
'Nom Nouveauclasseur.xls
derniereligne Workbooks("Références.xls").Sheets("Feuil1").Range("a65536").End(xlUp)
.Row
Workbooks.Add
ActiveWorkbook.SaveAs "Nouveauclasseur.xls"
For i = 1 To derniereligne
GUID = Workbooks("Références.xls").Sheets("Feuil1").Cells(i, 2).Value
majeure = Workbooks("Références.xls").Sheets("Feuil1").Cells(i,
3).Value
mineure = Workbooks("Références.xls").Sheets("Feuil1").Cells(i,
4).Value
ActiveWorkbook.VBProject.References.AddFromGuid GUID, majeure, mineure
Next
'Lister les références du nouveau classeur
i = 1
For Each ref In ThisWorkbook.VBProject.References
Cells(i, 1).Value = ref.Name
Cells(i, 2).Value = ref.GUID
Cells(i, 3).Value = ref.major
Cells(i, 4).Value = ref.minor
i = i + 1
Next
End Sub


"michor" a écrit dans le message de
news:
Bonjour,

Votre macro fonctionne pour autant que la bibliothèque ait été
activée au

préalable.Comment faire si la bibliothèque n'a pas été activée? Mon
but est

de vérifier que toutes les références(qui sont toutes des ref
microsoft)

dont j'ai besoin dans mon projet soient bien activées.J'ai créé une
liste

des références nécessaires (qui correpondent aux ref.name) dans une
feuille

Excel.
Je vérifie donc d'abord si les ref disponibles correpondent bien à
cette

liste (pas de problèmes), puis je voudrais ajouter celles qui
manquent

(c'est là que ça coince);

Cordialement et merci d'avance


"Clément Marcotte" a écrit dans le
message

de news: #
Bonjour,

Sub nouvellereference()
Dim ref As Reference, GUID As String
Dim majeure As Integer, mineure As Integer

For Each ref In ThisWorkbook.VBProject.References
'VBIDE = Nom de la bibliothèque VisualBasic for Application
Extensibility
If ref.Name = "VBIDE" Then
'retrouver le Global Unique IDentifier du fichier qui correspond
à


la
bibliothèque
GUID = ref.GUID
'Retrouver la partie principale du numéro de la version (5)
majeure = ref.Major
'Retrouver le numéro de la révision (3)
mineure = ref.Minor
Exit For
End If
Next
End Sub

P.S. Dans l'aide d'Excel 2002, ils mettent les paramètres de la
méthode entre parenthèses. Faites comme si vous n'aviez pas vu les
parenthèses.


"michor" a écrit dans le message de
news:
Bonjour,

Comment retrouver par une macro VBA le chemin du fichier d'une
référence au

départ de son nom (la référence dans "références" N' EST PAS
ACTIVEE) ?

ex : visual basic for applic ext a pour nom de réf VBIDE
La recherche du chemin doit être applicable qq soit la version
d'office de

97 à 2003.

Merci de votre aide.











Avatar
michdenis
Bonjour Clément,

Le seule très petit bémol, c'est qu'il arrive occasionnellement que la bibliothèque change de nom d'une version à
l'autre.! Je crois que cela pourrait foutre le bordel ... ce n'est pas le cas si Microsoft n'a fait qu'une mise à jour
du fichier !

Salutations!



"Clément Marcotte" a écrit dans le message de
news:%
Bonjour,

À l'origine, l'idée de base était de récupérer les références
existantes dans Excel pour les cocher ensuite dans Word. Donc, la
macro, telle qu'elle avait été écrite à l'époque, récupérait, dans le
registre, l'idendificateur (GUID) de la bibliothèque pour le
réutiliser dans une autre application. Comme le GUID (Global Unique
IDentifier) est immuable pour une bibliothèque donnée, quelle que soit
la version du système d'exploitattion, il suffit de l'utiliser pour
établir la référence

Avec le Ref.name, on peut récupérer le GUID et l'utiliser ensuite pour
établir la référence.


Sub ReferencesAvecFeuilledeCalcul()
On Error Resume Next
Dim ref As Reference, GUID As String
Dim majeure As Integer, mineure As Integer
Dim i As Integer, derniereligne As Integer
'Récupérer les références du classeur actuel
'Nom du classeur : Références.xls
i = 1
For Each ref In ThisWorkbook.VBProject.References
Cells(i, 1).Value = ref.Name
Cells(i, 2).Value = ref.GUID
Cells(i, 3).Value = ref.major
Cells(i, 4).Value = ref.minor
i = i + 1
Next
'Créer un nouveau classeur
'Nom Nouveauclasseur.xls
derniereligne Workbooks("Références.xls").Sheets("Feuil1").Range("a65536").End(xlUp)
.Row
Workbooks.Add
ActiveWorkbook.SaveAs "Nouveauclasseur.xls"
For i = 1 To derniereligne
GUID = Workbooks("Références.xls").Sheets("Feuil1").Cells(i, 2).Value
majeure = Workbooks("Références.xls").Sheets("Feuil1").Cells(i,
3).Value
mineure = Workbooks("Références.xls").Sheets("Feuil1").Cells(i,
4).Value
ActiveWorkbook.VBProject.References.AddFromGuid GUID, majeure, mineure
Next
'Lister les références du nouveau classeur
i = 1
For Each ref In ThisWorkbook.VBProject.References
Cells(i, 1).Value = ref.Name
Cells(i, 2).Value = ref.GUID
Cells(i, 3).Value = ref.major
Cells(i, 4).Value = ref.minor
i = i + 1
Next
End Sub


"michor" a écrit dans le message de
news:
Bonjour,

Votre macro fonctionne pour autant que la bibliothèque ait été
activée au

préalable.Comment faire si la bibliothèque n'a pas été activée? Mon
but est

de vérifier que toutes les références(qui sont toutes des ref
microsoft)

dont j'ai besoin dans mon projet soient bien activées.J'ai créé une
liste

des références nécessaires (qui correpondent aux ref.name) dans une
feuille

Excel.
Je vérifie donc d'abord si les ref disponibles correpondent bien à
cette

liste (pas de problèmes), puis je voudrais ajouter celles qui
manquent

(c'est là que ça coince);

Cordialement et merci d'avance


"Clément Marcotte" a écrit dans le
message

de news: #
Bonjour,

Sub nouvellereference()
Dim ref As Reference, GUID As String
Dim majeure As Integer, mineure As Integer

For Each ref In ThisWorkbook.VBProject.References
'VBIDE = Nom de la bibliothèque VisualBasic for Application
Extensibility
If ref.Name = "VBIDE" Then
'retrouver le Global Unique IDentifier du fichier qui correspond
à


la
bibliothèque
GUID = ref.GUID
'Retrouver la partie principale du numéro de la version (5)
majeure = ref.Major
'Retrouver le numéro de la révision (3)
mineure = ref.Minor
Exit For
End If
Next
End Sub

P.S. Dans l'aide d'Excel 2002, ils mettent les paramètres de la
méthode entre parenthèses. Faites comme si vous n'aviez pas vu les
parenthèses.


"michor" a écrit dans le message de
news:
Bonjour,

Comment retrouver par une macro VBA le chemin du fichier d'une
référence au

départ de son nom (la référence dans "références" N' EST PAS
ACTIVEE) ?

ex : visual basic for applic ext a pour nom de réf VBIDE
La recherche du chemin doit être applicable qq soit la version
d'office de

97 à 2003.

Merci de votre aide.











Avatar
Clément Marcotte
Bonjour,

c'est qu'il arrive occasionnellement que la bibliothèque change de
nom d'une version à

l'autre.!


Exact, comme, par exemple, la bibliothèque "VisualBasicExtensibility"
qui a changé de numéro d'Excel 97 à Excel 2000. (Mais comme j'ai la
flemme...)

Le seule très petit bémol


Pas sur, pas sur ;-)

Il y a aussi le fait que VBA génère une erreur, du moins dans Excel
2002, quand la référence est déjà cochée. (C'est pour cela que j'ai
mis On error resume next). Donc, dans "la vraie vie", il y aurait
probablement lieu d'implanter un gestionnaire d'erreur au lieu d'un
simple resume next. (Mais comme j'ai encore la flemme...)

De plus, comme le "VBAProject" est lié à l'application-Hôte, ce code
n'est pas transposable directement dans tous les cas. Par exemple,
dans Word, ce ne sera pas activeWorkbook, mais activedocument, dans
PowerPoint, c'est activePresentation etc... (Mais comme j'ai toujours
la flemme...)