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

erreur de compilation - references manquantes

6 réponses
Avatar
fan
Bonjour

Voici mon problème :

2 postes pc sous XP + Office 2003

Un fichier "X.xls" possédant un peu de code vba.

Sur le PC1, aucun problème lors de son utilisation, si j'essaie de compiler
le projet, pas de problème.

Je le copie alors sur le PC2., ensuite je l'ouvre et l'enregistre à partir
de celui-ci.
Je le réouvre à partir du PC2, utilise n'importe quel bouton de commande et
le message suivant apparait :
"erreur de compilation...."

Après quelques essais, j'ai constaté que si je le recompile sur le PC2,
alors un message apparait "erreur de compilation, projet ou bibliothèque
introuvable" (certainement dù à des références d'objets qui n'existent plus,
checkbox etc....)
Je réponds "ok" et il m'ouvre la boite de dialogue "reference - vba projet"
et là, la case à cocher d'une ligne apparait : "MANQUANT : Ref Edit Control"


Pourquoi sur un poste la compilation ne laisse rien apparaitre et sur
l'autre le contraire ?

Hormis, désactiver cette case à cocher ; Quelqu'un peut m'expliquer mon
problème, pourquoi d'un poste à l'autre, l'utilisation d'un fichier devient
impossible et enfin que dois-je faire ?

Je vous remercie par avance

6 réponses

Avatar
michdenis
Bonjour,

Tu décoches la référence marquée "manquante" et tout devrait
revenir à la normale !




"fan" a écrit dans le message de groupe de discussion :
#
Bonjour

Voici mon problème :

2 postes pc sous XP + Office 2003

Un fichier "X.xls" possédant un peu de code vba.

Sur le PC1, aucun problème lors de son utilisation, si j'essaie de compiler
le projet, pas de problème.

Je le copie alors sur le PC2., ensuite je l'ouvre et l'enregistre à partir
de celui-ci.
Je le réouvre à partir du PC2, utilise n'importe quel bouton de commande et
le message suivant apparait :
"erreur de compilation...."

Après quelques essais, j'ai constaté que si je le recompile sur le PC2,
alors un message apparait "erreur de compilation, projet ou bibliothèque
introuvable" (certainement dù à des références d'objets qui n'existent plus,
checkbox etc....)
Je réponds "ok" et il m'ouvre la boite de dialogue "reference - vba projet"
et là, la case à cocher d'une ligne apparait : "MANQUANT : Ref Edit Control"


Pourquoi sur un poste la compilation ne laisse rien apparaitre et sur
l'autre le contraire ?

Hormis, désactiver cette case à cocher ; Quelqu'un peut m'expliquer mon
problème, pourquoi d'un poste à l'autre, l'utilisation d'un fichier devient
impossible et enfin que dois-je faire ?

Je vous remercie par avance
Avatar
oui merci mais qu'est ce que cela veut dire ?

Pourquoi sur un poste la compilation ne sort aucune anomalie et le contraire
sur autre ?

Merci


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

Bonjour,

Tu décoches la référence marquée "manquante" et tout devrait
revenir à la normale !




"fan" a écrit dans le message de groupe de discussion :
#
Bonjour

Voici mon problème :

2 postes pc sous XP + Office 2003

Un fichier "X.xls" possédant un peu de code vba.

Sur le PC1, aucun problème lors de son utilisation, si j'essaie de
compiler
le projet, pas de problème.

Je le copie alors sur le PC2., ensuite je l'ouvre et l'enregistre à partir
de celui-ci.
Je le réouvre à partir du PC2, utilise n'importe quel bouton de commande
et
le message suivant apparait :
"erreur de compilation...."

Après quelques essais, j'ai constaté que si je le recompile sur le PC2,
alors un message apparait "erreur de compilation, projet ou bibliothèque
introuvable" (certainement dù à des références d'objets qui n'existent
plus,
checkbox etc....)
Je réponds "ok" et il m'ouvre la boite de dialogue "reference - vba
projet"
et là, la case à cocher d'une ligne apparait : "MANQUANT : Ref Edit
Control"


