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

Microsoft Visual Basic for Applications Extensibility 5.3

9 réponses
Avatar
Claire
Je veux activer la référence "Microsoft Visual Basic for Applications
Extensibility 5.3" au début de ma macro de départ. J'ai essayé ce bout de
code pour activer cette référence mais cela ne fonctionne pas. J'ai
sûrement oublié quelque chose mais je ne sais pas quoi.

Private Sub workbook_open()
References.AddFromFile ("C:\Program Files\Fichiers communs\Microsoft
Shared\VBA\VBA6\VBE6EXT.OLB")
.....

Peut-on la mettre active tout le temps ??

Merci encore une fois
Claire

9 réponses

Avatar
MichDenis
La présence de "on error resume next" empêche la macro
de se planter si la référence est déjà chargée.

Sauf que cette référence
"Microsoft Visual Basic for Applications Extensibility 5.3"
a un NOM de bibliothèque différent selon que tu utilises
Excel 97 ou les autres versions (2000- 2002- 2003)
(selon ma mémoire)

La proposition que je t'ai faite n'est pas valide pour
Excel 97. Si ton besoin est d'utiliser ta macro pour toutes
les versions d'excel, tu devrais trouver la valeur correspondate
de la propriété "Guid", "Major" ett "Minor" de la dite référence
de la version Excel 97 et modifier un peu la procédure pour
vérifier par un test sur quelle version le fichier s'ouvre. Si c'est le
cas... revient et donne moi la valeur des propriétés mentionnées
et je t'aiderai à modifier ta macro.


Private Sub workbook_open()
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
End Sub




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

Je veux activer la référence "Microsoft Visual Basic for Applications
Extensibility 5.3" au début de ma macro de départ. J'ai essayé ce bout de
code pour activer cette référence mais cela ne fonctionne pas. J'ai
sûrement oublié quelque chose mais je ne sais pas quoi.

Private Sub workbook_open()
References.AddFromFile ("C:Program FilesFichiers communsMicrosoft
SharedVBAVBA6VBE6EXT.OLB")
.....

Peut-on la mettre active tout le temps ??

Merci encore une fois
Claire
Avatar
Claire
Merci MichDenis
J'ai ajouté ces petites lignes et cela fonctionne. J'apprécie beaucoup ton
aide.

Une chance que cela a marché sinon je n'aurais jamais pu te fournir la
valeur correspondante
de la propriété "Guid", "Major" ett "Minor" de la dite référence de la
version Excel 97 mais j'aimerais que tu me dises comment les trouver.

Claire

"MichDenis" a écrit dans le message de news:
%
La présence de "on error resume next" empêche la macro
de se planter si la référence est déjà chargée.

Sauf que cette référence
"Microsoft Visual Basic for Applications Extensibility 5.3"
a un NOM de bibliothèque différent selon que tu utilises
Excel 97 ou les autres versions (2000- 2002- 2003)
(selon ma mémoire)

La proposition que je t'ai faite n'est pas valide pour
Excel 97. Si ton besoin est d'utiliser ta macro pour toutes
les versions d'excel, tu devrais trouver la valeur correspondate
de la propriété "Guid", "Major" ett "Minor" de la dite référence
de la version Excel 97 et modifier un peu la procédure pour
vérifier par un test sur quelle version le fichier s'ouvre. Si c'est le
cas... revient et donne moi la valeur des propriétés mentionnées
et je t'aiderai à modifier ta macro.


Private Sub workbook_open()
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
End Sub




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

Je veux activer la référence "Microsoft Visual Basic for Applications
Extensibility 5.3" au début de ma macro de départ. J'ai essayé ce bout
de
code pour activer cette référence mais cela ne fonctionne pas. J'ai
sûrement oublié quelque chose mais je ne sais pas quoi.

Private Sub workbook_open()
References.AddFromFile ("C:Program FilesFichiers communsMicrosoft
SharedVBAVBA6VBE6EXT.OLB")
.....

Peut-on la mettre active tout le temps ??

Merci encore une fois
Claire





Avatar
jps
au risque de me mêler de ce qui ne regarde que des québécois...et si tu
cochais, claire, cette référence une bonne fois pour toutes
quand tu es dans MS Visual Basic, tu cliques Outils puis Références et là tu
dois voir s'ouvrir une liste ; il suffit de cocher le petit carré pour la
référence qui t'intéresse et, selon ma mémoire (comme dit denis), tu n'auras
plus rien à ajouter à ta proc puisque la référence sera installée ad vitam
eternam
amen
jps

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

Merci MichDenis
J'ai ajouté ces petites lignes et cela fonctionne. J'apprécie beaucoup
ton aide.

Une chance que cela a marché sinon je n'aurais jamais pu te fournir la
valeur correspondante
de la propriété "Guid", "Major" ett "Minor" de la dite référence de la
version Excel 97 mais j'aimerais que tu me dises comment les trouver.

Claire

"MichDenis" a écrit dans le message de news:
%
La présence de "on error resume next" empêche la macro
de se planter si la référence est déjà chargée.

Sauf que cette référence
"Microsoft Visual Basic for Applications Extensibility 5.3"
a un NOM de bibliothèque différent selon que tu utilises
Excel 97 ou les autres versions (2000- 2002- 2003)
(selon ma mémoire)

La proposition que je t'ai faite n'est pas valide pour
Excel 97. Si ton besoin est d'utiliser ta macro pour toutes
les versions d'excel, tu devrais trouver la valeur correspondate
de la propriété "Guid", "Major" ett "Minor" de la dite référence
de la version Excel 97 et modifier un peu la procédure pour
vérifier par un test sur quelle version le fichier s'ouvre. Si c'est le
cas... revient et donne moi la valeur des propriétés mentionnées
et je t'aiderai à modifier ta macro.


Private Sub workbook_open()
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
End Sub




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

Je veux activer la référence "Microsoft Visual Basic for Applications
Extensibility 5.3" au début de ma macro de départ. J'ai essayé ce bout
de
code pour activer cette référence mais cela ne fonctionne pas. J'ai
sûrement oublié quelque chose mais je ne sais pas quoi.

Private Sub workbook_open()
References.AddFromFile ("C:Program FilesFichiers communsMicrosoft
SharedVBAVBA6VBE6EXT.OLB")
.....

Peut-on la mettre active tout le temps ??

Merci encore une fois
Claire









Avatar
LSteph
Bonjour,

Si j'ai bien compris le but est que ce classeur puisse oeuvrer
également sur des postes où cette référence n'est pas forcément cochée
au départ.

Perso, je me contente d'un Addfromfile suivant ce que je peux trouver
dans les postes qui me concernent, l'une n'étant pas 5.3 mais

"C:Program FilesFichiers communsMicrosoft SharedVBAVBEEXT1.OLB"

en connaissances de une ou deux configurations un select case peut faire
le travail.

Les numéros GUID, outre exemple sur excelabo, il y a des articles sur
microsoft, sur msdn, dévellopez...etc
Pour un truc sensé pouvoir ramener universellement une dll
le GUID de celle voulue de ton poste devrait le faire...mais,ok , si la
version 1 ou 2 ou n...enfin n'est pas la même...c'est moins simple.

Bon courage.

Cordialement.

--
lSteph

Exemple avec addfromfile:

Sub Preparation()
Dim cBc As CommandBar
On Error Resume Next
With ThisWorkbook.VBProject.References
Application.DisplayAlerts = False
.AddFromFile "C:Program FilesFichiers communsMicrosoft
SharedVBAVBEEXT1.OLB"
End With
Application.DisplayAlerts = True
On Error GoTo 0
Call AjouteCommande
End Sub
--


au risque de me mêler de ce qui ne regarde que des québécois...et si tu
cochais, claire, cette référence une bonne fois pour toutes
quand tu es dans MS Visual Basic, tu cliques Outils puis Références et là tu
dois voir s'ouvrir une liste ; il suffit de cocher le petit carré pour la
référence qui t'intéresse et, selon ma mémoire (comme dit denis), tu n'auras
plus rien à ajouter à ta proc puisque la référence sera installée ad vitam
eternam
amen
jps

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

Merci MichDenis
J'ai ajouté ces petites lignes et cela fonctionne. J'apprécie beaucoup
ton aide.

Une chance que cela a marché sinon je n'aurais jamais pu te fournir la
valeur correspondante
de la propriété "Guid", "Major" ett "Minor" de la dite référence de la
version Excel 97 mais j'aimerais que tu me dises comment les trouver.

Claire

"MichDenis" a écrit dans le message de news:
%
La présence de "on error resume next" empêche la macro
de se planter si la référence est déjà chargée.

Sauf que cette référence
"Microsoft Visual Basic for Applications Extensibility 5.3"
a un NOM de bibliothèque différent selon que tu utilises
Excel 97 ou les autres versions (2000- 2002- 2003)
(selon ma mémoire)

La proposition que je t'ai faite n'est pas valide pour
Excel 97. Si ton besoin est d'utiliser ta macro pour toutes
les versions d'excel, tu devrais trouver la valeur correspondate
de la propriété "Guid", "Major" ett "Minor" de la dite référence
de la version Excel 97 et modifier un peu la procédure pour
vérifier par un test sur quelle version le fichier s'ouvre. Si c'est le
cas... revient et donne moi la valeur des propriétés mentionnées
et je t'aiderai à modifier ta macro.


Private Sub workbook_open()
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
End Sub




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

Je veux activer la référence "Microsoft Visual Basic for Applications
Extensibility 5.3" au début de ma macro de départ. J'ai essayé ce bout
de
code pour activer cette référence mais cela ne fonctionne pas. J'ai
sûrement oublié quelque chose mais je ne sais pas quoi.

Private Sub workbook_open()
References.AddFromFile ("C:Program FilesFichiers communsMicrosoft
SharedVBAVBA6VBE6EXT.OLB")
.....

Peut-on la mettre active tout le temps ??

Merci encore une fois
Claire












Avatar
MichDenis
Au JPS et LSteph,

(On peut simplifier ... mais pas trop....!) ;-))
Pourquoi ce type de question tombe toujours sur moi ?
;-))

Cette bibliothèque est spéciale :
"Microsoft Visual Basic for Applications Extensibility 5.3"

Sous Excel 97, elle a un nom différent que les
versions d'excel 2000 - 2002 et 2003
et pour excel 2007 je ne sais pas !

Le nom d'une bibliothèque se trouve dans la liste
déroulante ("Toutes les bibliothèques") de
l'explorateur d'objets de la fenêtre de l'éditeur de code.
(Raccourci clavier F2 lorsque la fenêtre est affichée)
Pour les versions récentes, le nom de la bibliothèque
"Microsoft Visual Basic for Applications Extensibility 5.3"
est : "VBIDE", pour Excel 97 faudrait vérifier !

SVP. Ne pas confondre "Nom de la bibliothèque" et le nom descriptif
que l'on voit dans la fenêtre de la commande "références" du menu "outils"
de la fenêtre de l'éditeur de code.

La méthode ADDFROMGUID
GUID : acronyme pour "Globally Unique IDentifier" que l'on retrouve
dans la base de registre de Windows. La bibliothèque est donc chargée
directement à partir des infos. contenues dans la base de registre de
windows .... et cette méthode se fout totalement où est situé le fichier
source dans l'arborescence de l'explorateur Windows et ce pour toutes
les versions du système d'exploitation de Windows.

Pour trouver les propriétés GUID , Major et Minor, de toutes les
bibliothèques installées, on peut utiliser ce bout de procédure :
(notez que les références doivent être déjà chargées -
présentes dans la liste des références cochées du classeur)
'------------------------------------------------
Sub AfficherLesGuids_Propriétés()
Dim n As Integer
Sheets.Add
ActiveSheet.Name = "GUIDS"
'On Error Resume Next
Cells(1, 1) = "Nom de la bibliothèque"
'Son appellation dans la fenêtre Reférences
Cells(1, 2) = "Description"
Cells(1, 3) = "Guid"
Cells(1, 4) = "Major"
Cells(1, 5) = "Minor"
Cells(1, 6) = "Chemin complet"
With Range("A1:F1")
.Font.Bold = True
.Font.Size = 12
End With
with ActiveWorkbook
For n = 2 To .VBProject.References.Count
Cells(n, 1) = .VBProject.References.Item(n).Name
Cells(n, 2) = .VBProject.References.Item(n).Description
Cells(n, 3) = .VBProject.References.Item(n).GUID
Cells(n, 4) = .VBProject.References.Item(n).Major
Cells(n, 5) = .VBProject.References.Item(n).Minor
Cells(n, 6) = .VBProject.References.Item(n).fullpath
Next
end with
Range("A1").CurrentRegion.EntireColumn.AutoFit
End Sub
'------------------------------------------------

Et comme on sait que la bibliothèque qui fait l'objet de ce message a plus
d'un nom selon la version d'excel, en plus de connaître la valeur des
propriétés, il faudrait s'assurer que l'on prenne soin de l'éventuelle bibliothèque
désignée marquée "manquante", car non accessible et ceci se ferait
par une procédure de ce type :
'----------------------------------------------
Sub AddFromGuid()

Dim LesRefs As Object, i As Integer
Dim NbRef As Integer
On Error Resume Next

'Prend soin des bibliothèques manquantes le cas échéant
Set LesRefs = ThisWorkbook.VBProject.References
NbRef = LesRefs.Count
For i = 1 To NbRef
With LesRefs(i)
If .IsBroken Then
LesRefs.Remove LesRefs.Item(.Name)
Msg = "La librairie " & .Name & " est " & _
"manquante. Elle a été supprimée."
End If
End With
Next

'Ajoute la référence selon la version d'excel ...
If Val(Application.Version) > 8 Then
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
Else
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
'En remplaçant ces propriétés par celles d'excel 97
End If
End Sub
'----------------------------------------------










"jps" a écrit dans le message de news:
au risque de me mêler de ce qui ne regarde que des québécois...et si tu
cochais, claire, cette référence une bonne fois pour toutes
quand tu es dans MS Visual Basic, tu cliques Outils puis Références et là tu
dois voir s'ouvrir une liste ; il suffit de cocher le petit carré pour la
référence qui t'intéresse et, selon ma mémoire (comme dit denis), tu n'auras
plus rien à ajouter à ta proc puisque la référence sera installée ad vitam
eternam
amen
jps

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

Merci MichDenis
J'ai ajouté ces petites lignes et cela fonctionne. J'apprécie beaucoup
ton aide.

Une chance que cela a marché sinon je n'aurais jamais pu te fournir la
valeur correspondante
de la propriété "Guid", "Major" ett "Minor" de la dite référence de la
version Excel 97 mais j'aimerais que tu me dises comment les trouver.

Claire

"MichDenis" a écrit dans le message de news:
%
La présence de "on error resume next" empêche la macro
de se planter si la référence est déjà chargée.

Sauf que cette référence
"Microsoft Visual Basic for Applications Extensibility 5.3"
a un NOM de bibliothèque différent selon que tu utilises
Excel 97 ou les autres versions (2000- 2002- 2003)
(selon ma mémoire)

La proposition que je t'ai faite n'est pas valide pour
Excel 97. Si ton besoin est d'utiliser ta macro pour toutes
les versions d'excel, tu devrais trouver la valeur correspondate
de la propriété "Guid", "Major" ett "Minor" de la dite référence
de la version Excel 97 et modifier un peu la procédure pour
vérifier par un test sur quelle version le fichier s'ouvre. Si c'est le
cas... revient et donne moi la valeur des propriétés mentionnées
et je t'aiderai à modifier ta macro.


Private Sub workbook_open()
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
End Sub




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

Je veux activer la référence "Microsoft Visual Basic for Applications
Extensibility 5.3" au début de ma macro de départ. J'ai essayé ce bout
de
code pour activer cette référence mais cela ne fonctionne pas. J'ai
sûrement oublié quelque chose mais je ne sais pas quoi.

Private Sub workbook_open()
References.AddFromFile ("C:Program FilesFichiers communsMicrosoft
SharedVBAVBA6VBE6EXT.OLB")
.....

Peut-on la mettre active tout le temps ??

Merci encore une fois
Claire









Avatar
jps
ben moi, j'avions confondu, denis
je frappe ma poitrine, non pas en signe de mea culpa, mais parce que j'ai
une goutte de marc de beaujolais qui s'est coincée dans le corgnolon....
jps

"MichDenis" a écrit dans le message de news:
%
Au JPS et LSteph,

(On peut simplifier ... mais pas trop....!) ;-))
Pourquoi ce type de question tombe toujours sur moi ?
;-))

