OVH Cloud OVH Cloud

Créer une procédure Worksheet_BeforeRightClick dans le module de feuille

15 réponses
Avatar
Pounet95
Bonsoir à toutes et tous,
XL2000 XP Pro et XL2000 W2000 Pro

Je créé via une procédure VBA un classeur avec une 30aine de feuilles.
Chacune de ces feuilles est nommée et doit contenir dans son module de code
:

Private Sub Worksheet_BeforeRightClick( ..... )
' le code
End Sub

Dans un module standard ( module_feuille ) du classeur 'père' ( wbMacro ),
j'ai donc écrit l'évènement dans sa totalité
En utilisant la procédure ci-dessous ( issue du site de Frédéric Sigonneau
et adaptée ), je n'obtiens rien d'autre
qu'un plantage d'Excel ;o(((((

wFeuille est le CodeName de la feuille dans laquelle je veux écrire
l'évènement
wbSaisie est le classeur contenant cette feuille
wbMacro le classeur qui génère l'ensemble et qui contient les originaux

Function CopieCodeModuleFeuille(wFeuille As String)
'd'après Frédéric Sigonneau
Dim s As String

With wbMacro.VBProject.VBComponents("Module_feuille").CodeModule
s = .Lines(1, .CountOfLines)
End With

With wbSaisie.VBProject.VBComponents(wFeuille).CodeModule
.AddFromString s
End With
End Function


Pouvez-vous me dire où je me trompe ?
Merci d'avance.

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

5 réponses

1 2
Avatar
Pounet95
Re Bonjour,
La solution d'utiliser l'évènement dans le ThisWorkbook fonctionne. Je n'ai
plus de plantage.
Subsiste tout de même un problème avec l'ouverture du VBE au moment de
l'écriture
de la procédure dans le module. La mise à jour de l'écran est désactivée (
screenupdatingúlse )
mais peut-être que cela ne s'applique qu'aux feuilles de calcul ? C'est
gênant surtout que je ne veux pas
que les utilisateurs bidouillent dans le code et que je n'ai pas envie de
mettre de mot de passe.
Mais s'il faut passer par là, alors ....
Si quelqu'un a une idée pour éviter l'ouverture et l'affichage du VBE, je
suis preneur.

A bientôt de vous lire. Merci d'avance
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

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

Bonjour,

J'ai crié victoire trop tôt ! En fait, cela n'a fonctionné qu'une fois et
même en recompilant ( à condition de faire au moins une modif ),
il n'y a rien à faire. Je me lance sur la proposition de Denis et vais
voir ce que je peux faire en utilisant l'évènement dans ThisWorkbook
Dans le même style, je n'ai aucun souci pour créer un module standard et y
recopier les procédures issues du classeur 'père'.
Etant donné les problèmes de reboot, je n'en suis que sur XP Pro. Je mets
au chaud la précision de Clément sur le pack W2000
et je soumets le problème à ceux qui savent et qui gèrent le parc logiciel
et informatique.
Je vous tiens au courant.
Bonne journée


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Pounet95" a écrit dans le message de news:
e$$
Bonsoir à toutes et tous,
XL2000 XP Pro et XL2000 W2000 Pro

Je créé via une procédure VBA un classeur avec une 30aine de feuilles.
Chacune de ces feuilles est nommée et doit contenir dans son module de
code :

Private Sub Worksheet_BeforeRightClick( ..... )
' le code
End Sub

Dans un module standard ( module_feuille ) du classeur 'père' (
wbMacro ), j'ai donc écrit l'évènement dans sa totalité
En utilisant la procédure ci-dessous ( issue du site de Frédéric
Sigonneau et adaptée ), je n'obtiens rien d'autre
qu'un plantage d'Excel ;o(((((

wFeuille est le CodeName de la feuille dans laquelle je veux écrire
l'évènement
wbSaisie est le classeur contenant cette feuille
wbMacro le classeur qui génère l'ensemble et qui contient les originaux

Function CopieCodeModuleFeuille(wFeuille As String)
'd'après Frédéric Sigonneau
Dim s As String

With wbMacro.VBProject.VBComponents("Module_feuille").CodeModule
s = .Lines(1, .CountOfLines)
End With

With wbSaisie.VBProject.VBComponents(wFeuille).CodeModule
.AddFromString s
End With
End Function


Pouvez-vous me dire où je me trompe ?
Merci d'avance.

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)






Avatar
denis P
Salut Pounet,
J'ai ce code (avec API) pour bloquer la fenêtre de l'éditeur VBA
Il bloque la fenêtre vba à minimiser....
amicalement
denis p.



''''''''''''Denis Pasquier 2002'''''''''
Option Explicit

Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function EnableWindow Lib "User32" _
(ByVal hWnd As Long, ByVal bEnable As Long) As Long

Sub BloquerVBE()
With Application.VBE.MainWindow
.Visible = False
.WindowState = 1
EnableWindow FindWindowA("wndclass_desked_gsk", .Caption), 0
End With
End Sub

Sub DébloquerVBE()
With Application.VBE.MainWindow
EnableWindow FindWindowA("wndclass_desked_gsk", .Caption), 1
.Visible = False
.WindowState = 2
End With
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''


"Pounet95" a écrit dans le message de
news:%234Ya%
Re Bonjour,
La solution d'utiliser l'évènement dans le ThisWorkbook fonctionne. Je
n'ai

plus de plantage.
Subsiste tout de même un problème avec l'ouverture du VBE au moment de
l'écriture
de la procédure dans le module. La mise à jour de l'écran est désactivée (
screenupdatingúlse )
mais peut-être que cela ne s'applique qu'aux feuilles de calcul ? C'est
gênant surtout que je ne veux pas
que les utilisateurs bidouillent dans le code et que je n'ai pas envie de
mettre de mot de passe.
Mais s'il faut passer par là, alors ....
Si quelqu'un a une idée pour éviter l'ouverture et l'affichage du VBE, je
suis preneur.

A bientôt de vous lire. Merci d'avance
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

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

Bonjour,

J'ai crié victoire trop tôt ! En fait, cela n'a fonctionné qu'une fois
et


même en recompilant ( à condition de faire au moins une modif ),
il n'y a rien à faire. Je me lance sur la proposition de Denis et vais
voir ce que je peux faire en utilisant l'évènement dans ThisWorkbook
Dans le même style, je n'ai aucun souci pour créer un module standard et
y


recopier les procédures issues du classeur 'père'.
Etant donné les problèmes de reboot, je n'en suis que sur XP Pro. Je
mets


au chaud la précision de Clément sur le pack W2000
et je soumets le problème à ceux qui savent et qui gèrent le parc
logiciel


et informatique.
Je vous tiens au courant.
Bonne journée


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Pounet95" a écrit dans le message de news:
e$$
Bonsoir à toutes et tous,
XL2000 XP Pro et XL2000 W2000 Pro

Je créé via une procédure VBA un classeur avec une 30aine de feuilles.
Chacune de ces feuilles est nommée et doit contenir dans son module de
code :

Private Sub Worksheet_BeforeRightClick( ..... )
' le code
End Sub

Dans un module standard ( module_feuille ) du classeur 'père' (
wbMacro ), j'ai donc écrit l'évènement dans sa totalité
En utilisant la procédure ci-dessous ( issue du site de Frédéric
Sigonneau et adaptée ), je n'obtiens rien d'autre
qu'un plantage d'Excel ;o(((((

wFeuille est le CodeName de la feuille dans laquelle je veux écrire
l'évènement
wbSaisie est le classeur contenant cette feuille
wbMacro le classeur qui génère l'ensemble et qui contient les originaux

Function CopieCodeModuleFeuille(wFeuille As String)
'd'après Frédéric Sigonneau
Dim s As String

With wbMacro.VBProject.VBComponents("Module_feuille").CodeModule
s = .Lines(1, .CountOfLines)
End With

With wbSaisie.VBProject.VBComponents(wFeuille).CodeModule
.AddFromString s
End With
End Function


Pouvez-vous me dire où je me trompe ?
Merci d'avance.

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)









Avatar
denis P
Bouchard ???
APlessis-Bouchard ????
Avatar
Pounet95
Bonjour et Merci,
Le Plessis-Bouchard est une commune de la Région Parisienne, dans le Val
d'Oise (95) exactement.
C'est au nord de Paris à environ un 30aine de km. C'est là que doit se
situer le noeud Telecom pour mon secteur.

Bonne journée.

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"denis P" a écrit dans le message de news:

Bouchard ???
APlessis-Bouchard ????




Avatar
Pounet95
Re, encore et toujours.
Bon, malgré les procédures Bloquer et Débloquer VBE, j'ai toujours le même
résultat
avec affichage du code en fin de procédure. Il se positionne
dans le module Thisworkbook où vient d'être créée la procédure :o(((((
Je désespère d'autant plus que si on créé et on écrit dans un module
standard, pas de VBE affiché ...

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Pounet95" a écrit dans le message de news:
%234Ya%
Re Bonjour,
La solution d'utiliser l'évènement dans le ThisWorkbook fonctionne. Je
n'ai plus de plantage.
Subsiste tout de même un problème avec l'ouverture du VBE au moment de
l'écriture
de la procédure dans le module. La mise à jour de l'écran est désactivée
( screenupdatingúlse )
mais peut-être que cela ne s'applique qu'aux feuilles de calcul ? C'est
gênant surtout que je ne veux pas
que les utilisateurs bidouillent dans le code et que je n'ai pas envie de
mettre de mot de passe.
Mais s'il faut passer par là, alors ....
Si quelqu'un a une idée pour éviter l'ouverture et l'affichage du VBE, je
suis preneur.

A bientôt de vous lire. Merci d'avance
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

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

Bonjour,

J'ai crié victoire trop tôt ! En fait, cela n'a fonctionné qu'une fois et
même en recompilant ( à condition de faire au moins une modif ),
il n'y a rien à faire. Je me lance sur la proposition de Denis et vais
voir ce que je peux faire en utilisant l'évènement dans ThisWorkbook
Dans le même style, je n'ai aucun souci pour créer un module standard et
y recopier les procédures issues du classeur 'père'.
Etant donné les problèmes de reboot, je n'en suis que sur XP Pro. Je
mets au chaud la précision de Clément sur le pack W2000
et je soumets le problème à ceux qui savent et qui gèrent le parc
logiciel et informatique.
Je vous tiens au courant.
Bonne journée


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Pounet95" a écrit dans le message de news:
e$$
Bonsoir à toutes et tous,
XL2000 XP Pro et XL2000 W2000 Pro

Je créé via une procédure VBA un classeur avec une 30aine de feuilles.
Chacune de ces feuilles est nommée et doit contenir dans son module de
code :

Private Sub Worksheet_BeforeRightClick( ..... )
' le code
End Sub

Dans un module standard ( module_feuille ) du classeur 'père' (
wbMacro ), j'ai donc écrit l'évènement dans sa totalité
En utilisant la procédure ci-dessous ( issue du site de Frédéric
Sigonneau et adaptée ), je n'obtiens rien d'autre
qu'un plantage d'Excel ;o(((((

wFeuille est le CodeName de la feuille dans laquelle je veux écrire
l'évènement
wbSaisie est le classeur contenant cette feuille
wbMacro le classeur qui génère l'ensemble et qui contient les originaux

Function CopieCodeModuleFeuille(wFeuille As String)
'd'après Frédéric Sigonneau
Dim s As String

With wbMacro.VBProject.VBComponents("Module_feuille").CodeModule
s = .Lines(1, .CountOfLines)
End With

With wbSaisie.VBProject.VBComponents(wFeuille).CodeModule
.AddFromString s
End With
End Function


Pouvez-vous me dire où je me trompe ?
Merci d'avance.

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)









1 2