Pourquoi sur un poste la compilation ne laisse rien apparaitre et sur
l'autre le contraire ?

Hormis, désactiver cette case à cocher ; Quelqu'un peut m'expliquer mon
problème, pourquoi d'un poste à l'autre, l'utilisation d'un fichier
devient
impossible et enfin que dois-je faire ?

Je vous remercie par avance



Avatar
michdenis
| Pourquoi sur un poste la compilation ne sort aucune
| anomalie et le contraire sur autre ?

De façon générale, cela signifie que le fichier fait référence
à une bibliothèque qui n'est pas disponible pour lui sur
l'ordinateur il s'ouvre.

Un petit exemple :

Dans le code d'un fichier Excel, tu as ajouté une référence "Word"
à partir de la fenêtre de l'éditeur de code / barre des menus /
outils / référence / "Microsoft Word "version" Object Library"

Ce faisant, tu as été capable d'utiliser ce type de code :
Dim Wd As New Word.Application

Si tu ouvres ce fichier, et que sur cet ordinateur, tu n'as pas la même version
de Word (office) tu vas avoir un problème, il ne va pas retrouver le chemin
de la bibliothèque, car ce chemin est différent. La bibliothèque "Word"
est présente, mais inaccessible. Il n'arrivera pas à compiler ton projet VBA
et il va te faire savoir !
Dans certains cas, le nom du fichier source lié à la bibliothèque a été modifié.
C'est le cas pour le contrôle "Calendar". Dans Excel 2007, le fichier source
est "MSCAL.OCX" mais le fichier dans les versions antérieures a déjà eu
l'extension MSCAL.OCX.DLL

Dans d'autres cas, c'est le nom de la
bibliothèque qui est changé comme dans le cas en autre :
Library VBIDE : Microsoft Visual Basic for Applications Extensibility 5.3
De mémoire, cette bibliothèque porte un autre nom que VBIDE sous
Excel 1997. Il est possible que la bibliothèque soit carrément
absente dans un autre environnement pour toute sorte de raisons :
- Mise à jour non à jour
- Une installation différente (application non présente)
- etc.

Ça devrait te donner une idée de la chose !
Avatar
fan
merci avant tout pour tes réponses

Mais pourquoi pour un même fichier sur 2 postes différents, lors de la
compilation du projet, Une erreur apparait lorsqu'une procédure tente
d'appeler un formlaire qui n'existe plus et que pour l'autre poste aucune
erreur se produit ?

2nd question, La référence manquante est ReEdit Control, Si elle manquante,
c'est qu'elle doit servir ?. Et si je la décoche, qu'elle sera la
conséquence dans mon code ?


Merci




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

| Pourquoi sur un poste la compilation ne sort aucune
| anomalie et le contraire sur autre ?

De façon générale, cela signifie que le fichier fait référence
à une bibliothèque qui n'est pas disponible pour lui sur
l'ordinateur il s'ouvre.

Un petit exemple :

Dans le code d'un fichier Excel, tu as ajouté une référence "Word"
à partir de la fenêtre de l'éditeur de code / barre des menus /
outils / référence / "Microsoft Word "version" Object Library"

Ce faisant, tu as été capable d'utiliser ce type de code :
Dim Wd As New Word.Application

Si tu ouvres ce fichier, et que sur cet ordinateur, tu n'as pas la même
version
de Word (office) tu vas avoir un problème, il ne va pas retrouver le
chemin
de la bibliothèque, car ce chemin est différent. La bibliothèque "Word"
est présente, mais inaccessible. Il n'arrivera pas à compiler ton projet
VBA
et il va te faire savoir !
Dans certains cas, le nom du fichier source lié à la bibliothèque a été
modifié.
C'est le cas pour le contrôle "Calendar". Dans Excel 2007, le fichier
source
est "MSCAL.OCX" mais le fichier dans les versions antérieures a déjà eu
l'extension MSCAL.OCX.DLL