Cette bibliothèque est spéciale :
"Microsoft Visual Basic for Applications Extensibility 5.3"

Sous Excel 97, elle a un nom différent que les
versions d'excel 2000 - 2002 et 2003
et pour excel 2007 je ne sais pas !

Le nom d'une bibliothèque se trouve dans la liste
déroulante ("Toutes les bibliothèques") de
l'explorateur d'objets de la fenêtre de l'éditeur de code.
(Raccourci clavier F2 lorsque la fenêtre est affichée)
Pour les versions récentes, le nom de la bibliothèque
"Microsoft Visual Basic for Applications Extensibility 5.3"
est : "VBIDE", pour Excel 97 faudrait vérifier !

SVP. Ne pas confondre "Nom de la bibliothèque" et le nom descriptif
que l'on voit dans la fenêtre de la commande "références" du menu "outils"
de la fenêtre de l'éditeur de code.

La méthode ADDFROMGUID
GUID : acronyme pour "Globally Unique IDentifier" que l'on retrouve
dans la base de registre de Windows. La bibliothèque est donc chargée
directement à partir des infos. contenues dans la base de registre de
windows .... et cette méthode se fout totalement où est situé le fichier
source dans l'arborescence de l'explorateur Windows et ce pour toutes
les versions du système d'exploitation de Windows.

