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

Créer une procédure évènementielle avec du VBA

7 réponses
Avatar
Pounet95
Bonjour à toutes et tous,
XL2000 et Windows XP Pro , XL2000 et Windows 2000 Pro

A partir d'un menu, je fais appel à un userform pour sélectionner des
paramètres qui feront
qu'un certain nombre de feuilles seront créées.
Pour chacune de ces feuilles, je voudrais créer automatiquement dans le
module de code
correspondant, la procédure Worksheet_BeforeDoubleClick qui contient les 4
lignes ci-dessous?
Pour ce faire, sur le site de Frédéric Sigonneau, j'ai importé la procédure
suivante et qui est
incorporée dans le module de code du userform.


Private Sub Insérer_Onglet(cNom As String, cSite As String, cDiv As String)
On Error GoTo wErr
Sheets("Récapitulatif").Select
Cells.Copy
Sheets.Add Before:=Sheets("Classes et Profils Catalogue")
ActiveSheet.Paste
ActiveSheet.Name = cNom
'écrire l'évènement BeforeDoubleClick
Range("A1").Value = "PAS DE MODIFICATION MANUELLE SUR CETTE FEUILLE !"
Range("B2").Value = cCodeSite
Range("D2").Value = cDiv
Range("A4") = ""

'D'après Jim Rech, mpep
'nécessite une référence à :
'Microsoft Visual Basic For Applications Extensibility 5.3
Dim DebutCode As Long
Dim X As String
Dim Nouveau As String

'le texte du code de l'événement
X = " 'Pliage ou Dépliage façon Affichage Structure Arborescence" &
vbCrLf
X = X & " If Target.Column = 1 Then 'colonne A ( ou 1 )" &
vbCrLf
X = X & " Masquer_Afficher_Structure Target" & vbCrLf
X = X & " End If" & vbCrLf

With
ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
'nom de l'événement, type de module concerné ("Worksheet")
'n° ligne du début de la proc
DebutCode = .CreateEventProc("BeforeDoubleClick", "WorkSheet")
If Err = 0 Then 'insérer le texte du code
.InsertLines DebutCode + 1, X
Else
Err = 0
End If
End With
Exit Sub

wErr:
MsgBox "Erreur : " & Err & vbCrLf & Err.Description
Resume
End Sub


L'exécution de cette procédure affiche la fenêtre VBE dans laquelle la
procédure est effectivement
écrite, mais cela ne va pas plus loin et le message d'erreur ci-dessous est
affiché :

Erreur d'éxécution '-2147417848 (80010108)'
Erreur Automation
L'objet invoqué s'est déconnecté de ses clients

Et là, sur W2000, il y a plantage de l'appli ( fermeture d'Excel ), le
fichier Excel ne peut plus
être éxécuté : accès en lecture seule. Il faut rebooter le micro.
Sur XP, plantage itou, mais pas besoin de reboot et je peux relancer le
fichier !
J'ai essayé de mettre des points d'arrêt, mais ce n'est pas apprécié (
message d'avertissement )
et quand celui-ci est acquitté, j'ai tout de suite l'erreur.


Si quelqu'un a une petite idé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...)

7 réponses

Avatar
Pounet95
Re Bonjour à toutes et tous,
Visiblement ce problème n'inspire personne ! :o(((((
Tant pis, je vais essayer autrement ........

A tout hasard, quelqu'un voit-il un moyen pour qu'à la création d'une
feuille par menu,
il soit possible d'écrire dans l'évènement BeforeDoubleClick l'appel à une
procédure
située dans un module standard du même classeur ?

Merci d'avance pour les idées et/ou réponses

--
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 à toutes et tous,
XL2000 et Windows XP Pro , XL2000 et Windows 2000 Pro

A partir d'un menu, je fais appel à un userform pour sélectionner des
paramètres qui feront
qu'un certain nombre de feuilles seront créées.
Pour chacune de ces feuilles, je voudrais créer automatiquement dans le
module de code
correspondant, la procédure Worksheet_BeforeDoubleClick qui contient les 4
lignes ci-dessous?
Pour ce faire, sur le site de Frédéric Sigonneau, j'ai importé la
procédure suivante et qui est
incorporée dans le module de code du userform.