Dans d'autres cas, c'est le nom de la
bibliothèque qui est changé comme dans le cas en autre :
Library VBIDE : Microsoft Visual Basic for Applications Extensibility 5.3
De mémoire, cette bibliothèque porte un autre nom que VBIDE sous
Excel 1997. Il est possible que la bibliothèque soit carrément
absente dans un autre environnement pour toute sorte de raisons :
- Mise à jour non à jour
- Une installation différente (application non présente)
- etc.

Ça devrait te donner une idée de la chose !










Avatar
michdenis
A ) Question I
Lorsque tu élabores un projetVBA et que tu ajoutes
un formulaire et que dans ce dernier, tu y places des
contrôles comme un RefEdit ou un "calenda"... lers
bibliothèques afférentes à ces contrôles sont chargées.
Tu enregistres ton fichier et les références requises.
Si par la suite tu décides de supprimer ton formulaire,
les références aux bibliothèques demeurent toujours à
moins que tu les aies délibérément enlevées. Si elles sont
toujours présentes, lorsque tu ouvriras ton fichier sur un
autre ordinateur, ton application peut avoir des problèmes
à charger ces références parce que l'environnement VBA est
différent. Les gestes que tu as posés pour charger ces références
n'ont probablement jamais été faits sur cet ordinateur. Voilà.
C'est ce pour quoi tu obtiens soit un message d'Excel puisqu'il
n'arrive pas à compiler le code...il ne trouve même pas les
bibliothèques auxquelles le fichier fait référence !

En conséquence :
A ) Si ton application a besoin d'ajouter une ou des
références, la meilleure méthode est "AddFromGuid". Je t'en donne
un exemple plus bas.
B ) Lorsque l'on conçoit une application, il faut s'assurer que l'on ne
laisse pas des références non nécessaires à l'exécution du code suite
à des modifications que l'on a effectuées. Il faut les enlever.

Question II
| Et si je la décoche, qu'elle sera la conséquence dans mon code ?

Si ton code n'en a pas de besoin, ton code va fonctionner rondement
et le message va disparaître !

Exemple de code pour ajouter des références :

'-----------------------------------------
Sub Auto_Open()

On Error Resume Next
'Ajoute la bibliothèque "Microsoft Forms 2.0 Object Library"
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{0D452EE1-E08F-101A-852E-02608C4D0BB4}", major:=2, minor:=0

'Ajoute la bibliothèque "Calendar"
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{8E27C92E-1264-101C-8A2F-040224009C02}", major:=7, minor:=0

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

Comment faire pour trouver le GUID, MAJOR et MINOR :

a ) Tu charges manuellement les bibliothèques que tu as de besoin
b ) tu exécutes la macro suivante dans un deuxième temps.

'---------------------------------------------------
Sub AfficherLesGuids_Propriétés()
Dim X As Integer, Sh As Worksheet
Dim NbRef As Integer

Set Sh = Worksheets.Add(After:=Sheets(Sheets.Count))

On Error Resume Next
With Sh
.Name = "GUIDS"
.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 Sh.Parent.VBProject.References
NbRef = .Count
X = 2
For a = 1 To NbRef
Sh.Cells(X, 1) = .Item(a).Name
Sh.Cells(X, 2) = .Item(a).Description
Sh.Cells(X, 3) = .Item(a).GUID
Sh.Cells(X, 4) = .Item(a).Major
Sh.Cells(X, 5) = .Item(a).Minor
Sh.Cells(X, 6) = .Item(a).fullpath
X = X + 1
Next
End With
.Range("A1").CurrentRegion.EntireColumn.AutoFit
End With
End Sub
'------------------------------------------






"fan" a écrit dans le message de groupe de discussion :
#KU#
merci avant tout pour tes réponses