Pour trouver les propriétés GUID , Major et Minor, de toutes les
bibliothèques installées, on peut utiliser ce bout de procédure :
(notez que les références doivent être déjà chargées -
présentes dans la liste des références cochées du classeur)
'------------------------------------------------
Sub AfficherLesGuids_Propriétés()
Dim n As Integer
Sheets.Add
ActiveSheet.Name = "GUIDS"
'On Error Resume Next
Cells(1, 1) = "Nom de la bibliothèque"
'Son appellation dans la fenêtre Reférences
Cells(1, 2) = "Description"
Cells(1, 3) = "Guid"
Cells(1, 4) = "Major"
Cells(1, 5) = "Minor"
Cells(1, 6) = "Chemin complet"
With Range("A1:F1")
.Font.Bold = True
.Font.Size = 12
End With
with ActiveWorkbook
For n = 2 To .VBProject.References.Count
Cells(n, 1) = .VBProject.References.Item(n).Name
Cells(n, 2) = .VBProject.References.Item(n).Description
Cells(n, 3) = .VBProject.References.Item(n).GUID
Cells(n, 4) = .VBProject.References.Item(n).Major
Cells(n, 5) = .VBProject.References.Item(n).Minor
Cells(n, 6) = .VBProject.References.Item(n).fullpath
Next
end with
Range("A1").CurrentRegion.EntireColumn.AutoFit
End Sub
'------------------------------------------------