Private Sub Insérer_Onglet(cNom As String, cSite As String, cDiv As
String)
On Error GoTo wErr
Sheets("Récapitulatif").Select
Cells.Copy
Sheets.Add Before:=Sheets("Classes et Profils Catalogue")
ActiveSheet.Paste
ActiveSheet.Name = cNom
'écrire l'évènement BeforeDoubleClick
Range("A1").Value = "PAS DE MODIFICATION MANUELLE SUR CETTE FEUILLE !"
Range("B2").Value = cCodeSite
Range("D2").Value = cDiv
Range("A4") = ""

'D'après Jim Rech, mpep
'nécessite une référence à :
'Microsoft Visual Basic For Applications Extensibility 5.3
Dim DebutCode As Long
Dim X As String
Dim Nouveau As String

'le texte du code de l'événement
X = " 'Pliage ou Dépliage façon Affichage Structure Arborescence" &
vbCrLf
X = X & " If Target.Column = 1 Then 'colonne A ( ou 1 )" &
vbCrLf
X = X & " Masquer_Afficher_Structure Target" & vbCrLf
X = X & " End If" & vbCrLf

With
ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
'nom de l'événement, type de module concerné ("Worksheet")
'n° ligne du début de la proc
DebutCode = .CreateEventProc("BeforeDoubleClick", "WorkSheet")
If Err = 0 Then 'insérer le texte du code
.InsertLines DebutCode + 1, X
Else
Err = 0
End If
End With
Exit Sub

wErr:
MsgBox "Erreur : " & Err & vbCrLf & Err.Description
Resume
End Sub


L'exécution de cette procédure affiche la fenêtre VBE dans laquelle la
procédure est effectivement
écrite, mais cela ne va pas plus loin et le message d'erreur ci-dessous
est affiché :

Erreur d'éxécution '-2147417848 (80010108)'
Erreur Automation
L'objet invoqué s'est déconnecté de ses clients

Et là, sur W2000, il y a plantage de l'appli ( fermeture d'Excel ), le
fichier Excel ne peut plus
être éxécuté : accès en lecture seule. Il faut rebooter le micro.
Sur XP, plantage itou, mais pas besoin de reboot et je peux relancer le
fichier !
J'ai essayé de mettre des points d'arrêt, mais ce n'est pas apprécié (
message d'avertissement )
et quand celui-ci est acquitté, j'ai tout de suite l'erreur.


Si quelqu'un a une petite idé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...)



Avatar
Alain CROS
Bonjour.

Le code fonctionne parfaitement chez moi.
Aucune référence n'est nécessaire.
Je rajouterais une ligne avant le exit sub:
Application.VBE.MainWindow.Visible = False
Pour la nouvelle question, je ne comprends pas, c'est déjà ce que tu fais avec l'appel à :
Masquer_Afficher_Structure Target

Alain CROS

"Pounet95" a écrit dans le message de news:
Re Bonjour à toutes et tous,
Visiblement ce problème n'inspire personne ! :o(((((
Tant pis, je vais essayer autrement ........

A tout hasard, quelqu'un voit-il un moyen pour qu'à la création d'une
feuille par menu,
il soit possible d'écrire dans l'évènement BeforeDoubleClick l'appel à une
procédure
située dans un module standard du même classeur ?

Merci d'avance pour les idées et/ou réponses

--
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 à toutes et tous,
XL2000 et Windows XP Pro , XL2000 et Windows 2000 Pro

A partir d'un menu, je fais appel à un userform pour sélectionner des
paramètres qui feront
qu'un certain nombre de feuilles seront créées.
Pour chacune de ces feuilles, je voudrais créer automatiquement dans le
module de code
correspondant, la procédure Worksheet_BeforeDoubleClick qui contient les 4
lignes ci-dessous?
Pour ce faire, sur le site de Frédéric Sigonneau, j'ai importé la
procédure suivante et qui est
incorporée dans le module de code du userform.