Mais pourquoi pour un même fichier sur 2 postes différents, lors de la
compilation du projet, Une erreur apparait lorsqu'une procédure tente
d'appeler un formlaire qui n'existe plus et que pour l'autre poste aucune
erreur se produit ?

2nd question, La référence manquante est ReEdit Control, Si elle manquante,
c'est qu'elle doit servir ?. Et si je la décoche, qu'elle sera la
conséquence dans mon code ?


Merci




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

| Pourquoi sur un poste la compilation ne sort aucune
| anomalie et le contraire sur autre ?

De façon générale, cela signifie que le fichier fait référence
à une bibliothèque qui n'est pas disponible pour lui sur
l'ordinateur il s'ouvre.

Un petit exemple :

Dans le code d'un fichier Excel, tu as ajouté une référence "Word"
à partir de la fenêtre de l'éditeur de code / barre des menus /
outils / référence / "Microsoft Word "version" Object Library"

Ce faisant, tu as été capable d'utiliser ce type de code :
Dim Wd As New Word.Application

Si tu ouvres ce fichier, et que sur cet ordinateur, tu n'as pas la même
version
de Word (office) tu vas avoir un problème, il ne va pas retrouver le
chemin
de la bibliothèque, car ce chemin est différent. La bibliothèque "Word"
est présente, mais inaccessible. Il n'arrivera pas à compiler ton projet
VBA
et il va te faire savoir !
Dans certains cas, le nom du fichier source lié à la bibliothèque a été
modifié.
C'est le cas pour le contrôle "Calendar". Dans Excel 2007, le fichier
source
est "MSCAL.OCX" mais le fichier dans les versions antérieures a déjà eu
l'extension MSCAL.OCX.DLL

Dans d'autres cas, c'est le nom de la
bibliothèque qui est changé comme dans le cas en autre :
Library VBIDE : Microsoft Visual Basic for Applications Extensibility 5.3
De mémoire, cette bibliothèque porte un autre nom que VBIDE sous
Excel 1997. Il est possible que la bibliothèque soit carrément
absente dans un autre environnement pour toute sorte de raisons :
- Mise à jour non à jour
- Une installation différente (application non présente)
- etc.

Ça devrait te donner une idée de la chose !










Avatar
fan
Merci de m'avoir répondu durant mon absence.

Je vais prendre le temps de lire et de comprendre vos explications.

Merci une nouvelle fois pour le temps passé pour apporter des réponses.

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

A ) Question I
Lorsque tu élabores un projetVBA et que tu ajoutes
un formulaire et que dans ce dernier, tu y places des
contrôles comme un RefEdit ou un "calenda"... lers
bibliothèques afférentes à ces contrôles sont chargées.
Tu enregistres ton fichier et les références requises.
Si par la suite tu décides de supprimer ton formulaire,
les références aux bibliothèques demeurent toujours à
moins que tu les aies délibérément enlevées. Si elles sont
toujours présentes, lorsque tu ouvriras ton fichier sur un
autre ordinateur, ton application peut avoir des problèmes
à charger ces références parce que l'environnement VBA est
différent. Les gestes que tu as posés pour charger ces références
n'ont probablement jamais été faits sur cet ordinateur. Voilà.
C'est ce pour quoi tu obtiens soit un message d'Excel puisqu'il
n'arrive pas à compiler le code...il ne trouve même pas les
bibliothèques auxquelles le fichier fait référence !

En conséquence :
A ) Si ton application a besoin d'ajouter une ou des
références, la meilleure méthode est "AddFromGuid". Je t'en donne
un exemple plus bas.
B ) Lorsque l'on conçoit une application, il faut s'assurer que l'on ne
laisse pas des références non nécessaires à l'exécution du code suite
à des modifications que l'on a effectuées. Il faut les enlever.

Question II
| Et si je la décoche, qu'elle sera la conséquence dans mon code ?

Si ton code n'en a pas de besoin, ton code va fonctionner rondement
et le message va disparaître !

