protection par mot de passe
Le
Greffier
Bonjour,
Pour protéger-déprotéger mon projet VBA j'utilise la solution Bill Manville
proposée par Pascal (donnée plus loin)
J'utilise XP Pro SP2 et Office 2003.
Cette fonction a toujours marché.
Aujourd'hui, après une longue mise à jour dans mes données Excel, sans
toucher au code VBA, j'obtiens l'erreur suivante :
erreur de compilation.
erreur de chargement de la DLL.
Cette erreur se situe dans UnprotectVBProject, et sur la ligne
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
et particulièrement CommandBars(1)
J'appuie sur aide pour connaître la correction à appliquer, et je ne trouve
rien d'anormal (je joins une copie de l'aide)
qui peut m'aider.
Merci pour tout.
Greffier.
'==
'Attribute VB_Name = "ProtegeVBAProjectParMacro"
'Protéger et déprotéger le projet d'un classeur par macro
'Code de Bill Manville
'diffusé sur mpfe par papou
' MPFE Bill Manville, Chip Pearson
'Sub TestProtect()
'ProtectVBProject Workbooks("toto.xls"), "zaza"
'End Sub
'Sub TestUnprotect()
'UnprotectVBProject Workbooks("toto.xls"), "zaza"
'End Sub
Sub UnprotectVBProject(WB As Workbook, ByVal password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
'Teste si le classeur est déjà déprotégé
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
'utilise les sendkeys pour masquer le mot de passe du projet
SendKeys password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub
Sub ProtectVBProject(WB As Workbook, ByVal password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
'teste si le projet est déjà verrouillé
If vbProj.Protection = 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
'utilise les sendKeys pour mettre le mot de passe
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & password & "{TAB}" & _
password & "~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
WB.Save
End Sub
'=
erreur de chargement de la DLL (erreur 48)
Une bibliothèque de liaisons dynamiques (DLL) est spécifiée dans la clause
Lib d'une instruction Declare. Causes et solutions de cette erreur :
a.. Le fichier n'est pas une DLL exécutable.
Si le fichier est un fichier texte source, il doit être compilé et lié à
une DLL exécutable.
b.. Le fichier n'est pas une DLL Microsoft Windows.
Procurez-vous la DLL Microsoft Windows équivalente du fichier.
c.. Le fichier est une DLL Microsoft Windows ancienne, incompatible avec
le mode protégé de Microsoft Windows.
Procurez-vous une version à jour de la DLL.
d.. La DLL fait référence à une autre DLL absente.
Procurez-vous la DLL référencée et rendez-la accessible à l'autre DLL.
e.. La DLL ou l'une des DLL référencées ne se trouve pas dans un
répertoire spécifié par votre chemin d'accès.
Transférez la DLL dans un répertoire référencé ou incluez son répertoire
courant dans le chemin d'accès.
Pour plus d'informations, sélectionnez l'élément en question et appuyez sur
F1 (sous Windows) ou AIDE (sur Macintosh).
Pour protéger-déprotéger mon projet VBA j'utilise la solution Bill Manville
proposée par Pascal (donnée plus loin)
J'utilise XP Pro SP2 et Office 2003.
Cette fonction a toujours marché.
Aujourd'hui, après une longue mise à jour dans mes données Excel, sans
toucher au code VBA, j'obtiens l'erreur suivante :
erreur de compilation.
erreur de chargement de la DLL.
Cette erreur se situe dans UnprotectVBProject, et sur la ligne
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
et particulièrement CommandBars(1)
J'appuie sur aide pour connaître la correction à appliquer, et je ne trouve
rien d'anormal (je joins une copie de l'aide)
qui peut m'aider.
Merci pour tout.
Greffier.
'==
'Attribute VB_Name = "ProtegeVBAProjectParMacro"
'Protéger et déprotéger le projet d'un classeur par macro
'Code de Bill Manville
'diffusé sur mpfe par papou
' MPFE Bill Manville, Chip Pearson
'Sub TestProtect()
'ProtectVBProject Workbooks("toto.xls"), "zaza"
'End Sub
'Sub TestUnprotect()
'UnprotectVBProject Workbooks("toto.xls"), "zaza"
'End Sub
Sub UnprotectVBProject(WB As Workbook, ByVal password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
'Teste si le classeur est déjà déprotégé
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
'utilise les sendkeys pour masquer le mot de passe du projet
SendKeys password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub
Sub ProtectVBProject(WB As Workbook, ByVal password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
'teste si le projet est déjà verrouillé
If vbProj.Protection = 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
'utilise les sendKeys pour mettre le mot de passe
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & password & "{TAB}" & _
password & "~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
WB.Save
End Sub
'=
erreur de chargement de la DLL (erreur 48)
Une bibliothèque de liaisons dynamiques (DLL) est spécifiée dans la clause
Lib d'une instruction Declare. Causes et solutions de cette erreur :
a.. Le fichier n'est pas une DLL exécutable.
Si le fichier est un fichier texte source, il doit être compilé et lié à
une DLL exécutable.
b.. Le fichier n'est pas une DLL Microsoft Windows.
Procurez-vous la DLL Microsoft Windows équivalente du fichier.
c.. Le fichier est une DLL Microsoft Windows ancienne, incompatible avec
le mode protégé de Microsoft Windows.
Procurez-vous une version à jour de la DLL.
d.. La DLL fait référence à une autre DLL absente.
Procurez-vous la DLL référencée et rendez-la accessible à l'autre DLL.
e.. La DLL ou l'une des DLL référencées ne se trouve pas dans un
répertoire spécifié par votre chemin d'accès.
Transférez la DLL dans un répertoire référencé ou incluez son répertoire
courant dans le chemin d'accès.
Pour plus d'informations, sélectionnez l'élément en question et appuyez sur
F1 (sous Windows) ou AIDE (sur Macintosh).

Poser une question


Cette ligne de code est l'équivalent de faire un clic droit sur le nom de ton projet VBA
et de sélectionner la commande : "propriété de VBAproject"
Il serait surprenant qu'elle soit la cause de ton problème ?
As-tu regardé dans ta fenêtre de code VBA, / outils / références /
As-tu une référence marquée manquante ?
Les bibliothèques suivantes devraient être présentes :
VBA for application
Microsoft Excel x.x Objects library
Ole Automation
Microsoft office x.x objects librairy
Microsoft visual basic for applications extensibility 5.3
"Greffier" Bonjour,
Pour protéger-déprotéger mon projet VBA j'utilise la solution Bill Manville
proposée par Pascal (donnée plus loin)
J'utilise XP Pro SP2 et Office 2003.
Cette fonction a toujours marché.
Aujourd'hui, après une longue mise à jour dans mes données Excel, sans
toucher au code VBA, j'obtiens l'erreur suivante :
erreur de compilation.
erreur de chargement de la DLL.
Cette erreur se situe dans UnprotectVBProject, et sur la ligne
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
et particulièrement CommandBars(1)
J'appuie sur aide pour connaître la correction à appliquer, et je ne trouve
rien d'anormal (je joins une copie de l'aide)
qui peut m'aider.
Merci pour tout.
Greffier.
'================================================================ 'Attribute VB_Name = "ProtegeVBAProjectParMacro"
'Protéger et déprotéger le projet d'un classeur par macro
'Code de Bill Manville
'diffusé sur mpfe par papou
' MPFE Bill Manville, Chip Pearson
'Sub TestProtect()
'ProtectVBProject Workbooks("toto.xls"), "zaza"
'End Sub
'Sub TestUnprotect()
'UnprotectVBProject Workbooks("toto.xls"), "zaza"
'End Sub
Sub UnprotectVBProject(WB As Workbook, ByVal password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
'Teste si le classeur est déjà déprotégé
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
'utilise les sendkeys pour masquer le mot de passe du projet
SendKeys password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub
Sub ProtectVBProject(WB As Workbook, ByVal password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
'teste si le projet est déjà verrouillé
If vbProj.Protection = 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
'utilise les sendKeys pour mettre le mot de passe
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & password & "{TAB}" & _
password & "~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
WB.Save
End Sub
'=====================================================================
erreur de chargement de la DLL (erreur 48)
Une bibliothèque de liaisons dynamiques (DLL) est spécifiée dans la clause
Lib d'une instruction Declare. Causes et solutions de cette erreur :
a.. Le fichier n'est pas une DLL exécutable.
Si le fichier est un fichier texte source, il doit être compilé et lié à
une DLL exécutable.
b.. Le fichier n'est pas une DLL Microsoft Windows.
Procurez-vous la DLL Microsoft Windows équivalente du fichier.
c.. Le fichier est une DLL Microsoft Windows ancienne, incompatible avec
le mode protégé de Microsoft Windows.
Procurez-vous une version à jour de la DLL.
d.. La DLL fait référence à une autre DLL absente.
Procurez-vous la DLL référencée et rendez-la accessible à l'autre DLL.
e.. La DLL ou l'une des DLL référencées ne se trouve pas dans un
répertoire spécifié par votre chemin d'accès.
Transférez la DLL dans un répertoire référencé ou incluez son répertoire
courant dans le chemin d'accès.
Pour plus d'informations, sélectionnez l'élément en question et appuyez sur
F1 (sous Windows) ou AIDE (sur Macintosh).
Tous les objets signalés sont dans les références.
Oui, il y a une référence marquée "non enregistrée" : VBAProject.
Aussitôt 2 lignes après il y a VBAProject. Si je le coche il lance l'erreur
"déjà utilisé". En effet, c'est un classeur *.xla de Walkenbaum qui donne
les faceid, et qui monte comme les *.xla relatifs à l'euro, ou à msmoney
2003.
J'ai vérifié sur tout les autres classeurs il y a les mêmes erreurs, alors
qu'ils ne sont plus utilisés depuis quelques semaines.
J'ai examiné l'affichage des projets dans VBE. Il y a dans l'affichage des
projets, plusieurs projets :
CommandBarFaceID(commanBarsButtons.xla)
Euro.xls(Euro.xls)
MoneyLink(Money link 2003.xla)
VBAProject(Classeur1)
VBAProject(été_2007.xls) c'est celui-ci qui me cause ennui
VBAProject(FaceIds.Xla)
En examinant les références à tous, il y a toujours un VBAProject non
enregistré, qui donne le nom du fichier d'un des VBAProject.
Comment puis-je remédier à cela.
Merci si vous pouviez trouver une solution, car ma saisie de données marche
correctement,
J'ai même mis en cause la macro de fermeture qui ne comporte qu'une
déprotection, un wait time, un Save, un wait time et qui fonctionnaient
depuis le 5-11-05, du coup je ferme et enregistre le fichier par enregistrer
ou fermer.
J'espère ne pas avoir été trop dispersé dans mes explications, pour me faire
comprendre.
J'espère beaucoup en vous M. MichDenis.
Greffier.
"MichDenis"
dans cette fenêtre, décoche toutes les macros complémentaires qui font
référence à :
CommandBarFaceID(commanBarsButtons.xla)
MoneyLink(Money link 2003.xla)
Euro.xls(Euro.xls)
VBAProject(FaceIds.Xla)
Tu testes, si tu n'as plus de message d'erreur, tu coches à tour
de rôle en cochant une à la fois, une macro complémentaire
mentionnée...comme cela, tu devrais pouvoir déterminer
quelle est celle qui te cause problème !
| En examinant les références à tous, il y a toujours un VBAProject non
| enregistré, qui donne le nom du fichier d'un des VBAProject.
Je n'ai pas saisi ce que tu voulais m'expliquer.
J'ai examiné l'affichage des projets dans VBE. Il y a dans l'affichage des
projets, plusieurs projets :
CommandBarFaceID(commanBarsButtons.xla)
Euro.xls(Euro.xls)
MoneyLink(Money link 2003.xla)
VBAProject(Classeur1)
VBAProject(été_2007.xls) c'est celui-ci qui me cause ennui
VBAProject(FaceIds.Xla)
En examinant les références à tous, il y a toujours un VBAProject non
enregistré, qui donne le nom du fichier d'un des VBAProject.
Comment puis-je remédier à cela.
Merci si vous pouviez trouver une solution, car ma saisie de données marche
correctement,
J'ai même mis en cause la macro de fermeture qui ne comporte qu'une
déprotection, un wait time, un Save, un wait time et qui fonctionnaient
depuis le 5-11-05, du coup je ferme et enregistre le fichier par enregistrer
ou fermer.
J'espère ne pas avoir été trop dispersé dans mes explications, pour me faire
comprendre.
J'espère beaucoup en vous M. MichDenis.
Greffier.
"MichDenis"
Merci pour la réponse rapide.
J'ai bien exécuté l'enlèvement de tous les objets demandés, mais j'ai la
même erreur sur tous les classeurs Excel utilisant la protection "Manville".
Je ne sais pas à quoi cela peut être imputable.
Je suis un petit peu découragé.
Greffier.
"MichDenis"
Mille excuses, je n'ai pas lu la réponse jusqu'au bout :
" En examinant les références à tous, il y a toujours un VBAProject non
enregistré, qui donne le nom du fichier d'un des VBAProject.
Je n'ai pas saisi ce que tu voulais m'expliquer."
En effet en examinant dans VBE les projets, il y a 3 fois le même nom
VBAProject, mais pour des classeurs différents.
J'ai éliminé FaceIds.xla et Classeur1 (qui est affiché chaque fois), j'ai
toujours la même erreur sur la même instruction.
Greffier.
"MichDenis"