Et comme on sait que la bibliothèque qui fait l'objet de ce message a plus
d'un nom selon la version d'excel, en plus de connaître la valeur des
propriétés, il faudrait s'assurer que l'on prenne soin de l'éventuelle
bibliothèque
désignée marquée "manquante", car non accessible et ceci se ferait
par une procédure de ce type :
'----------------------------------------------
Sub AddFromGuid()

Dim LesRefs As Object, i As Integer
Dim NbRef As Integer
On Error Resume Next

'Prend soin des bibliothèques manquantes le cas échéant
Set LesRefs = ThisWorkbook.VBProject.References
NbRef = LesRefs.Count
For i = 1 To NbRef
With LesRefs(i)
If .IsBroken Then
LesRefs.Remove LesRefs.Item(.Name)
Msg = "La librairie " & .Name & " est " & _
"manquante. Elle a été supprimée."
End If
End With
Next

'Ajoute la référence selon la version d'excel ...
If Val(Application.Version) > 8 Then
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
Else
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
'En remplaçant ces propriétés par celles d'excel 97
End If
End Sub
'----------------------------------------------










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

au risque de me mêler de ce qui ne regarde que des québécois...et si tu
cochais, claire, cette référence une bonne fois pour toutes
quand tu es dans MS Visual Basic, tu cliques Outils puis Références et là
tu
dois voir s'ouvrir une liste ; il suffit de cocher le petit carré pour la
référence qui t'intéresse et, selon ma mémoire (comme dit denis), tu
n'auras
plus rien à ajouter à ta proc puisque la référence sera installée ad vitam
eternam
amen
jps

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

Merci MichDenis
J'ai ajouté ces petites lignes et cela fonctionne. J'apprécie beaucoup
ton aide.

Une chance que cela a marché sinon je n'aurais jamais pu te fournir la
valeur correspondante
de la propriété "Guid", "Major" ett "Minor" de la dite référence de la
version Excel 97 mais j'aimerais que tu me dises comment les trouver.

Claire

"MichDenis" a écrit dans le message de news:
%
La présence de "on error resume next" empêche la macro
de se planter si la référence est déjà chargée.

Sauf que cette référence
"Microsoft Visual Basic for Applications Extensibility 5.3"
a un NOM de bibliothèque différent selon que tu utilises
Excel 97 ou les autres versions (2000- 2002- 2003)
(selon ma mémoire)