Private Sub Insérer_Onglet(cNom As String, cSite As String, cDiv As
String)
On Error GoTo wErr
Sheets("Récapitulatif").Select
Cells.Copy
Sheets.Add Before:=Sheets("Classes et Profils Catalogue")
ActiveSheet.Paste
ActiveSheet.Name = cNom
'écrire l'évènement BeforeDoubleClick
Range("A1").Value = "PAS DE MODIFICATION MANUELLE SUR CETTE FEUILLE !"
Range("B2").Value = cCodeSite
Range("D2").Value = cDiv
Range("A4") = ""

'D'après Jim Rech, mpep
'nécessite une référence à :
'Microsoft Visual Basic For Applications Extensibility 5.3
Dim DebutCode As Long
Dim X As String
Dim Nouveau As String

'le texte du code de l'événement
X = " 'Pliage ou Dépliage façon Affichage Structure Arborescence" &
vbCrLf
X = X & " If Target.Column = 1 Then 'colonne A ( ou 1 )" &
vbCrLf
X = X & " Masquer_Afficher_Structure Target" & vbCrLf
X = X & " End If" & vbCrLf

With
ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
'nom de l'événement, type de module concerné ("Worksheet")
'n° ligne du début de la proc
DebutCode = .CreateEventProc("BeforeDoubleClick", "WorkSheet")
If Err = 0 Then 'insérer le texte du code
.InsertLines DebutCode + 1, X
Else
Err = 0
End If
End With
Exit Sub

wErr:
MsgBox "Erreur : " & Err & vbCrLf & Err.Description
Resume
End Sub


L'exécution de cette procédure affiche la fenêtre VBE dans laquelle la
procédure est effectivement
écrite, mais cela ne va pas plus loin et le message d'erreur ci-dessous
est affiché :

Erreur d'éxécution '-2147417848 (80010108)'
Erreur Automation
L'objet invoqué s'est déconnecté de ses clients

Et là, sur W2000, il y a plantage de l'appli ( fermeture d'Excel ), le
fichier Excel ne peut plus
être éxécuté : accès en lecture seule. Il faut rebooter le micro.
Sur XP, plantage itou, mais pas besoin de reboot et je peux relancer le
fichier !
J'ai essayé de mettre des points d'arrêt, mais ce n'est pas apprécié (
message d'avertissement )
et quand celui-ci est acquitté, j'ai tout de suite l'erreur.


Si quelqu'un a une petite idé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...)






Avatar
Pounet95
Bonsoir,
Oui, effectivement, le code génère l'appel à la procédure.
Le but de ma question est de générer ce code autrement que par le moyen
que j'ai décrit : copie à partir d'un autre classeur par exemple ou créer
les feuilles directement
en espérant que les utilisateurs ne les suppriment pas, ou encore par tout
autre moyen.

Sinon, effectivement cela fonctionne à condition de ne le faire qu'une fois
et en restant dans le même module.
Dès que l'on met dans une boucle pour insérer plusieurs feuilles, il y a
plantage.

Voici un exemple simple qui ne contient que la macro mais avec une boucle de
... 2 !!

http://cjoint.com/?dDuWXV8raJ

--
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...)

"Alain CROS" a écrit dans le message de news:

Bonjour.

Le code fonctionne parfaitement chez moi.
Aucune référence n'est nécessaire.
Je rajouterais une ligne avant le exit sub:
Application.VBE.MainWindow.Visible = False
Pour la nouvelle question, je ne comprends pas, c'est déjà ce que tu fais
avec l'appel à :
Masquer_Afficher_Structure Target

Alain CROS

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

Re Bonjour à toutes et tous,
Visiblement ce problème n'inspire personne ! :o(((((
Tant pis, je vais essayer autrement ........

A tout hasard, quelqu'un voit-il un moyen pour qu'à la création d'une
feuille par menu,
il soit possible d'écrire dans l'évènement BeforeDoubleClick l'appel à
une
procédure
située dans un module standard du même classeur ?

Merci d'avance pour les idées et/ou réponses

--
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 à toutes et tous,
XL2000 et Windows XP Pro , XL2000 et Windows 2000 Pro

