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

protection par mot de passe

12 réponses
Avatar
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:=2578,
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:=2578,
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:=2578,
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).

10 réponses

1 2
Avatar
MichDenis
| Application.VBE.CommandBars(1).FindControl(ID:%78, recursive:=True).Execute

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" a écrit dans le message de news: %
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).
Avatar
Greffier
Bonjour,

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" a écrit dans le message de news:

| Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute

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" a écrit dans le message de news:
%
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).





Avatar
MichDenis
Interface de la feuille de calcul / barre des menus / outils / macros complémentaires /
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" a écrit dans le message de news:

| Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute

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" a écrit dans le message de news:
%
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).





Avatar
Greffier
Bonjour,

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" a écrit dans le message de news:

Interface de la feuille de calcul / barre des menus / outils / macros
complémentaires /
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" a écrit dans le message de news:

| Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute

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" a écrit dans le message de news:
%
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).










Avatar
Greffier
Bonjour,

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.

VBAProject(Classeur1)
VBAProject(été_2007.xls)
VBAProject(FaceIds.Xla)


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" a écrit dans le message de news:

Interface de la feuille de calcul / barre des menus / outils / macros
complémentaires /
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" a écrit dans le message de news:

| Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute

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" a écrit dans le message de news:
%
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).










Avatar
MichDenis
Misange -> il serait souhaitable comme tu as mise sur ton site
la procédure de Bill Manville récemment à partir d'une de mes
réponses, que tu signifies au lecteur d'adapter selon leur version
linguistique d'excel de la façon suivante :


Je publie à nouveau la procédure afin de s'assurer qu'il n'y a pas de mésentente

Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True

Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :

SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True

As-tu fais la correction dans ton application si elle était nécessaire ?

P.S. à partir de ta réponse : je trouve ce nom inquiétant VBAProject(FaceIds.Xla)
Retrouve ce fichier dans l'arborescence de Windows et déplace le vers un autre répertoire
sous office 2007 et windows xp, il devrait se trouver là :
C:Program FilesMicrosoft OfficeOFFICE11Bibliothèque


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
UnprotectVBProject Workbooks("Classeur3.xls"), "denis"
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
'
Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

If VBP.Protection <> vbext_pp_locked Then Exit Sub

Application.ScreenUpdating = False

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True

If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If

' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ProtectVBProject(WB As Workbook, ByVal Password As String)

Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & Password & "~"
Application.VBE.CommandBars(1).FindControl(ID:%78, recursive:=True).Execute
WB.Save
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''





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

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.

VBAProject(Classeur1)
VBAProject(été_2007.xls)
VBAProject(FaceIds.Xla)


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" a écrit dans le message de news:

Interface de la feuille de calcul / barre des menus / outils / macros
complémentaires /
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" a écrit dans le message de news:

| Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute

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" a écrit dans le message de news:
%
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).










Avatar
Misange
j'ai bien noté Denis, ce sera pour une prochaine mise à jour.
Merci
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Misange -> il serait souhaitable comme tu as mise sur ton site
la procédure de Bill Manville récemment à partir d'une de mes
réponses, que tu signifies au lecteur d'adapter selon leur version
linguistique d'excel de la façon suivante :


Je publie à nouveau la procédure afin de s'assurer qu'il n'y a pas de mésentente

Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True

Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :

SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True

As-tu fais la correction dans ton application si elle était nécessaire ?

P.S. à partir de ta réponse : je trouve ce nom inquiétant VBAProject(FaceIds.Xla)
Retrouve ce fichier dans l'arborescence de Windows et déplace le vers un autre répertoire
sous office 2007 et windows xp, il devrait se trouver là :
C:Program FilesMicrosoft OfficeOFFICE11Bibliothèque


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
UnprotectVBProject Workbooks("Classeur3.xls"), "denis"
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
'
Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

If VBP.Protection <> vbext_pp_locked Then Exit Sub

Application.ScreenUpdating = False

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True

If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If

' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ProtectVBProject(WB As Workbook, ByVal Password As String)

Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & Password & "~"
Application.VBE.CommandBars(1).FindControl(ID:%78, recursive:=True).Execute
WB.Save
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''





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

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.

VBAProject(Classeur1)
VBAProject(été_2007.xls)
VBAProject(FaceIds.Xla)


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" a écrit dans le message de news:

Interface de la feuille de calcul / barre des menus / outils / macros
complémentaires /
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" a écrit dans le message de news:

| Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute

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" a écrit dans le message de news:
%
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).














Avatar
MichDenis
Merci.


"Misange" a écrit dans le message de news:
%
j'ai bien noté Denis, ce sera pour une prochaine mise à jour.
Merci
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Misange -> il serait souhaitable comme tu as mise sur ton site
la procédure de Bill Manville récemment à partir d'une de mes
réponses, que tu signifies au lecteur d'adapter selon leur version
linguistique d'excel de la façon suivante :


Je publie à nouveau la procédure afin de s'assurer qu'il n'y a pas de mésentente

Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True

Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :

SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True

As-tu fais la correction dans ton application si elle était nécessaire ?