La proposition que je t'ai faite n'est pas valide pour
Excel 97. Si ton besoin est d'utiliser ta macro pour toutes
les versions d'excel, tu devrais trouver la valeur correspondate
de la propriété "Guid", "Major" ett "Minor" de la dite référence
de la version Excel 97 et modifier un peu la procédure pour
vérifier par un test sur quelle version le fichier s'ouvre. Si c'est le
cas... revient et donne moi la valeur des propriétés mentionnées
et je t'aiderai à modifier ta macro.


Private Sub workbook_open()
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
End Sub




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

Je veux activer la référence "Microsoft Visual Basic for Applications
Extensibility 5.3" au début de ma macro de départ. J'ai essayé ce bout
de
code pour activer cette référence mais cela ne fonctionne pas. J'ai
sûrement oublié quelque chose mais je ne sais pas quoi.

Private Sub workbook_open()
References.AddFromFile ("C:Program FilesFichiers communsMicrosoft
SharedVBAVBA6VBE6EXT.OLB")
.....

Peut-on la mettre active tout le temps ??

Merci encore une fois
Claire














Avatar
lSteph
Merci pour toutes ces explications détaillées.

Indépendament du chemin et du nom, (je ne pensais pas que cela puisse
passer ainsi, mais si!) comme tu disais.(je retiens la méthode)
Sur les miens (2k.n ou xl97) j'ai bien le même,

{0002E157-0000-0000-C000-000000000046}

En ce qui me concerne je garde aussi ta macro pour afficher la liste,
du coup suffit de cocher les refs et d'utiliser ta macro pour
avoir les GUID que l'on veut.

Pourquoi ce type de question tombe toujours sur moi ?
Parceque c'est quand même bien à César qu'il faut rendre les lauriers

;o) au moins sur ce genre de coups là.. rofl rofl

Cordialement.

lSteph


On 23 juil, 14:23, "MichDenis" wrote:
Au JPS et LSteph,

(On peut simplifier ... mais pas trop....!) ;-))
Pourquoi ce type de question tombe toujours sur moi ?
;-))

Cette bibliothèque est spéciale :
"Microsoft Visual Basic for Applications Extensibility 5.3"

Sous Excel 97, elle a un nom différent que les
versions d'excel 2000 - 2002 et 2003
et pour excel 2007 je ne sais pas !

Le nom d'une bibliothèque se trouve dans la liste
déroulante ("Toutes les bibliothèques") de
l'explorateur d'objets de la fenêtre de l'éditeur de code.
(Raccourci clavier F2 lorsque la fenêtre est affichée)
Pour les versions récentes, le nom de la bibliothèque
"Microsoft Visual Basic for Applications Extensibility 5.3"
est : "VBIDE", pour Excel 97 faudrait vérifier !

SVP. Ne pas confondre "Nom de la bibliothèque" et le nom descriptif
que l'on voit dans la fenêtre de la commande "références" du menu " outils"
de la fenêtre de l'éditeur de code.

La méthode ADDFROMGUID
GUID : acronyme pour "Globally Unique IDentifier" que l'on retrouve
dans la base de registre de Windows. La bibliothèque est donc chargée
directement à partir des infos. contenues dans la base de registre de
windows .... et cette méthode se fout totalement où est situé le fi chier
source dans l'arborescence de l'explorateur Windows et ce pour toutes
les versions du système d'exploitation de Windows.

Pour trouver les propriétés GUID , Major et Minor, de toutes les
bibliothèques installées, on peut utiliser ce bout de procédure :
(notez que les références doivent être déjà chargées -
présentes dans la liste des références cochées du classeur)
'------------------------------------------------
Sub AfficherLesGuids_Propriétés()
Dim n As Integer
Sheets.Add
ActiveSheet.Name = "GUIDS"
'On Error Resume Next
Cells(1, 1) = "Nom de la bibliothèque"
'Son appellation dans la fenêtre Reférences
Cells(1, 2) = "Description"
Cells(1, 3) = "Guid"
Cells(1, 4) = "Major"
Cells(1, 5) = "Minor"
Cells(1, 6) = "Chemin complet"
With Range("A1:F1")
.Font.Bold = True
.Font.Size = 12
End With
with ActiveWorkbook
For n = 2 To .VBProject.References.Count
Cells(n, 1) = .VBProject.References.Item(n).Name
Cells(n, 2) = .VBProject.References.Item(n).Description
Cells(n, 3) = .VBProject.References.Item(n).GUID
Cells(n, 4) = .VBProject.References.Item(n).Major
Cells(n, 5) = .VBProject.References.Item(n).Minor
Cells(n, 6) = .VBProject.References.Item(n).fullpath
Next
end with
Range("A1").CurrentRegion.EntireColumn.AutoFit
End Sub
'------------------------------------------------

Et comme on sait que la bibliothèque qui fait l'objet de ce message a p lus
d'un nom selon la version d'excel, en plus de connaître la valeur des
propriétés, il faudrait s'assurer que l'on prenne soin de l'éventue lle bibliothèque
désignée marquée "manquante", car non accessible et ceci se ferait
par une procédure de ce type :
'----------------------------------------------
Sub AddFromGuid()

Dim LesRefs As Object, i As Integer
Dim NbRef As Integer
On Error Resume Next

'Prend soin des bibliothèques manquantes le cas échéant
Set LesRefs = ThisWorkbook.VBProject.References
NbRef = LesRefs.Count
For i = 1 To NbRef
With LesRefs(i)
If .IsBroken Then
LesRefs.Remove LesRefs.Item(.Name)
Msg = "La librairie " & .Name & " est " & _
"manquante. Elle a été supprimée."
End If
End With
Next