A partir d'un menu, je fais appel à un userform pour sélectionner des
paramètres qui feront
qu'un certain nombre de feuilles seront créées.
Pour chacune de ces feuilles, je voudrais créer automatiquement dans le
module de code
correspondant, la procédure Worksheet_BeforeDoubleClick qui contient
les 4
lignes ci-dessous?
Pour ce faire, sur le site de Frédéric Sigonneau, j'ai importé la
procédure suivante et qui est
incorporée dans le module de code du userform.


Private Sub Insérer_Onglet(cNom As String, cSite As String, cDiv As
String)
On Error GoTo wErr
Sheets("Récapitulatif").Select
Cells.Copy
Sheets.Add Before:=Sheets("Classes et Profils Catalogue")
ActiveSheet.Paste
ActiveSheet.Name = cNom
'écrire l'évènement BeforeDoubleClick
Range("A1").Value = "PAS DE MODIFICATION MANUELLE SUR CETTE FEUILLE
!"
Range("B2").Value = cCodeSite
Range("D2").Value = cDiv
Range("A4") = ""

'D'après Jim Rech, mpep
'nécessite une référence à :
'Microsoft Visual Basic For Applications Extensibility 5.3
Dim DebutCode As Long
Dim X As String
Dim Nouveau As String

'le texte du code de l'événement
X = " 'Pliage ou Dépliage façon Affichage Structure Arborescence"
&
vbCrLf
X = X & " If Target.Column = 1 Then 'colonne A ( ou 1 )" &
vbCrLf
X = X & " Masquer_Afficher_Structure Target" & vbCrLf
X = X & " End If" & vbCrLf

With
ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
'nom de l'événement, type de module concerné ("Worksheet")
'n° ligne du début de la proc
DebutCode = .CreateEventProc("BeforeDoubleClick", "WorkSheet")
If Err = 0 Then 'insérer le texte du code
.InsertLines DebutCode + 1, X
Else
Err = 0
End If
End With
Exit Sub

wErr:
MsgBox "Erreur : " & Err & vbCrLf & Err.Description
Resume
End Sub


L'exécution de cette procédure affiche la fenêtre VBE dans laquelle la
procédure est effectivement
écrite, mais cela ne va pas plus loin et le message d'erreur ci-dessous
est affiché :

Erreur d'éxécution '-2147417848 (80010108)'
Erreur Automation
L'objet invoqué s'est déconnecté de ses clients

Et là, sur W2000, il y a plantage de l'appli ( fermeture d'Excel ), le
fichier Excel ne peut plus
être éxécuté : accès en lecture seule. Il faut rebooter le micro.
Sur XP, plantage itou, mais pas besoin de reboot et je peux relancer le
fichier !
J'ai essayé de mettre des points d'arrêt, mais ce n'est pas apprécié (
message d'avertissement )
et quand celui-ci est acquitté, j'ai tout de suite l'erreur.


Si quelqu'un a une petite idé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...)












Avatar
Alain CROS
Bonjour.

C'est le On Error Resume Next qui cachait l'erreur.
Essayer comme ça.

Sub AjouteProc()
For i = 1 To 2
Sheets.Add before:=Sheets(Sheets.Count)

'D'après Jim Rech, mpep
Dim DebutCode As Long
Dim X As String
Dim Nouveau As String

'le texte du code de l'événement
X = " 'Pliage ou Dépliage façon Affichage Structure
Arborescence" & vbCrLf
X = X & " If Target.Column = 1 Then 'colonne
A ( ou 1 )" & vbCrLf
X = X & " Masquer_Afficher_Structure Target" &
vbCrLf
X = X & " End If" & vbCrLf

With ActiveWorkbook.VBProject
With .VBComponents(.VBComponents.Count).CodeModule
'nom de l'événement, type de module concerné
("Worksheet")
'n° ligne du début de la proc
DebutCode = .CreateEventProc
("BeforeDoubleClick", "Worksheet")
.InsertLines DebutCode + 1, X
End With
End With
Next i
Application.VBE.MainWindow.Visible = False
End Sub

Alain CROS

-----Original Message-----
Bonsoir,
Oui, effectivement, le code génère l'appel à la procédure.
Le but de ma question est de générer ce code autrement
que par le moyen