P.S. à partir de ta réponse : je trouve ce nom inquiétant VBAProject(FaceIds.Xla)
Retrouve ce fichier dans l'arborescence de Windows et déplace le vers un autre répertoire
sous office 2007 et windows xp, il devrait se trouver là :
C:Program FilesMicrosoft OfficeOFFICE11Bibliothèque


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
UnprotectVBProject Workbooks("Classeur3.xls"), "denis"
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
'
Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

If VBP.Protection <> vbext_pp_locked Then Exit Sub

Application.ScreenUpdating = False

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True

If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If

' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ProtectVBProject(WB As Workbook, ByVal Password As String)

Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & Password & "~"
Application.VBE.CommandBars(1).FindControl(ID:%78, recursive:=True).Execute
WB.Save
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''





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

Bonjour,

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.

VBAProject(Classeur1)
VBAProject(été_2007.xls)
VBAProject(FaceIds.Xla)


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" a écrit dans le message de news:

Interface de la feuille de calcul / barre des menus / outils / macros
complémentaires /
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" a écrit dans le message de news:

| Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute

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" a écrit dans le message de news:
%
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).














Avatar
Greffier
Bonjour,

Misange parle de la version 2007 or je suis en version 2003, qui marche
depuis novembre 2005. Je n'ai effectué aucun changement de version.
J'ai fait un essai sur un classeur, mais rien ne se passe.
Pas d'erreur, pas de déprotection même en changeant TE en Oe.

Greffier



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

Misange -> il serait souhaitable comme tu as mise sur ton site
la procédure de Bill Manville récemment à partir d'une de mes
réponses, que tu signifies au lecteur d'adapter selon leur version
linguistique d'excel de la façon suivante :


Je publie à nouveau la procédure afin de s'assurer qu'il n'y a pas de
mésentente

Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True

Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :

SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True

As-tu fais la correction dans ton application si elle était nécessaire ?

P.S. à partir de ta réponse : je trouve ce nom inquiétant
VBAProject(FaceIds.Xla)
Retrouve ce fichier dans l'arborescence de Windows et déplace le vers un
autre répertoire
sous office 2007 et windows xp, il devrait se trouver là :
C:Program FilesMicrosoft OfficeOFFICE11Bibliothèque


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
UnprotectVBProject Workbooks("Classeur3.xls"), "denis"
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
'
Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

If VBP.Protection <> vbext_pp_locked Then Exit Sub

Application.ScreenUpdating = False

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True

If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If

' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ProtectVBProject(WB As Workbook, ByVal Password As String)

Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & Password &
"~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
WB.Save
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''





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

Bonjour,

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.

VBAProject(Classeur1)
VBAProject(été_2007.xls)
VBAProject(FaceIds.Xla)


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" a écrit dans le message de news:

Interface de la feuille de calcul / barre des menus / outils / macros
complémentaires /
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" a écrit dans le message de news:

| Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute

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" a écrit dans le message de news:
%
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).















Avatar
MichDenis
Est-ce que tu exécute la commande à partir de la feuille de calcul et
non à partir de l'éditeur de code VBA. C'est obligatoire.

Sinon, envoie moi ton fichier en utilisant l'adresse Hotmail.
J'y regarderai plus tard.





"Greffier" a écrit dans le message de news: u0Que$
Bonjour,

Misange parle de la version 2007 or je suis en version 2003, qui marche
depuis novembre 2005. Je n'ai effectué aucun changement de version.
J'ai fait un essai sur un classeur, mais rien ne se passe.
Pas d'erreur, pas de déprotection même en changeant TE en Oe.

Greffier



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

Misange -> il serait souhaitable comme tu as mise sur ton site
la procédure de Bill Manville récemment à partir d'une de mes
réponses, que tu signifies au lecteur d'adapter selon leur version
linguistique d'excel de la façon suivante :


Je publie à nouveau la procédure afin de s'assurer qu'il n'y a pas de
mésentente

Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True

Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :

SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True

As-tu fais la correction dans ton application si elle était nécessaire ?

P.S. à partir de ta réponse : je trouve ce nom inquiétant
VBAProject(FaceIds.Xla)
Retrouve ce fichier dans l'arborescence de Windows et déplace le vers un
autre répertoire
sous office 2007 et windows xp, il devrait se trouver là :
C:Program FilesMicrosoft OfficeOFFICE11Bibliothèque


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
UnprotectVBProject Workbooks("Classeur3.xls"), "denis"
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
'
Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

If VBP.Protection <> vbext_pp_locked Then Exit Sub

Application.ScreenUpdating = False

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True

If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If

' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ProtectVBProject(WB As Workbook, ByVal Password As String)

Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & Password &
"~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
WB.Save
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''





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

Bonjour,

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.

VBAProject(Classeur1)
VBAProject(été_2007.xls)
VBAProject(FaceIds.Xla)


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" a écrit dans le message de news:

Interface de la feuille de calcul / barre des menus / outils / macros
complémentaires /
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" a écrit dans le message de news:

| Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute

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" a écrit dans le message de news:
%
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).















1 2