Bonjour à tous,
J'utilise Excel 2002. Je voudrais à partir d'un classeur déprotégé, qui
contient le code suivant, déprotéger un classeur dont je connais le chemin
d'accès et le mot de passe. Le code ci-après récupéré sur le net ne
fonctionne pas.
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub
Je préfère mettre le mot de passe dans le code, par exemple MDP. D'où
suppression des argements de la procédure qui devient UnprotectVBProject()
et l'instruction SendKeys Password & "~~" devient SendKeys "MDP" & "~~"
Mais comme il y a forcément 2 classeurs ouverts, celui qui contient le code
de déprotection ci-dessus et le classeur dont le VBE doit être déprotégé,
l'instruction Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute n'affiche pas la boîte de dialogue du projet
protégé (attendue quand on clique dans VBE sur le nom du projet) et à
déprotéger, mais affiche celle du classeur source (et plus précisément
l'onglet Général) dont le VBE n'est pas protégé.
Or quand on clique dans l'explorateur de projets sur un projet protégé, une
petite boîte de dialogue "VBA Project Mot de passe" s'affiche dont le
curseur se trouve dans la case encore vide appelée "Entrer le mot de passe".
Comment donc sélectionner ou nommer, à partir du code ci-dessus, dans
l'explorateur de projets le bon projet (qui comprend toujours le nom d'un
classeur suivi de ".xls") pour que la bonne boîte de dialogue s'affiche?
J'ai essayé l'instruction suivante pour désigner le classeur actif dont le
VBE doit être déprotégé, sans succès. Le classeur actif a pourtant été
désigné comme le nouveau classeur ouvert à déprotéger, il s'agit donc bien
théoriquement avec ActiveWorkbook.VBProject du classeur dont le VBE doit
être déprotégé.
Set vbProj = ActiveWorkbook.VBProject
La déclaration Dim vbProj As Object est-elle suffisante pour désigner dans
l'explorateur de projets un projet VBA?
D'avance merci
khinoa
Bonjour à tous,
J'utilise Excel 2002. Je voudrais à partir d'un classeur déprotégé, qui
contient le code suivant, déprotéger un classeur dont je connais le chemin
d'accès et le mot de passe. Le code ci-après récupéré sur le net ne
fonctionne pas.
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub
Je préfère mettre le mot de passe dans le code, par exemple MDP. D'où
suppression des argements de la procédure qui devient UnprotectVBProject()
et l'instruction SendKeys Password & "~~" devient SendKeys "MDP" & "~~"
Mais comme il y a forcément 2 classeurs ouverts, celui qui contient le code
de déprotection ci-dessus et le classeur dont le VBE doit être déprotégé,
l'instruction Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute n'affiche pas la boîte de dialogue du projet
protégé (attendue quand on clique dans VBE sur le nom du projet) et à
déprotéger, mais affiche celle du classeur source (et plus précisément
l'onglet Général) dont le VBE n'est pas protégé.
Or quand on clique dans l'explorateur de projets sur un projet protégé, une
petite boîte de dialogue "VBA Project Mot de passe" s'affiche dont le
curseur se trouve dans la case encore vide appelée "Entrer le mot de passe".
Comment donc sélectionner ou nommer, à partir du code ci-dessus, dans
l'explorateur de projets le bon projet (qui comprend toujours le nom d'un
classeur suivi de ".xls") pour que la bonne boîte de dialogue s'affiche?
J'ai essayé l'instruction suivante pour désigner le classeur actif dont le
VBE doit être déprotégé, sans succès. Le classeur actif a pourtant été
désigné comme le nouveau classeur ouvert à déprotéger, il s'agit donc bien
théoriquement avec ActiveWorkbook.VBProject du classeur dont le VBE doit
être déprotégé.
Set vbProj = ActiveWorkbook.VBProject
La déclaration Dim vbProj As Object est-elle suffisante pour désigner dans
l'explorateur de projets un projet VBA?
D'avance merci
khinoa
Bonjour à tous,
J'utilise Excel 2002. Je voudrais à partir d'un classeur déprotégé, qui
contient le code suivant, déprotéger un classeur dont je connais le chemin
d'accès et le mot de passe. Le code ci-après récupéré sur le net ne
fonctionne pas.
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub
Je préfère mettre le mot de passe dans le code, par exemple MDP. D'où
suppression des argements de la procédure qui devient UnprotectVBProject()
et l'instruction SendKeys Password & "~~" devient SendKeys "MDP" & "~~"
Mais comme il y a forcément 2 classeurs ouverts, celui qui contient le code
de déprotection ci-dessus et le classeur dont le VBE doit être déprotégé,
l'instruction Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute n'affiche pas la boîte de dialogue du projet
protégé (attendue quand on clique dans VBE sur le nom du projet) et à
déprotéger, mais affiche celle du classeur source (et plus précisément
l'onglet Général) dont le VBE n'est pas protégé.
Or quand on clique dans l'explorateur de projets sur un projet protégé, une
petite boîte de dialogue "VBA Project Mot de passe" s'affiche dont le
curseur se trouve dans la case encore vide appelée "Entrer le mot de passe".
Comment donc sélectionner ou nommer, à partir du code ci-dessus, dans
l'explorateur de projets le bon projet (qui comprend toujours le nom d'un
classeur suivi de ".xls") pour que la bonne boîte de dialogue s'affiche?
J'ai essayé l'instruction suivante pour désigner le classeur actif dont le
VBE doit être déprotégé, sans succès. Le classeur actif a pourtant été
désigné comme le nouveau classeur ouvert à déprotéger, il s'agit donc bien
théoriquement avec ActiveWorkbook.VBProject du classeur dont le VBE doit
être déprotégé.
Set vbProj = ActiveWorkbook.VBProject
La déclaration Dim vbProj As Object est-elle suffisante pour désigner dans
l'explorateur de projets un projet VBA?
D'avance merci
khinoa
Bonjour,
Je confirme que malheureusement chez moi le code ne fonctionne pas car la
boîte de dialogue qui s'affiche est celle du projet du classeur non protégé
(avec ses deux onglets Général et Protection) qui contient le code de
déprotection (classeur source) et n'est pas celle du classeur dont l'accès
au code doit être déprotégé (classeur cible)
Il découle de ce qui précède que le projet du classeur cible, classeur qui
est ouvert et qui devient donc actif, ne peut être sélectionné ou nommé et
encore moins déprotégé.
Il est impossible de nommer et donc de déprotéger le projet qui doit l'être.
D'ailleurs MsgBox ActiveWorkbook.VBProject.Name ne renvoie que "VBAProject"
et jamais le nom du classeur affiché dans l'explorateur de projets indiqué
après entre parenthèses. Alors je ne vois pas comment sélectionner ou
seulement nommer le nom du projet dont l'accès sera rendu possible par mot
de passe.
Des solutions ou des explications?
khinoa
Bonjour,
Je confirme que malheureusement chez moi le code ne fonctionne pas car la
boîte de dialogue qui s'affiche est celle du projet du classeur non protégé
(avec ses deux onglets Général et Protection) qui contient le code de
déprotection (classeur source) et n'est pas celle du classeur dont l'accès
au code doit être déprotégé (classeur cible)
Il découle de ce qui précède que le projet du classeur cible, classeur qui
est ouvert et qui devient donc actif, ne peut être sélectionné ou nommé et
encore moins déprotégé.
Il est impossible de nommer et donc de déprotéger le projet qui doit l'être.
D'ailleurs MsgBox ActiveWorkbook.VBProject.Name ne renvoie que "VBAProject"
et jamais le nom du classeur affiché dans l'explorateur de projets indiqué
après entre parenthèses. Alors je ne vois pas comment sélectionner ou
seulement nommer le nom du projet dont l'accès sera rendu possible par mot
de passe.
Des solutions ou des explications?
khinoa
Bonjour,
Je confirme que malheureusement chez moi le code ne fonctionne pas car la
boîte de dialogue qui s'affiche est celle du projet du classeur non protégé
(avec ses deux onglets Général et Protection) qui contient le code de
déprotection (classeur source) et n'est pas celle du classeur dont l'accès
au code doit être déprotégé (classeur cible)
Il découle de ce qui précède que le projet du classeur cible, classeur qui
est ouvert et qui devient donc actif, ne peut être sélectionné ou nommé et
encore moins déprotégé.
Il est impossible de nommer et donc de déprotéger le projet qui doit l'être.
D'ailleurs MsgBox ActiveWorkbook.VBProject.Name ne renvoie que "VBAProject"
et jamais le nom du classeur affiché dans l'explorateur de projets indiqué
après entre parenthèses. Alors je ne vois pas comment sélectionner ou
seulement nommer le nom du projet dont l'accès sera rendu possible par mot
de passe.
Des solutions ou des explications?
khinoa
J'ai d'ailleurs du mal à voir comment tu peux voir que la boite de
dialogue qui s'ouvre est celle du projet abritant ta procédure sachant que
tout cela n'est que très fugace mais sait-on jamais ?
Décidément,je n'ai pas de chance avec toi bien que j'ai pu voir que tu
aies été dépanné sur ton fil d'hier sur une solution qui m'était apparue
comme la seule probable mais que je n'avais aucun moyen de vérifier
n'ayant pas Excel 2002.
J'ai d'ailleurs du mal à voir comment tu peux voir que la boite de
dialogue qui s'ouvre est celle du projet abritant ta procédure sachant que
tout cela n'est que très fugace mais sait-on jamais ?
Décidément,je n'ai pas de chance avec toi bien que j'ai pu voir que tu
aies été dépanné sur ton fil d'hier sur une solution qui m'était apparue
comme la seule probable mais que je n'avais aucun moyen de vérifier
n'ayant pas Excel 2002.
J'ai d'ailleurs du mal à voir comment tu peux voir que la boite de
dialogue qui s'ouvre est celle du projet abritant ta procédure sachant que
tout cela n'est que très fugace mais sait-on jamais ?
Décidément,je n'ai pas de chance avec toi bien que j'ai pu voir que tu
aies été dépanné sur ton fil d'hier sur une solution qui m'était apparue
comme la seule probable mais que je n'avais aucun moyen de vérifier
n'ayant pas Excel 2002.
Bonjour à tous,
J'utilise Excel 2002. Je voudrais à partir d'un classeur déprotégé, qui
contient le code suivant, déprotéger un classeur dont je connais le chemin
d'accès et le mot de passe. Le code ci-après récupéré sur le net ne
fonctionne pas.
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub
Je préfère mettre le mot de passe dans le code, par exemple MDP. D'où
suppression des argements de la procédure qui devient UnprotectVBProject()
et l'instruction SendKeys Password & "~~" devient SendKeys "MDP" & "~~"
Mais comme il y a forcément 2 classeurs ouverts, celui qui contient le code
de déprotection ci-dessus et le classeur dont le VBE doit être déprotégé,
l'instruction Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute n'affiche pas la boîte de dialogue du projet
protégé (attendue quand on clique dans VBE sur le nom du projet) et à
déprotéger, mais affiche celle du classeur source (et plus précisément
l'onglet Général) dont le VBE n'est pas protégé.
Or quand on clique dans l'explorateur de projets sur un projet protégé, une
petite boîte de dialogue "VBA Project Mot de passe" s'affiche dont le
curseur se trouve dans la case encore vide appelée "Entrer le mot de passe".
Comment donc sélectionner ou nommer, à partir du code ci-dessus, dans
l'explorateur de projets le bon projet (qui comprend toujours le nom d'un
classeur suivi de ".xls") pour que la bonne boîte de dialogue s'affiche?
J'ai essayé l'instruction suivante pour désigner le classeur actif dont le
VBE doit être déprotégé, sans succès. Le classeur actif a pourtant été
désigné comme le nouveau classeur ouvert à déprotéger, il s'agit donc bien
théoriquement avec ActiveWorkbook.VBProject du classeur dont le VBE doit
être déprotégé.
Set vbProj = ActiveWorkbook.VBProject
La déclaration Dim vbProj As Object est-elle suffisante pour désigner dans
l'explorateur de projets un projet VBA?
D'avance merci
khinoa
Bonjour à tous,
J'utilise Excel 2002. Je voudrais à partir d'un classeur déprotégé, qui
contient le code suivant, déprotéger un classeur dont je connais le chemin
d'accès et le mot de passe. Le code ci-après récupéré sur le net ne
fonctionne pas.
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub
Je préfère mettre le mot de passe dans le code, par exemple MDP. D'où
suppression des argements de la procédure qui devient UnprotectVBProject()
et l'instruction SendKeys Password & "~~" devient SendKeys "MDP" & "~~"
Mais comme il y a forcément 2 classeurs ouverts, celui qui contient le code
de déprotection ci-dessus et le classeur dont le VBE doit être déprotégé,
l'instruction Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute n'affiche pas la boîte de dialogue du projet
protégé (attendue quand on clique dans VBE sur le nom du projet) et à
déprotéger, mais affiche celle du classeur source (et plus précisément
l'onglet Général) dont le VBE n'est pas protégé.
Or quand on clique dans l'explorateur de projets sur un projet protégé, une
petite boîte de dialogue "VBA Project Mot de passe" s'affiche dont le
curseur se trouve dans la case encore vide appelée "Entrer le mot de passe".
Comment donc sélectionner ou nommer, à partir du code ci-dessus, dans
l'explorateur de projets le bon projet (qui comprend toujours le nom d'un
classeur suivi de ".xls") pour que la bonne boîte de dialogue s'affiche?
J'ai essayé l'instruction suivante pour désigner le classeur actif dont le
VBE doit être déprotégé, sans succès. Le classeur actif a pourtant été
désigné comme le nouveau classeur ouvert à déprotéger, il s'agit donc bien
théoriquement avec ActiveWorkbook.VBProject du classeur dont le VBE doit
être déprotégé.
Set vbProj = ActiveWorkbook.VBProject
La déclaration Dim vbProj As Object est-elle suffisante pour désigner dans
l'explorateur de projets un projet VBA?
D'avance merci
khinoa
Bonjour à tous,
J'utilise Excel 2002. Je voudrais à partir d'un classeur déprotégé, qui
contient le code suivant, déprotéger un classeur dont je connais le chemin
d'accès et le mot de passe. Le code ci-après récupéré sur le net ne
fonctionne pas.
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub
Je préfère mettre le mot de passe dans le code, par exemple MDP. D'où
suppression des argements de la procédure qui devient UnprotectVBProject()
et l'instruction SendKeys Password & "~~" devient SendKeys "MDP" & "~~"
Mais comme il y a forcément 2 classeurs ouverts, celui qui contient le code
de déprotection ci-dessus et le classeur dont le VBE doit être déprotégé,
l'instruction Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute n'affiche pas la boîte de dialogue du projet
protégé (attendue quand on clique dans VBE sur le nom du projet) et à
déprotéger, mais affiche celle du classeur source (et plus précisément
l'onglet Général) dont le VBE n'est pas protégé.
Or quand on clique dans l'explorateur de projets sur un projet protégé, une
petite boîte de dialogue "VBA Project Mot de passe" s'affiche dont le
curseur se trouve dans la case encore vide appelée "Entrer le mot de passe".
Comment donc sélectionner ou nommer, à partir du code ci-dessus, dans
l'explorateur de projets le bon projet (qui comprend toujours le nom d'un
classeur suivi de ".xls") pour que la bonne boîte de dialogue s'affiche?
J'ai essayé l'instruction suivante pour désigner le classeur actif dont le
VBE doit être déprotégé, sans succès. Le classeur actif a pourtant été
désigné comme le nouveau classeur ouvert à déprotéger, il s'agit donc bien
théoriquement avec ActiveWorkbook.VBProject du classeur dont le VBE doit
être déprotégé.
Set vbProj = ActiveWorkbook.VBProject
La déclaration Dim vbProj As Object est-elle suffisante pour désigner dans
l'explorateur de projets un projet VBA?
D'avance merci
khinoa
Si tu as supprimé les 2 arguments de la procédure initiale, il n'est pas
suffisant de remplacer Password par ton mot de passe en dur, il faut aussi
remplacer WB par le nom du classeur (ouvert) à traiter, en début de
procédure :
Set vbProj = Workbooks("NomDuClasseurProtégé.xls").VBProject
Si tu as supprimé les 2 arguments de la procédure initiale, il n'est pas
suffisant de remplacer Password par ton mot de passe en dur, il faut aussi
remplacer WB par le nom du classeur (ouvert) à traiter, en début de
procédure :
Set vbProj = Workbooks("NomDuClasseurProtégé.xls").VBProject
Si tu as supprimé les 2 arguments de la procédure initiale, il n'est pas
suffisant de remplacer Password par ton mot de passe en dur, il faut aussi
remplacer WB par le nom du classeur (ouvert) à traiter, en début de
procédure :
Set vbProj = Workbooks("NomDuClasseurProtégé.xls").VBProject
Bonjour Ange,Si tu as supprimé les 2 arguments de la procédure initiale, il n'est pas
suffisant de remplacer Password par ton mot de passe en dur, il faut aussi
remplacer WB par le nom du classeur (ouvert) à traiter, en début de
procédure :
Set vbProj = Workbooks("NomDuClasseurProtégé.xls").VBProject
Naturellement j'ai désigné nommément le classeur dont l'accès au VBE doit
être possible. Dans le code suivant "nom" est réellement le nom du classeur
ouvert par macro dont l'accès à VBE doit être déprotégé. D'après ce code je
suis sûr que le bon projet est identifié, mais comment s'assurer qu'il est
vraiment sélectionné? Comment ou par quelle succession de touches avec
SendKeys reproduire le clic sur son nom dans l'explorateur de projets qui
permet d'afficher la boîte de dialogue demandant le mot de passe ?
L'instruction SendKeys "{ENTER}" & "motdepasse" & "{ENTER}{ESC}", True est
peut être correcte, je l'ignore, mais comme c'est toujours la boîte de
dialogue avec les deux onglets Général et Protection qui s'affiche (soit
celle du projet non protégé qui contient le code source, ici déprotection),
cette succession de touches ne sert à rien, car l'instruction SendKeys
devrait apporter seulement la réponse à la boîte de dialogue demandant
d'entrer un mot de passe.
Apparemment l'instruction Set Application.VBE.ActiveVBProject =
Workbooks(nom).VBProject n'arrive pas à activer le projet qui est pourtant
correctement nommé avec "nom" puisque le projet reste protégé à la fin de
l'exécution de la macro. Est-on obligé d'utiliser une variable objet comme
Set? Ne peut-on pas écrire cela différemment?
Logiquement après avoir exécuté le code de la macro, s'il fonctionnait bien,
en cliquant sur le nom du projet dans l'explorateur de projet, je ne devrais
pas avoir à entrer de mot de passe puisque le projet à déprotéger reste
ouvert provisoirement, n'est-ce pas?
Sub déprotection()
Dim nom As String
nom = ActiveWorkbook.Name
If Workbooks(nom).VBProject.Protection = 0 Then Exit Sub
Set Application.VBE.ActiveVBProject = Workbooks(nom).VBProject
SendKeys "{ENTER}" & "motdepasse" & "{ENTER}{ESC}", True
Khinoa
Bonjour Ange,
Si tu as supprimé les 2 arguments de la procédure initiale, il n'est pas
suffisant de remplacer Password par ton mot de passe en dur, il faut aussi
remplacer WB par le nom du classeur (ouvert) à traiter, en début de
procédure :
Set vbProj = Workbooks("NomDuClasseurProtégé.xls").VBProject
Naturellement j'ai désigné nommément le classeur dont l'accès au VBE doit
être possible. Dans le code suivant "nom" est réellement le nom du classeur
ouvert par macro dont l'accès à VBE doit être déprotégé. D'après ce code je
suis sûr que le bon projet est identifié, mais comment s'assurer qu'il est
vraiment sélectionné? Comment ou par quelle succession de touches avec
SendKeys reproduire le clic sur son nom dans l'explorateur de projets qui
permet d'afficher la boîte de dialogue demandant le mot de passe ?
L'instruction SendKeys "{ENTER}" & "motdepasse" & "{ENTER}{ESC}", True est
peut être correcte, je l'ignore, mais comme c'est toujours la boîte de
dialogue avec les deux onglets Général et Protection qui s'affiche (soit
celle du projet non protégé qui contient le code source, ici déprotection),
cette succession de touches ne sert à rien, car l'instruction SendKeys
devrait apporter seulement la réponse à la boîte de dialogue demandant
d'entrer un mot de passe.
Apparemment l'instruction Set Application.VBE.ActiveVBProject =
Workbooks(nom).VBProject n'arrive pas à activer le projet qui est pourtant
correctement nommé avec "nom" puisque le projet reste protégé à la fin de
l'exécution de la macro. Est-on obligé d'utiliser une variable objet comme
Set? Ne peut-on pas écrire cela différemment?
Logiquement après avoir exécuté le code de la macro, s'il fonctionnait bien,
en cliquant sur le nom du projet dans l'explorateur de projet, je ne devrais
pas avoir à entrer de mot de passe puisque le projet à déprotéger reste
ouvert provisoirement, n'est-ce pas?
Sub déprotection()
Dim nom As String
nom = ActiveWorkbook.Name
If Workbooks(nom).VBProject.Protection = 0 Then Exit Sub
Set Application.VBE.ActiveVBProject = Workbooks(nom).VBProject
SendKeys "{ENTER}" & "motdepasse" & "{ENTER}{ESC}", True
Khinoa
Bonjour Ange,Si tu as supprimé les 2 arguments de la procédure initiale, il n'est pas
suffisant de remplacer Password par ton mot de passe en dur, il faut aussi
remplacer WB par le nom du classeur (ouvert) à traiter, en début de
procédure :
Set vbProj = Workbooks("NomDuClasseurProtégé.xls").VBProject
Naturellement j'ai désigné nommément le classeur dont l'accès au VBE doit
être possible. Dans le code suivant "nom" est réellement le nom du classeur
ouvert par macro dont l'accès à VBE doit être déprotégé. D'après ce code je
suis sûr que le bon projet est identifié, mais comment s'assurer qu'il est
vraiment sélectionné? Comment ou par quelle succession de touches avec
SendKeys reproduire le clic sur son nom dans l'explorateur de projets qui
permet d'afficher la boîte de dialogue demandant le mot de passe ?
L'instruction SendKeys "{ENTER}" & "motdepasse" & "{ENTER}{ESC}", True est
peut être correcte, je l'ignore, mais comme c'est toujours la boîte de
dialogue avec les deux onglets Général et Protection qui s'affiche (soit
celle du projet non protégé qui contient le code source, ici déprotection),
cette succession de touches ne sert à rien, car l'instruction SendKeys
devrait apporter seulement la réponse à la boîte de dialogue demandant
d'entrer un mot de passe.
Apparemment l'instruction Set Application.VBE.ActiveVBProject =
Workbooks(nom).VBProject n'arrive pas à activer le projet qui est pourtant
correctement nommé avec "nom" puisque le projet reste protégé à la fin de
l'exécution de la macro. Est-on obligé d'utiliser une variable objet comme
Set? Ne peut-on pas écrire cela différemment?
Logiquement après avoir exécuté le code de la macro, s'il fonctionnait bien,
en cliquant sur le nom du projet dans l'explorateur de projet, je ne devrais
pas avoir à entrer de mot de passe puisque le projet à déprotéger reste
ouvert provisoirement, n'est-ce pas?
Sub déprotection()
Dim nom As String
nom = ActiveWorkbook.Name
If Workbooks(nom).VBProject.Protection = 0 Then Exit Sub
Set Application.VBE.ActiveVBProject = Workbooks(nom).VBProject
SendKeys "{ENTER}" & "motdepasse" & "{ENTER}{ESC}", True
Khinoa
As-tu essayé de déprotéger ton projet en utilisant le code tel qu'il
proposé au départ (cad avec une procédure appelant celle qui a ses deux
paramètres) ?
Ton premier post n'est pas clair sur ce point.
As-tu essayé de déprotéger ton projet en utilisant le code tel qu'il
proposé au départ (cad avec une procédure appelant celle qui a ses deux
paramètres) ?
Ton premier post n'est pas clair sur ce point.
As-tu essayé de déprotéger ton projet en utilisant le code tel qu'il
proposé au départ (cad avec une procédure appelant celle qui a ses deux
paramètres) ?
Ton premier post n'est pas clair sur ce point.
As-tu essayé de déprotéger ton projet en utilisant le code tel qu'il
proposé au départ (cad avec une procédure appelant celle qui a ses deux
paramètres) ?
Ton premier post n'est pas clair sur ce point.
Oui comme je l'ai dit dans mon premier post, le code avec la procédure
appelante et ses deux arguments ne fonctionne pas non plus. D'ailleurs
qu'il y ait deux procédures (une appelante et une appelée) ou une seule,
le résultat ne peut être qu'identique. Mes recherches sur le net montrent
qu'apparemment le code récupéré fonctionne chez les autres, mais pas chez
moi.
Alors je préfère abandonner et je verrai lorsque j'aurais une nouvelle
version d'Excel si le problème persiste.
Je te remercie pour ton aide
khinoa
As-tu essayé de déprotéger ton projet en utilisant le code tel qu'il
proposé au départ (cad avec une procédure appelant celle qui a ses deux
paramètres) ?
Ton premier post n'est pas clair sur ce point.
Oui comme je l'ai dit dans mon premier post, le code avec la procédure
appelante et ses deux arguments ne fonctionne pas non plus. D'ailleurs
qu'il y ait deux procédures (une appelante et une appelée) ou une seule,
le résultat ne peut être qu'identique. Mes recherches sur le net montrent
qu'apparemment le code récupéré fonctionne chez les autres, mais pas chez
moi.
Alors je préfère abandonner et je verrai lorsque j'aurais une nouvelle
version d'Excel si le problème persiste.
Je te remercie pour ton aide
khinoa
As-tu essayé de déprotéger ton projet en utilisant le code tel qu'il
proposé au départ (cad avec une procédure appelant celle qui a ses deux
paramètres) ?
Ton premier post n'est pas clair sur ce point.
Oui comme je l'ai dit dans mon premier post, le code avec la procédure
appelante et ses deux arguments ne fonctionne pas non plus. D'ailleurs
qu'il y ait deux procédures (une appelante et une appelée) ou une seule,
le résultat ne peut être qu'identique. Mes recherches sur le net montrent
qu'apparemment le code récupéré fonctionne chez les autres, mais pas chez
moi.
Alors je préfère abandonner et je verrai lorsque j'aurais une nouvelle
version d'Excel si le problème persiste.
Je te remercie pour ton aide
khinoa
De toutes façons, tu ne peux pas modifier du code protégé dans une autre
version sans le déprotéger avant dans la version initiale.
De toutes façons, tu ne peux pas modifier du code protégé dans une autre
version sans le déprotéger avant dans la version initiale.
De toutes façons, tu ne peux pas modifier du code protégé dans une autre
version sans le déprotéger avant dans la version initiale.