que j'ai décrit : copie à partir d'un autre classeur par
exemple ou créer

les feuilles directement
en espérant que les utilisateurs ne les suppriment pas,
ou encore par tout

autre moyen.

Sinon, effectivement cela fonctionne à condition de ne le
faire qu'une fois

et en restant dans le même module.
Dès que l'on met dans une boucle pour insérer plusieurs
feuilles, il y a

plantage.

Voici un exemple simple qui ne contient que la macro mais
avec une boucle de

.... 2 !!

http://cjoint.com/?dDuWXV8raJ

--
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...)

"Alain CROS" a écrit dans le message de
news:


Bonjour.

Le code fonctionne parfaitement chez moi.
Aucune référence n'est nécessaire.
Je rajouterais une ligne avant le exit sub:
Application.VBE.MainWindow.Visible = False
Pour la nouvelle question, je ne comprends pas, c'est
déjà ce que tu fais


avec l'appel à :
Masquer_Afficher_Structure Target

Alain CROS

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



Re Bonjour à toutes et tous,
Visiblement ce problème n'inspire personne ! :o(((((
Tant pis, je vais essayer autrement ........

A tout hasard, quelqu'un voit-il un moyen pour qu'à la
création d'une



feuille par menu,
il soit possible d'écrire dans l'évènement
BeforeDoubleClick l'appel à



une
procédure
située dans un module standard du même classeur ?

Merci d'avance pour les idées et/ou réponses

--
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 à toutes et tous,
XL2000 et Windows XP Pro , XL2000 et Windows 2000
Pro





A partir d'un menu, je fais appel à un userform pour
sélectionner des




paramètres qui feront
qu'un certain nombre de feuilles seront créées.
Pour chacune de ces feuilles, je voudrais créer
automatiquement dans le




module de code
correspondant, la procédure
Worksheet_BeforeDoubleClick qui contient




les 4
lignes ci-dessous?
Pour ce faire, sur le site de Frédéric Sigonneau,
j'ai importé la




procédure suivante et qui est
incorporée dans le module de code du userform.


Private Sub Insérer_Onglet(cNom As String, cSite As
String, cDiv As




String)
On Error GoTo wErr
Sheets("Récapitulatif").Select
Cells.Copy
Sheets.Add Before:=Sheets("Classes et Profils
Catalogue")




ActiveSheet.Paste
ActiveSheet.Name = cNom
'écrire l'évènement BeforeDoubleClick
Range("A1").Value = "PAS DE MODIFICATION MANUELLE
SUR CETTE FEUILLE




!"
Range("B2").Value = cCodeSite
Range("D2").Value = cDiv
Range("A4") = ""

'D'après Jim Rech, mpep
'nécessite une référence à :
'Microsoft Visual Basic For Applications
Extensibility 5.3




Dim DebutCode As Long
Dim X As String
Dim Nouveau As String

'le texte du code de l'événement
X = " 'Pliage ou Dépliage façon Affichage
Structure Arborescence"




&
vbCrLf
X = X & " If Target.Column = 1
Then 'colonne A ( ou 1 )" &




vbCrLf
X = X & " Masquer_Afficher_Structure
Target" & vbCrLf




X = X & " End If" & vbCrLf

With
ActiveWorkbook.VBProject.VBComponents
(ActiveSheet.CodeName).CodeModule




'nom de l'événement, type de module concerné
("Worksheet")




'n° ligne du début de la proc
DebutCode = .CreateEventProc
("BeforeDoubleClick", "WorkSheet")




If Err = 0 Then 'insérer le texte du code
.InsertLines DebutCode + 1, X
Else
Err = 0
End If
End With
Exit Sub

wErr:
MsgBox "Erreur : " & Err & vbCrLf &
Err.Description




Resume
End Sub


L'exécution de cette procédure affiche la fenêtre
VBE dans laquelle la




procédure est effectivement
écrite, mais cela ne va pas plus loin et le message
d'erreur ci-dessous




est affiché :

Erreur d'éxécution '-2147417848 (80010108)'
Erreur Automation
L'objet invoqué s'est déconnecté de ses clients

Et là, sur W2000, il y a plantage de l'appli (
fermeture d'Excel ), le




fichier Excel ne peut plus
être éxécuté : accès en lecture seule. Il faut
rebooter le micro.




Sur XP, plantage itou, mais pas besoin de reboot et
je peux relancer le




fichier !
J'ai essayé de mettre des points d'arrêt, mais ce
n'est pas apprécié (




message d'avertissement )
et quand celui-ci est acquitté, j'ai tout de suite
l'erreur.






Si quelqu'un a une petite idé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...)










.






Avatar
Pounet95
Bonjour et merci

Ok ça fonctionne .... mais seul.
Il ne faut pas que la procédure soit appelée par une autre sinon on se
retrouve
dans la même situation. A n'y rien comprendre.
De plus, la gestion de l'erreur avait été ajoutée justement pour essayer de
voir
où ça coinçait !
Re merci
--
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...)

