VBA excel 2000 et 2003

Airwolf

XLDnaute Nouveau
Bonjour,

Il y a plusieurs mois, ma Direction m'a demandé de mettre en place un fichier avec un formulaire de saisi et un formulaire de recherche, grace a votre aide, je leur ai présenté un prototype, qui depuis a été amélioré, il fonctionne très bien sur excel 2007 et 2003. Aujourd'hui on me demande de mettre ce fichier sur un de nos serveur qui tourne avec excel 2000. J'ai donc enregistré mon fichier en excel 97 - 2003 sur le serveur et quand j'ai voulu m'en servir un message d'erreur est apparu : "erreur de compilation, Projet ou Blibliothéque introuvable".

Ma question est-ce un problème de compatibilité et faut il tout refaire ?:(

Merci pour votre aide
 

MichD

XLDnaute Impliqué
Re : VBA excel 2000 et 2003

| tester cette partie de code, donc pas de certitude que ça marche

'--------------------------
For Each Ref In Refs
If Ref.IsBroken Then
Refs.Remove Ref.name
End If
Next
'-------------------------

Cela fonctionne! Tu n'es pas croyant? ;-))

Tu peux tester la chose sur ton ordinateur.

A )
Tu crées un fichier avec un formulaire où tu insères une référence
une référence inutile au code qui est dans le fichier en identifiant
bien le nom de la DLL et son chemin.

B )
Tu enregistres le fichier et tu fermes Excel.

C )
Tu dé-enregistres le fichier DLL de la référence dans la base de registre
que tu as ajouté inutilement à ton fichier.

Pour ce faire, tu ouvres une fenêtre CMD (invite de commande) en tant
qu'administrateur, sous Windows 7 / bouton démarrer / accessoires /
un clic droit sur la commande "invite de commande" et tu appelles la
commande du menu contextuel "exécuter en tant qu'administrateur"

D )
Dans la fenêtre de l'invite de commande, tu tapes:
Regsvr32 /u c:\Windows\System32\MonFichier.dll
(au besoin, tu adaptes le chemin et le nom de la dll.)

E )
Tu devrais obtenir un petit message comme quoi la commande a réussi.

F )
Ouvre Excel et ledit fichier dont la dll a été dé-enregistré.
Si tu essaies d'exécuter le code, une erreur devrait être générée.

G ) Si tu places mon code dans le ThisWorkbook du classeur, cela devrait régler le
problème.

Attention, certaines DLL ne peuvent pas être dé-enregistré avec la ligne de commande
Regsvr32 /u ..... C'est le cas en autre pour la Dll RefEdit.dll pour le contrôle RefEdit.

Si tu essaies, tu obtiendras ce message d'erreur:
'-----------------------
Le module "c:\Program Files\Microsoft Office\Office14\RefEdit.dll"
a été chargé, mais le point d'entrée dIllnstal est introuvable.

Vérifier que "c:\Program Files\Microsoft Office\Office14\RefEdit.dll"
est un fichier DLL ou OCX valide, puis réessayer.
'-----------------------

Dans ces cas, ce message d'erreur lors de l'exécution de la ligne de code est du au fait
puisqu'elle n'a pas de point d'entrée 'DllUnregisterServer'. On peut seulement l'enregistrer
en utilisant la commande Regsvr32 "c:\....\RefEdit.dll"
Pour plus d'informations, je suppose qu'il doit bien y avoir des gurus de Windows susceptible
d'apporter des précisions sur les forums Windows...

En VBA, on pourrait utiliser ce code :

P.S. Tu adaptes le chemin et le nom de la référence "RefEdit.dll"
même en VBA, on ne peut pas dé-enregistré la référence "RefEdit.dll"

dans cette ligne, il y a beaucoup de guillemets :
Source = """C:\Program Files\Microsoft Office\Office14\""""RefEdit.dll"
La cause : la présence d'espace dans le chemin de la DLL

(Soius Windows 8 64bits et Excel 2010)
'--------------------------------
Sub test()
Dim Source As String
Source = """C:\Program Files\Microsoft Office\Office14\""""RefEdit.dll"
commande = Environ$("comspec") & " /c c:\Windows\syswow64\Regsvr32.exe /u """ & Source & """"
Shell "runas /user:MichD" & commande, 0
End Sub
'--------------------------------

Voilà!

Un week-end de 3 jours, cela devrait te laisser suffisamment de temps
pour effectuer tous les tests que tu désires ou tu me crois sans tester!

Et pour mardi, tu nous trouves la manière de dé-enregistrer manuellement
cette DLL (refedit.dll)

Tu peux te faire aider par ceci:
'-------------------------------------------------
à cette adresse : RegDllView - Register dll/ocx/exe utility

Il y a un freeware pour faire ce travail pour toutes les versions de Windows 32 ou 64 bits

RegDllView v1.45 - View registered dll/ocx/exe files on your system and Register dll files from Explorer
-------------------------------------------------

J'ai tenté de dé-enregistrer "RefEdit.dll" de la base de registre avec ce
petit utilitaire et cela n'a pas davantage fonctionner!


;-))
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 392
Messages
2 088 004
Membres
103 695
dernier inscrit
acimi