Exemple de code pour ajouter des références :

'-----------------------------------------
Sub Auto_Open()

On Error Resume Next
'Ajoute la bibliothèque "Microsoft Forms 2.0 Object Library"
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{0D452EE1-E08F-101A-852E-02608C4D0BB4}", major:=2, minor:=0

'Ajoute la bibliothèque "Calendar"
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{8E27C92E-1264-101C-8A2F-040224009C02}", major:=7, minor:=0

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

Comment faire pour trouver le GUID, MAJOR et MINOR :

a ) Tu charges manuellement les bibliothèques que tu as de besoin
b ) tu exécutes la macro suivante dans un deuxième temps.

'---------------------------------------------------
Sub AfficherLesGuids_Propriétés()
Dim X As Integer, Sh As Worksheet
Dim NbRef As Integer

Set Sh = Worksheets.Add(After:=Sheets(Sheets.Count))

On Error Resume Next
With Sh
.Name = "GUIDS"
.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 Sh.Parent.VBProject.References
NbRef = .Count
X = 2
For a = 1 To NbRef
Sh.Cells(X, 1) = .Item(a).Name
Sh.Cells(X, 2) = .Item(a).Description
Sh.Cells(X, 3) = .Item(a).GUID
Sh.Cells(X, 4) = .Item(a).Major
Sh.Cells(X, 5) = .Item(a).Minor
Sh.Cells(X, 6) = .Item(a).fullpath
X = X + 1
Next
End With
.Range("A1").CurrentRegion.EntireColumn.AutoFit
End With
End Sub
'------------------------------------------






"fan" a écrit dans le message de groupe de discussion :
#KU#
merci avant tout pour tes réponses

Mais pourquoi pour un même fichier sur 2 postes différents, lors de la
compilation du projet, Une erreur apparait lorsqu'une procédure tente
d'appeler un formlaire qui n'existe plus et que pour l'autre poste aucune
erreur se produit ?

2nd question, La référence manquante est ReEdit Control, Si elle
manquante,
c'est qu'elle doit servir ?. Et si je la décoche, qu'elle sera la
conséquence dans mon code ?


Merci




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

| Pourquoi sur un poste la compilation ne sort aucune
| anomalie et le contraire sur autre ?

De façon générale, cela signifie que le fichier fait référence
à une bibliothèque qui n'est pas disponible pour lui sur
l'ordinateur il s'ouvre.

Un petit exemple :

Dans le code d'un fichier Excel, tu as ajouté une référence "Word"
à partir de la fenêtre de l'éditeur de code / barre des menus /
outils / référence / "Microsoft Word "version" Object Library"

Ce faisant, tu as été capable d'utiliser ce type de code :
Dim Wd As New Word.Application

Si tu ouvres ce fichier, et que sur cet ordinateur, tu n'as pas la même
version
de Word (office) tu vas avoir un problème, il ne va pas retrouver le
chemin
de la bibliothèque, car ce chemin est différent. La bibliothèque "Word"
est présente, mais inaccessible. Il n'arrivera pas à compiler ton projet
VBA
et il va te faire savoir !
Dans certains cas, le nom du fichier source lié à la bibliothèque a été
modifié.
C'est le cas pour le contrôle "Calendar". Dans Excel 2007, le fichier
source
est "MSCAL.OCX" mais le fichier dans les versions antérieures a déjà eu
l'extension MSCAL.OCX.DLL

Dans d'autres cas, c'est le nom de la
bibliothèque qui est changé comme dans le cas en autre :
Library VBIDE : Microsoft Visual Basic for Applications Extensibility 5.3
De mémoire, cette bibliothèque porte un autre nom que VBIDE sous
Excel 1997. Il est possible que la bibliothèque soit carrément
absente dans un autre environnement pour toute sorte de raisons :
- Mise à jour non à jour
- Une installation différente (application non présente)
- etc.

Ça devrait te donner une idée de la chose !