"Alain CROS" a écrit dans le message de news:
0e3901c5349e$fcb3b500$
Bonjour.

C'est le On Error Resume Next qui cachait l'erreur.
Essayer comme ça.

Sub AjouteProc()
For i = 1 To 2
Sheets.Add before:=Sheets(Sheets.Count)

'D'après Jim Rech, mpep
Dim DebutCode As Long
Dim X As String
Dim Nouveau As String

'le texte du code de l'événement
X = " 'Pliage ou Dépliage façon Affichage Structure
Arborescence" & vbCrLf
X = X & " If Target.Column = 1 Then 'colonne
A ( ou 1 )" & vbCrLf
X = X & " Masquer_Afficher_Structure Target" &
vbCrLf
X = X & " End If" & vbCrLf

With ActiveWorkbook.VBProject
With .VBComponents(.VBComponents.Count).CodeModule
'nom de l'événement, type de module concerné
("Worksheet")
'n° ligne du début de la proc
DebutCode = .CreateEventProc
("BeforeDoubleClick", "Worksheet")
.InsertLines DebutCode + 1, X
End With
End With
Next i
Application.VBE.MainWindow.Visible = False
End Sub

Alain CROS

-----Original Message-----
Bonsoir,
Oui, effectivement, le code génère l'appel à la procédure.
Le but de ma question est de générer ce code autrement
que par le moyen

que j'ai décrit : copie à partir d'un autre classeur par
exemple ou créer

les feuilles directement
en espérant que les utilisateurs ne les suppriment pas,
ou encore par tout

autre moyen.

Sinon, effectivement cela fonctionne à condition de ne le
faire qu'une fois

et en restant dans le même module.
Dès que l'on met dans une boucle pour insérer plusieurs
feuilles, il y a

plantage.

Voici un exemple simple qui ne contient que la macro mais
avec une boucle de

.... 2 !!

http://cjoint.com/?dDuWXV8raJ

--
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...)

"Alain CROS" a écrit dans le message de
news:


Bonjour.

Le code fonctionne parfaitement chez moi.
Aucune référence n'est nécessaire.
Je rajouterais une ligne avant le exit sub:
Application.VBE.MainWindow.Visible = False
Pour la nouvelle question, je ne comprends pas, c'est
déjà ce que tu fais


avec l'appel à :
Masquer_Afficher_Structure Target

Alain CROS

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



Re Bonjour à toutes et tous,
Visiblement ce problème n'inspire personne ! :o(((((
Tant pis, je vais essayer autrement ........

A tout hasard, quelqu'un voit-il un moyen pour qu'à la
création d'une



feuille par menu,
il soit possible d'écrire dans l'évènement
BeforeDoubleClick l'appel à



une
procédure
située dans un module standard du même classeur ?

Merci d'avance pour les idées et/ou réponses

--
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 à toutes et tous,
XL2000 et Windows XP Pro , XL2000 et Windows 2000
Pro





A partir d'un menu, je fais appel à un userform pour
sélectionner des




paramètres qui feront
qu'un certain nombre de feuilles seront créées.
Pour chacune de ces feuilles, je voudrais créer
automatiquement dans le




module de code
correspondant, la procédure
Worksheet_BeforeDoubleClick qui contient