'Ajoute la référence selon la version d'excel ...
If Val(Application.Version) > 8 Then
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
Else
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
'En remplaçant ces propriétés par celles d'excel 97
End If
End Sub
'----------------------------------------------

"jps" a écrit dans le message de news: et9P9zOzHH
au risque de me mêler de ce qui ne regarde que des québécois...et s i tu
cochais, claire, cette référence une bonne fois pour toutes
quand tu es dans MS Visual Basic, tu cliques Outils puis Références e t là tu
dois voir s'ouvrir une liste ; il suffit de cocher le petit carré pour la
référence qui t'intéresse et, selon ma mémoire (comme dit denis), tu n'auras
plus rien à ajouter à ta proc puisque la référence sera install ée ad vitam
eternam
amen
jps

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


Merci MichDenis
J'ai ajouté ces petites lignes et cela fonctionne. J'apprécie beau coup
ton aide.

Une chance que cela a marché sinon je n'aurais jamais pu te fournir la
valeur correspondante
de la propriété "Guid", "Major" ett "Minor" de la dite référen ce de la
version Excel 97 mais j'aimerais que tu me dises comment les trouver.

Claire

"MichDenis" a écrit dans le message de news:
%
La présence de "on error resume next" empêche la macro
de se planter si la référence est déjà chargée.

Sauf que cette référence
"Microsoft Visual Basic for Applications Extensibility 5.3"
a un NOM de bibliothèque différent selon que tu utilises
Excel 97 ou les autres versions (2000- 2002- 2003)
(selon ma mémoire)

La proposition que je t'ai faite n'est pas valide pour
Excel 97. Si ton besoin est d'utiliser ta macro pour toutes
les versions d'excel, tu devrais trouver la valeur correspondate
de la propriété "Guid", "Major" ett "Minor" de la dite référe nce
de la version Excel 97 et modifier un peu la procédure pour
vérifier par un test sur quelle version le fichier s'ouvre. Si c'est le
cas... revient et donne moi la valeur des propriétés mentionnées
et je t'aiderai à modifier ta macro.

Private Sub workbook_open()
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
End Sub

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

Je veux activer la référence "Microsoft Visual Basic for Applicati ons
Extensibility 5.3" au début de ma macro de départ. J'ai essayé ce bout
de
code pour activer cette référence mais cela ne fonctionne pas. J' ai
sûrement oublié quelque chose mais je ne sais pas quoi.

Private Sub workbook_open()
References.AddFromFile ("C:Program FilesFichiers communsMicrosoft
SharedVBAVBA6VBE6EXT.OLB")
.....

Peut-on la mettre active tout le temps ??

Merci encore une fois
Claire






Avatar
MichDenis
J'ai jamais goûté à ton truc "marc de beaujolais" mais je sais
que ce type d'explications et de procédures est imbuvable
particulièrement un lundi matin.


"jps" a écrit dans le message de news:
ben moi, j'avions confondu, denis
je frappe ma poitrine, non pas en signe de mea culpa, mais parce que j'ai
une goutte de marc de beaujolais qui s'est coincée dans le corgnolon....
jps

"MichDenis" a écrit dans le message de news:
%
Au JPS et LSteph,

(On peut simplifier ... mais pas trop....!) ;-))
Pourquoi ce type de question tombe toujours sur moi ?
;-))

Cette bibliothèque est spéciale :
"Microsoft Visual Basic for Applications Extensibility 5.3"

Sous Excel 97, elle a un nom différent que les
versions d'excel 2000 - 2002 et 2003
et pour excel 2007 je ne sais pas !

Le nom d'une bibliothèque se trouve dans la liste
déroulante ("Toutes les bibliothèques") de
l'explorateur d'objets de la fenêtre de l'éditeur de code.
(Raccourci clavier F2 lorsque la fenêtre est affichée)
Pour les versions récentes, le nom de la bibliothèque
"Microsoft Visual Basic for Applications Extensibility 5.3"
est : "VBIDE", pour Excel 97 faudrait vérifier !

SVP. Ne pas confondre "Nom de la bibliothèque" et le nom descriptif
que l'on voit dans la fenêtre de la commande "références" du menu "outils"
de la fenêtre de l'éditeur de code.

La méthode ADDFROMGUID
GUID : acronyme pour "Globally Unique IDentifier" que l'on retrouve
dans la base de registre de Windows. La bibliothèque est donc chargée
directement à partir des infos. contenues dans la base de registre de
windows .... et cette méthode se fout totalement où est situé le fichier
source dans l'arborescence de l'explorateur Windows et ce pour toutes
les versions du système d'exploitation de Windows.

Pour trouver les propriétés GUID , Major et Minor, de toutes les
bibliothèques installées, on peut utiliser ce bout de procédure :
(notez que les références doivent être déjà chargées -
présentes dans la liste des références cochées du classeur)
'------------------------------------------------
Sub AfficherLesGuids_Propriétés()
Dim n As Integer
Sheets.Add
ActiveSheet.Name = "GUIDS"
'On Error Resume Next
Cells(1, 1) = "Nom de la bibliothèque"
'Son appellation dans la fenêtre Reférences
Cells(1, 2) = "Description"
Cells(1, 3) = "Guid"
Cells(1, 4) = "Major"
Cells(1, 5) = "Minor"
Cells(1, 6) = "Chemin complet"
With Range("A1:F1")
.Font.Bold = True
.Font.Size = 12
End With
with ActiveWorkbook
For n = 2 To .VBProject.References.Count
Cells(n, 1) = .VBProject.References.Item(n).Name
Cells(n, 2) = .VBProject.References.Item(n).Description
Cells(n, 3) = .VBProject.References.Item(n).GUID
Cells(n, 4) = .VBProject.References.Item(n).Major
Cells(n, 5) = .VBProject.References.Item(n).Minor
Cells(n, 6) = .VBProject.References.Item(n).fullpath
Next
end with
Range("A1").CurrentRegion.EntireColumn.AutoFit
End Sub
'------------------------------------------------