les 4
lignes ci-dessous?
Pour ce faire, sur le site de Frédéric Sigonneau,
j'ai importé la




procédure suivante et qui est
incorporée dans le module de code du userform.


Private Sub Insérer_Onglet(cNom As String, cSite As
String, cDiv As




String)
On Error GoTo wErr
Sheets("Récapitulatif").Select
Cells.Copy
Sheets.Add Before:=Sheets("Classes et Profils
Catalogue")




ActiveSheet.Paste
ActiveSheet.Name = cNom
'écrire l'évènement BeforeDoubleClick
Range("A1").Value = "PAS DE MODIFICATION MANUELLE
SUR CETTE FEUILLE




!"
Range("B2").Value = cCodeSite
Range("D2").Value = cDiv
Range("A4") = ""

'D'après Jim Rech, mpep
'nécessite une référence à :
'Microsoft Visual Basic For Applications
Extensibility 5.3




Dim DebutCode As Long
Dim X As String
Dim Nouveau As String

'le texte du code de l'événement
X = " 'Pliage ou Dépliage façon Affichage
Structure Arborescence"




&
vbCrLf
X = X & " If Target.Column = 1
Then 'colonne A ( ou 1 )" &




vbCrLf
X = X & " Masquer_Afficher_Structure
Target" & vbCrLf




X = X & " End If" & vbCrLf

With
ActiveWorkbook.VBProject.VBComponents
(ActiveSheet.CodeName).CodeModule




'nom de l'événement, type de module concerné
("Worksheet")




'n° ligne du début de la proc
DebutCode = .CreateEventProc
("BeforeDoubleClick", "WorkSheet")




If Err = 0 Then 'insérer le texte du code
.InsertLines DebutCode + 1, X
Else
Err = 0
End If
End With
Exit Sub

wErr:
MsgBox "Erreur : " & Err & vbCrLf &
Err.Description




Resume
End Sub


L'exécution de cette procédure affiche la fenêtre
VBE dans laquelle la




procédure est effectivement
écrite, mais cela ne va pas plus loin et le message
d'erreur ci-dessous




est affiché :

Erreur d'éxécution '-2147417848 (80010108)'
Erreur Automation
L'objet invoqué s'est déconnecté de ses clients

Et là, sur W2000, il y a plantage de l'appli (
fermeture d'Excel ), le




fichier Excel ne peut plus
être éxécuté : accès en lecture seule. Il faut
rebooter le micro.




Sur XP, plantage itou, mais pas besoin de reboot et
je peux relancer le




fichier !
J'ai essayé de mettre des points d'arrêt, mais ce
n'est pas apprécié (




message d'avertissement )
et quand celui-ci est acquitté, j'ai tout de suite
l'erreur.






Si quelqu'un a une petite idé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...)










.






Avatar
Alain CROS
Bonjour.

Exemple là :
http://cjoint.com/?dEpYvigX8X
Une nouvelle barre d'outils permet de lancer les procs.

Alain CROS.

"Pounet95" a écrit dans le message de news: uOBP#
Bonjour et merci

Ok ça fonctionne .... mais seul.
Il ne faut pas que la procédure soit appelée par une autre sinon on se
retrouve
dans la même situation. A n'y rien comprendre.
De plus, la gestion de l'erreur avait été ajoutée justement pour essayer de
voir
où ça coinçait !
Re merci
--
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
Pounet95
Bonsoir,
Merci beaucoup.
J'ai testé en mettant le compteur à 15 et aucun problème.
J'incorpore dans mon fichier juste après le match de foot.

--
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...)

"Alain CROS" a écrit dans le message de news:
e9OZe%
Bonjour.

Exemple là :
http://cjoint.com/?dEpYvigX8X
Une nouvelle barre d'outils permet de lancer les procs.

Alain CROS.

"Pounet95" a écrit dans le message de news:
uOBP#
Bonjour et merci

Ok ça fonctionne .... mais seul.
Il ne faut pas que la procédure soit appelée par une autre sinon on se
retrouve
dans la même situation. A n'y rien comprendre.
De plus, la gestion de l'erreur avait été ajoutée justement pour essayer
de
voir
où ça coinçait !
Re merci
--
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...)