Et comme on sait que la bibliothèque qui fait l'objet de ce message a plus
d'un nom selon la version d'excel, en plus de connaître la valeur des
propriétés, il faudrait s'assurer que l'on prenne soin de l'éventuelle
bibliothèque
désignée marquée "manquante", car non accessible et ceci se ferait
par une procédure de ce type :
'----------------------------------------------
Sub AddFromGuid()

Dim LesRefs As Object, i As Integer
Dim NbRef As Integer
On Error Resume Next

'Prend soin des bibliothèques manquantes le cas échéant
Set LesRefs = ThisWorkbook.VBProject.References
NbRef = LesRefs.Count
For i = 1 To NbRef
With LesRefs(i)
If .IsBroken Then
LesRefs.Remove LesRefs.Item(.Name)
Msg = "La librairie " & .Name & " est " & _
"manquante. Elle a été supprimée."
End If
End With
Next

'Ajoute la référence selon la version d'excel ...
If Val(Application.Version) > 8 Then
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
Else
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
'En remplaçant ces propriétés par celles d'excel 97
End If
End Sub
'----------------------------------------------










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

au risque de me mêler de ce qui ne regarde que des québécois...et si tu
cochais, claire, cette référence une bonne fois pour toutes
quand tu es dans MS Visual Basic, tu cliques Outils puis Références et là
tu
dois voir s'ouvrir une liste ; il suffit de cocher le petit carré pour la
référence qui t'intéresse et, selon ma mémoire (comme dit denis), tu
n'auras
plus rien à ajouter à ta proc puisque la référence sera installée ad vitam
eternam
amen
jps

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

Merci MichDenis
J'ai ajouté ces petites lignes et cela fonctionne. J'apprécie beaucoup
ton aide.

Une chance que cela a marché sinon je n'aurais jamais pu te fournir la
valeur correspondante
de la propriété "Guid", "Major" ett "Minor" de la dite référence de la
version Excel 97 mais j'aimerais que tu me dises comment les trouver.

Claire

"MichDenis" a écrit dans le message de news:
%
La présence de "on error resume next" empêche la macro
de se planter si la référence est déjà chargée.

Sauf que cette référence
"Microsoft Visual Basic for Applications Extensibility 5.3"
a un NOM de bibliothèque différent selon que tu utilises
Excel 97 ou les autres versions (2000- 2002- 2003)
(selon ma mémoire)

La proposition que je t'ai faite n'est pas valide pour
Excel 97. Si ton besoin est d'utiliser ta macro pour toutes
les versions d'excel, tu devrais trouver la valeur correspondate
de la propriété "Guid", "Major" ett "Minor" de la dite référence
de la version Excel 97 et modifier un peu la procédure pour
vérifier par un test sur quelle version le fichier s'ouvre. Si c'est le
cas... revient et donne moi la valeur des propriétés mentionnées
et je t'aiderai à modifier ta macro.


Private Sub workbook_open()
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
End Sub




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

Je veux activer la référence "Microsoft Visual Basic for Applications
Extensibility 5.3" au début de ma macro de départ. J'ai essayé ce bout
de
code pour activer cette référence mais cela ne fonctionne pas. J'ai
sûrement oublié quelque chose mais je ne sais pas quoi.

Private Sub workbook_open()
References.AddFromFile ("C:Program FilesFichiers communsMicrosoft
SharedVBAVBA6VBE6EXT.OLB")
.....

Peut-on la mettre active tout le temps ??

Merci encore une fois
Claire














Avatar
jps
:-))))
jps (déjà dans son après-midi)

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

J'ai jamais goûté à ton truc "marc de beaujolais" mais je sais
que ce type d'explications et de procédures est imbuvable
particulièrement un lundi matin.


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

ben moi, j'avions confondu, denis
je frappe ma poitrine, non pas en signe de mea culpa, mais parce que j'ai
une goutte de marc de beaujolais qui s'est coincée dans le corgnolon....
jps

"MichDenis" a écrit dans le message de news:
%
Au JPS et LSteph,

(On peut simplifier ... mais pas trop....!) ;-))
Pourquoi ce type de question tombe toujours sur moi ?
;-))

Cette bibliothèque est spéciale :
"Microsoft Visual Basic for Applications Extensibility 5.3"

Sous Excel 97, elle a un nom différent que les
versions d'excel 2000 - 2002 et 2003
et pour excel 2007 je ne sais pas !

Le nom d'une bibliothèque se trouve dans la liste
déroulante ("Toutes les bibliothèques") de
l'explorateur d'objets de la fenêtre de l'éditeur de code.
(Raccourci clavier F2 lorsque la fenêtre est affichée)
Pour les versions récentes, le nom de la bibliothèque
"Microsoft Visual Basic for Applications Extensibility 5.3"
est : "VBIDE", pour Excel 97 faudrait vérifier !

SVP. Ne pas confondre "Nom de la bibliothèque" et le nom descriptif
que l'on voit dans la fenêtre de la commande "références" du menu
"outils"
de la fenêtre de l'éditeur de code.

La méthode ADDFROMGUID
GUID : acronyme pour "Globally Unique IDentifier" que l'on retrouve
dans la base de registre de Windows. La bibliothèque est donc chargée
directement à partir des infos. contenues dans la base de registre de
windows .... et cette méthode se fout totalement où est situé le fichier
source dans l'arborescence de l'explorateur Windows et ce pour toutes
les versions du système d'exploitation de Windows.

Pour trouver les propriétés GUID , Major et Minor, de toutes les
bibliothèques installées, on peut utiliser ce bout de procédure :
(notez que les références doivent être déjà chargées -
présentes dans la liste des références cochées du classeur)
'------------------------------------------------
Sub AfficherLesGuids_Propriétés()
Dim n As Integer
Sheets.Add
ActiveSheet.Name = "GUIDS"
'On Error Resume Next
Cells(1, 1) = "Nom de la bibliothèque"
'Son appellation dans la fenêtre Reférences
Cells(1, 2) = "Description"
Cells(1, 3) = "Guid"
Cells(1, 4) = "Major"
Cells(1, 5) = "Minor"
Cells(1, 6) = "Chemin complet"
With Range("A1:F1")
.Font.Bold = True
.Font.Size = 12
End With
with ActiveWorkbook
For n = 2 To .VBProject.References.Count
Cells(n, 1) = .VBProject.References.Item(n).Name
Cells(n, 2) = .VBProject.References.Item(n).Description
Cells(n, 3) = .VBProject.References.Item(n).GUID
Cells(n, 4) = .VBProject.References.Item(n).Major
Cells(n, 5) = .VBProject.References.Item(n).Minor
Cells(n, 6) = .VBProject.References.Item(n).fullpath
Next
end with
Range("A1").CurrentRegion.EntireColumn.AutoFit
End Sub
'------------------------------------------------

Et comme on sait que la bibliothèque qui fait l'objet de ce message a
plus
d'un nom selon la version d'excel, en plus de connaître la valeur des
propriétés, il faudrait s'assurer que l'on prenne soin de l'éventuelle
bibliothèque
désignée marquée "manquante", car non accessible et ceci se ferait
par une procédure de ce type :
'----------------------------------------------
Sub AddFromGuid()

Dim LesRefs As Object, i As Integer
Dim NbRef As Integer
On Error Resume Next

'Prend soin des bibliothèques manquantes le cas échéant
Set LesRefs = ThisWorkbook.VBProject.References
NbRef = LesRefs.Count
For i = 1 To NbRef
With LesRefs(i)
If .IsBroken Then
LesRefs.Remove LesRefs.Item(.Name)
Msg = "La librairie " & .Name & " est " & _
"manquante. Elle a été supprimée."
End If
End With
Next

'Ajoute la référence selon la version d'excel ...
If Val(Application.Version) > 8 Then
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
Else
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
'En remplaçant ces propriétés par celles d'excel 97
End If
End Sub
'----------------------------------------------










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

au risque de me mêler de ce qui ne regarde que des québécois...et si tu
cochais, claire, cette référence une bonne fois pour toutes
quand tu es dans MS Visual Basic, tu cliques Outils puis Références et là
tu
dois voir s'ouvrir une liste ; il suffit de cocher le petit carré pour la
référence qui t'intéresse et, selon ma mémoire (comme dit denis), tu
n'auras
plus rien à ajouter à ta proc puisque la référence sera installée ad
vitam
eternam
amen
jps

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

Merci MichDenis
J'ai ajouté ces petites lignes et cela fonctionne. J'apprécie beaucoup
ton aide.

Une chance que cela a marché sinon je n'aurais jamais pu te fournir la
valeur correspondante
de la propriété "Guid", "Major" ett "Minor" de la dite référence de la
version Excel 97 mais j'aimerais que tu me dises comment les trouver.

Claire

"MichDenis" a écrit dans le message de news:
%
La présence de "on error resume next" empêche la macro
de se planter si la référence est déjà chargée.

Sauf que cette référence
"Microsoft Visual Basic for Applications Extensibility 5.3"
a un NOM de bibliothèque différent selon que tu utilises
Excel 97 ou les autres versions (2000- 2002- 2003)
(selon ma mémoire)

La proposition que je t'ai faite n'est pas valide pour
Excel 97. Si ton besoin est d'utiliser ta macro pour toutes
les versions d'excel, tu devrais trouver la valeur correspondate
de la propriété "Guid", "Major" ett "Minor" de la dite référence
de la version Excel 97 et modifier un peu la procédure pour
vérifier par un test sur quelle version le fichier s'ouvre. Si c'est le
cas... revient et donne moi la valeur des propriétés mentionnées
et je t'aiderai à modifier ta macro.


Private Sub workbook_open()
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
End Sub




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

Je veux activer la référence "Microsoft Visual Basic for Applications
Extensibility 5.3" au début de ma macro de départ. J'ai essayé ce
bout
de
code pour activer cette référence mais cela ne fonctionne pas. J'ai
sûrement oublié quelque chose mais je ne sais pas quoi.

Private Sub workbook_open()
References.AddFromFile ("C:Program FilesFichiers communsMicrosoft
SharedVBAVBA6VBE6EXT.OLB")
.....

Peut-on la mettre active tout le temps ??

Merci encore une fois
Claire