OVH Cloud OVH Cloud

saisie d'une macro en VB lors de la création d'une nouvelle feuille

12 réponses
Avatar
FRVN
Bonjour =E0 tous,

J'ai encore une question. J'ai une application qui cr=E9=E9=20
et d=E9truit des feuilles de calcul. Lors de la cr=E9ation,=20
je souhaite lui affect=E9 du code pour Worksheet_Activate()=20
et Worksheet_Deactivate() afin d'afficher ou non=20
certaines barres d'outils en fonction du nom de la=20
feuille. Le code en lui m=EAme ne me pose pas de probl=E8me=20
mais c'est la saisie du code =E0 la cr=E9ation de la feuille=20
que je n'ai pas trouv=E9. J'ai bien trouv=E9 un site avec=20
l'ajout d'un module lors de la cr=E9ation d'un classeur=20
(merci J@C) mais pas pour mon cas particulier.

Merci =E0 tous pour votre aide

FRVN

10 réponses

1 2
Avatar
papou
Bonjour
Si j'ai bien compris ?
Voir l'évènement Workbook_NewSheet
Cordialement
Pascal

"FRVN" a écrit dans le message de
news:4d7701c473cf$358bdec0$
Bonjour à tous,

J'ai encore une question. J'ai une application qui créé
et détruit des feuilles de calcul. Lors de la création,
je souhaite lui affecté du code pour Worksheet_Activate()
et Worksheet_Deactivate() afin d'afficher ou non
certaines barres d'outils en fonction du nom de la
feuille. Le code en lui même ne me pose pas de problème
mais c'est la saisie du code à la création de la feuille
que je n'ai pas trouvé. J'ai bien trouvé un site avec
l'ajout d'un module lors de la création d'un classeur
(merci ) mais pas pour mon cas particulier.

Merci à tous pour votre aide

FRVN
Avatar
frvn
Bonjour Pascal

là je ne vois pas trop, je vais essayer d'etre plus
clair, j'ai le code suivant pour créer une feuille
Sheets.Add Type:=xlWorksheet, before:=Sheets("Questions
niv 1")
ActiveSheet.Name = "Tri"
Je voudrai lui indiquer en VB lors de la création :
un Worksheet_Activate() et un Worksheet_Deactivate() avec
certaines lignes de code

J'espère avoir été clair
Merci pour les réponses.

frvn


-----Message d'origine-----
Bonjour
Si j'ai bien compris ?
Voir l'évènement Workbook_NewSheet
Cordialement
Pascal

"FRVN" a écrit
dans le message de

news:4d7701c473cf$358bdec0$
Bonjour à tous,

J'ai encore une question. J'ai une application qui créé
et détruit des feuilles de calcul. Lors de la création,
je souhaite lui affecté du code pour Worksheet_Activate()
et Worksheet_Deactivate() afin d'afficher ou non
certaines barres d'outils en fonction du nom de la
feuille. Le code en lui même ne me pose pas de problème
mais c'est la saisie du code à la création de la feuille
que je n'ai pas trouvé. J'ai bien trouvé un site avec
l'ajout d'un module lors de la création d'un classeur
(merci ) mais pas pour mon cas particulier.

Merci à tous pour votre aide

FRVN


.



Avatar
papou
re
Dim DebLigne As Long
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
DebLigne = .CreateEventProc("Activate", "Worksheet") + 1
.InsertLines DebLigne, "Msgbox ""Je viens d'être créé"",vbOkOnly"
.InsertLines DebLigne + 1, "Msgbox ""Ca marche ?"",vbOkOnly"
End With

Cordialement
Pascal

"frvn" a écrit dans le message de
news:4d0e01c473d1$85330910$
Bonjour Pascal

là je ne vois pas trop, je vais essayer d'etre plus
clair, j'ai le code suivant pour créer une feuille
Sheets.Add Type:=xlWorksheet, before:=Sheets("Questions
niv 1")
ActiveSheet.Name = "Tri"
Je voudrai lui indiquer en VB lors de la création :
un Worksheet_Activate() et un Worksheet_Deactivate() avec
certaines lignes de code

J'espère avoir été clair
Merci pour les réponses.

frvn


-----Message d'origine-----
Bonjour
Si j'ai bien compris ?
Voir l'évènement Workbook_NewSheet
Cordialement
Pascal

"FRVN" a écrit
dans le message de

news:4d7701c473cf$358bdec0$
Bonjour à tous,

J'ai encore une question. J'ai une application qui créé
et détruit des feuilles de calcul. Lors de la création,
je souhaite lui affecté du code pour Worksheet_Activate()
et Worksheet_Deactivate() afin d'afficher ou non
certaines barres d'outils en fonction du nom de la
feuille. Le code en lui même ne me pose pas de problème
mais c'est la saisie du code à la création de la feuille
que je n'ai pas trouvé. J'ai bien trouvé un site avec
l'ajout d'un module lors de la création d'un classeur
(merci ) mais pas pour mon cas particulier.

Merci à tous pour votre aide

FRVN


.



Avatar
Vincent.
Bonjour !
Une autre solution que celle qui t'a été proposée par
Papou, tu peux stocker le code a placé dans tes feuilles
nouvellement créées dans un fichier txt (ça doit marcher
avec des .bas ou .frm, mais j'ai pas testé, et j'ai la
flemme de la faire)

Sub zaza()
Set nf = ThisWorkbook.Worksheets.Add
Application.ScreenUpdating = False
Application.VBE.MainWindow.Visible = True
ThisWorkbook.VBProject.VBComponents
(nf.CodeName).CodeModule.AddFromFile "C:test.txt"
Application.VBE.MainWindow.Visible = False
Application.ScreenUpdating = True
End Sub

La fenêtre VBE doit être ouverte pour que ça marche même
si je vois pas d'explication.
Le code intègre dans le code de la feuille qui vient
d'être créée le texte qu'il est allé chercher dans
test.xls situé sur la racine du C:, charge à toi de
mettre le fichier txt où tu le souhaites et surtout d'y
mettre dedans du code commençant par exemple par
Worksheet_Activate ! ;-)
Je pense que tout ça doit être utile non ?
A+

Vincent.

-----Message d'origine-----
Bonjour à tous,

J'ai encore une question. J'ai une application qui créé
et détruit des feuilles de calcul. Lors de la création,
je souhaite lui affecté du code pour Worksheet_Activate()
et Worksheet_Deactivate() afin d'afficher ou non
certaines barres d'outils en fonction du nom de la
feuille. Le code en lui même ne me pose pas de problème
mais c'est la saisie du code à la création de la feuille
que je n'ai pas trouvé. J'ai bien trouvé un site avec
l'ajout d'un module lors de la création d'un classeur
(merci ) mais pas pour mon cas particulier.

Merci à tous pour votre aide

FRVN
.
²


Avatar
Vincent.
Re !
j'oubliais : faudra tout de même penser à remplacer
Thisworkbook par le classeur à traiter (c t évident,
mais...)
A+
-----Message d'origine-----
Bonjour à tous,

J'ai encore une question. J'ai une application qui créé
et détruit des feuilles de calcul. Lors de la création,
je souhaite lui affecté du code pour Worksheet_Activate()
et Worksheet_Deactivate() afin d'afficher ou non
certaines barres d'outils en fonction du nom de la
feuille. Le code en lui même ne me pose pas de problème
mais c'est la saisie du code à la création de la feuille
que je n'ai pas trouvé. J'ai bien trouvé un site avec
l'ajout d'un module lors de la création d'un classeur
(merci ) mais pas pour mon cas particulier.

Merci à tous pour votre aide

FRVN
.



Avatar
FRVN
rebonjour,


Merci pour tes réponses.
Je dois etre vraiment pas bon car meme avec ça, je n'y
arrive pas. voici le code complet de test :

Sub create()

Dim DebLigne As Long

On Error Resume Next
x = Sheets("Tri").[A1]
If Err.Number <> 0 Then
Sheets.Add Type:=xlWorksheet, before:¬tiveSheet
ActiveSheet.Name = "Tri"
End If

With ActiveWorkbook.VBProject.VBComponents(Tri).CodeModule
DebLigne = .CreateEventProc("Activate", "Worksheet")
+ 1
.InsertLines DebLigne, "Msgbox ""Je viens d'être
créé"",vbOkOnly"
.InsertLines DebLigne + 1, "Msgbox ""Ca
marche ?"",vbOkOnly"
End With

End Sub

Si j'utilise que ton code : pas de problème. Si je ne
nomme pas la feuille avant : pas de problème mais dès
lors que je donne un nom : c'est foutu, il ne fait plus
rien. Désolé ! peux tu vérifier mon module ?

Merci d'avance et désolé de t'embeter encore

FRVN

-----Message d'origine-----
re
Dim DebLigne As Long
With ActiveWorkbook.VBProject.VBComponents
(ActiveSheet.Name).CodeModule

DebLigne = .CreateEventProc("Activate", "Worksheet")
+ 1

.InsertLines DebLigne, "Msgbox ""Je viens d'être
créé"",vbOkOnly"

.InsertLines DebLigne + 1, "Msgbox ""Ca
marche ?"",vbOkOnly"

End With

Cordialement
Pascal

"frvn" a écrit
dans le message de

news:4d0e01c473d1$85330910$
Bonjour Pascal

là je ne vois pas trop, je vais essayer d'etre plus
clair, j'ai le code suivant pour créer une feuille
Sheets.Add Type:=xlWorksheet, before:=Sheets("Questions
niv 1")
ActiveSheet.Name = "Tri"
Je voudrai lui indiquer en VB lors de la création :
un Worksheet_Activate() et un Worksheet_Deactivate() avec
certaines lignes de code

J'espère avoir été clair
Merci pour les réponses.

frvn


-----Message d'origine-----
Bonjour
Si j'ai bien compris ?
Voir l'évènement Workbook_NewSheet
Cordialement
Pascal

"FRVN" a écrit
dans le message de

news:4d7701c473cf$358bdec0$
Bonjour à tous,

J'ai encore une question. J'ai une application qui créé
et détruit des feuilles de calcul. Lors de la création,
je souhaite lui affecté du code pour Worksheet_Activate
()


et Worksheet_Deactivate() afin d'afficher ou non
certaines barres d'outils en fonction du nom de la
feuille. Le code en lui même ne me pose pas de problème
mais c'est la saisie du code à la création de la feuille
que je n'ai pas trouvé. J'ai bien trouvé un site avec
l'ajout d'un module lors de la création d'un classeur
(merci ) mais pas pour mon cas particulier.

Merci à tous pour votre aide

FRVN


.




.




Avatar
papou
With ActiveWorkbook.VBProject.VBComponents(Tri)
il faut ajouter les guillemets "" soit donc

With ActiveWorkbook.VBProject.VBComponents("Tri")

Cordialement
Pascal

"FRVN" a écrit dans le message de
news:4e3d01c473db$330c6960$
rebonjour,


Merci pour tes réponses.
Je dois etre vraiment pas bon car meme avec ça, je n'y
arrive pas. voici le code complet de test :

Sub create()

Dim DebLigne As Long

On Error Resume Next
x = Sheets("Tri").[A1]
If Err.Number <> 0 Then
Sheets.Add Type:=xlWorksheet, before:¬tiveSheet
ActiveSheet.Name = "Tri"
End If

With ActiveWorkbook.VBProject.VBComponents(Tri).CodeModule
DebLigne = .CreateEventProc("Activate", "Worksheet")
+ 1
.InsertLines DebLigne, "Msgbox ""Je viens d'être
créé"",vbOkOnly"
.InsertLines DebLigne + 1, "Msgbox ""Ca
marche ?"",vbOkOnly"
End With

End Sub

Si j'utilise que ton code : pas de problème. Si je ne
nomme pas la feuille avant : pas de problème mais dès
lors que je donne un nom : c'est foutu, il ne fait plus
rien. Désolé ! peux tu vérifier mon module ?

Merci d'avance et désolé de t'embeter encore

FRVN

-----Message d'origine-----
re
Dim DebLigne As Long
With ActiveWorkbook.VBProject.VBComponents
(ActiveSheet.Name).CodeModule

DebLigne = .CreateEventProc("Activate", "Worksheet")
+ 1

.InsertLines DebLigne, "Msgbox ""Je viens d'être
créé"",vbOkOnly"

.InsertLines DebLigne + 1, "Msgbox ""Ca
marche ?"",vbOkOnly"

End With

Cordialement
Pascal

"frvn" a écrit
dans le message de

news:4d0e01c473d1$85330910$
Bonjour Pascal

là je ne vois pas trop, je vais essayer d'etre plus
clair, j'ai le code suivant pour créer une feuille
Sheets.Add Type:=xlWorksheet, before:=Sheets("Questions
niv 1")
ActiveSheet.Name = "Tri"
Je voudrai lui indiquer en VB lors de la création :
un Worksheet_Activate() et un Worksheet_Deactivate() avec
certaines lignes de code

J'espère avoir été clair
Merci pour les réponses.

frvn


-----Message d'origine-----
Bonjour
Si j'ai bien compris ?
Voir l'évènement Workbook_NewSheet
Cordialement
Pascal

"FRVN" a écrit
dans le message de

news:4d7701c473cf$358bdec0$
Bonjour à tous,

J'ai encore une question. J'ai une application qui créé
et détruit des feuilles de calcul. Lors de la création,
je souhaite lui affecté du code pour Worksheet_Activate
()


et Worksheet_Deactivate() afin d'afficher ou non
certaines barres d'outils en fonction du nom de la
feuille. Le code en lui même ne me pose pas de problème
mais c'est la saisie du code à la création de la feuille
que je n'ai pas trouvé. J'ai bien trouvé un site avec
l'ajout d'un module lors de la création d'un classeur
(merci ) mais pas pour mon cas particulier.

Merci à tous pour votre aide

FRVN


.




.




Avatar
FRVN
Re

Merci mais meme avec ActiveWorkbook.VBProject.VBComponents
("Tri")

il ne veut pas. Dés lors que je lui spécifie un nom, il
refuse. ça fonctionne chez toi ?

Désolé encore pour le dérangement

FRVN
-----Message d'origine-----
With ActiveWorkbook.VBProject.VBComponents(Tri)
il faut ajouter les guillemets "" soit donc

With ActiveWorkbook.VBProject.VBComponents("Tri")

Cordialement
Pascal

"FRVN" a écrit
dans le message de

news:4e3d01c473db$330c6960$
rebonjour,


Merci pour tes réponses.
Je dois etre vraiment pas bon car meme avec ça, je n'y
arrive pas. voici le code complet de test :

Sub create()

Dim DebLigne As Long

On Error Resume Next
x = Sheets("Tri").[A1]
If Err.Number <> 0 Then
Sheets.Add Type:=xlWorksheet, before:¬tiveSheet
ActiveSheet.Name = "Tri"
End If

With ActiveWorkbook.VBProject.VBComponents
(Tri).CodeModule

DebLigne = .CreateEventProc("Activate", "Worksheet")
+ 1
.InsertLines DebLigne, "Msgbox ""Je viens d'être
créé"",vbOkOnly"
.InsertLines DebLigne + 1, "Msgbox ""Ca
marche ?"",vbOkOnly"
End With

End Sub

Si j'utilise que ton code : pas de problème. Si je ne
nomme pas la feuille avant : pas de problème mais dès
lors que je donne un nom : c'est foutu, il ne fait plus
rien. Désolé ! peux tu vérifier mon module ?

Merci d'avance et désolé de t'embeter encore

FRVN

-----Message d'origine-----
re
Dim DebLigne As Long
With ActiveWorkbook.VBProject.VBComponents
(ActiveSheet.Name).CodeModule

DebLigne = .CreateEventProc("Activate", "Worksheet")
+ 1

.InsertLines DebLigne, "Msgbox ""Je viens d'être
créé"",vbOkOnly"

.InsertLines DebLigne + 1, "Msgbox ""Ca
marche ?"",vbOkOnly"

End With

Cordialement
Pascal

"frvn" a écrit
dans le message de

news:4d0e01c473d1$85330910$
Bonjour Pascal

là je ne vois pas trop, je vais essayer d'etre plus
clair, j'ai le code suivant pour créer une feuille
Sheets.Add Type:=xlWorksheet, before:=Sheets("Questions
niv 1")
ActiveSheet.Name = "Tri"
Je voudrai lui indiquer en VB lors de la création :
un Worksheet_Activate() et un Worksheet_Deactivate()
avec


certaines lignes de code

J'espère avoir été clair
Merci pour les réponses.

frvn


-----Message d'origine-----
Bonjour
Si j'ai bien compris ?
Voir l'évènement Workbook_NewSheet
Cordialement
Pascal

"FRVN" a écrit
dans le message de

news:4d7701c473cf$358bdec0$
Bonjour à tous,

J'ai encore une question. J'ai une application qui créé
et détruit des feuilles de calcul. Lors de la création,
je souhaite lui affecté du code pour Worksheet_Activate
()


et Worksheet_Deactivate() afin d'afficher ou non
certaines barres d'outils en fonction du nom de la
feuille. Le code en lui même ne me pose pas de problème
mais c'est la saisie du code à la création de la
feuille



que je n'ai pas trouvé. J'ai bien trouvé un site avec
l'ajout d'un module lors de la création d'un classeur
(merci ) mais pas pour mon cas particulier.

Merci à tous pour votre aide

FRVN


.




.




.





Avatar
papou
Ah ben non ça ne peut pas marcher, il faut utiliser le CodeName de la
feuille pour que cela fonctionne.
Donc il faut modifier avec quelque chose comme ça :
With ActiveWorkbook.VBProject.VBComponents(Worksheets("Tri").CodeName)

Cordialement
Pascal

"FRVN" a écrit dans le message de
news:4de401c473de$7301ac80$
Re

Merci mais meme avec ActiveWorkbook.VBProject.VBComponents
("Tri")

il ne veut pas. Dés lors que je lui spécifie un nom, il
refuse. ça fonctionne chez toi ?

Désolé encore pour le dérangement

FRVN
-----Message d'origine-----
With ActiveWorkbook.VBProject.VBComponents(Tri)
il faut ajouter les guillemets "" soit donc

With ActiveWorkbook.VBProject.VBComponents("Tri")

Cordialement
Pascal

"FRVN" a écrit
dans le message de

news:4e3d01c473db$330c6960$
rebonjour,


Merci pour tes réponses.
Je dois etre vraiment pas bon car meme avec ça, je n'y
arrive pas. voici le code complet de test :

Sub create()

Dim DebLigne As Long

On Error Resume Next
x = Sheets("Tri").[A1]
If Err.Number <> 0 Then
Sheets.Add Type:=xlWorksheet, before:¬tiveSheet
ActiveSheet.Name = "Tri"
End If

With ActiveWorkbook.VBProject.VBComponents
(Tri).CodeModule

DebLigne = .CreateEventProc("Activate", "Worksheet")
+ 1
.InsertLines DebLigne, "Msgbox ""Je viens d'être
créé"",vbOkOnly"
.InsertLines DebLigne + 1, "Msgbox ""Ca
marche ?"",vbOkOnly"
End With

End Sub

Si j'utilise que ton code : pas de problème. Si je ne
nomme pas la feuille avant : pas de problème mais dès
lors que je donne un nom : c'est foutu, il ne fait plus
rien. Désolé ! peux tu vérifier mon module ?

Merci d'avance et désolé de t'embeter encore

FRVN

-----Message d'origine-----
re
Dim DebLigne As Long
With ActiveWorkbook.VBProject.VBComponents
(ActiveSheet.Name).CodeModule

DebLigne = .CreateEventProc("Activate", "Worksheet")
+ 1

.InsertLines DebLigne, "Msgbox ""Je viens d'être
créé"",vbOkOnly"

.InsertLines DebLigne + 1, "Msgbox ""Ca
marche ?"",vbOkOnly"

End With

Cordialement
Pascal

"frvn" a écrit
dans le message de

news:4d0e01c473d1$85330910$
Bonjour Pascal

là je ne vois pas trop, je vais essayer d'etre plus
clair, j'ai le code suivant pour créer une feuille
Sheets.Add Type:=xlWorksheet, before:=Sheets("Questions
niv 1")
ActiveSheet.Name = "Tri"
Je voudrai lui indiquer en VB lors de la création :
un Worksheet_Activate() et un Worksheet_Deactivate()
avec


certaines lignes de code

J'espère avoir été clair
Merci pour les réponses.

frvn


-----Message d'origine-----
Bonjour
Si j'ai bien compris ?
Voir l'évènement Workbook_NewSheet
Cordialement
Pascal

"FRVN" a écrit
dans le message de

news:4d7701c473cf$358bdec0$
Bonjour à tous,

J'ai encore une question. J'ai une application qui créé
et détruit des feuilles de calcul. Lors de la création,
je souhaite lui affecté du code pour Worksheet_Activate
()


et Worksheet_Deactivate() afin d'afficher ou non
certaines barres d'outils en fonction du nom de la
feuille. Le code en lui même ne me pose pas de problème
mais c'est la saisie du code à la création de la
feuille



que je n'ai pas trouvé. J'ai bien trouvé un site avec
l'ajout d'un module lors de la création d'un classeur
(merci ) mais pas pour mon cas particulier.

Merci à tous pour votre aide

FRVN


.




.




.





Avatar
Vincent.
Ah ben non ça ne peut pas marcher, il faut utiliser le
CodeName de la

feuille pour que cela fonctionne.
Donc il faut modifier avec quelque chose comme ça :
With ActiveWorkbook.VBProject.VBComponents(Worksheets
("Tri").CodeName)




A mon avis, ça ne fonctionnera pas si VBE est fermé !
voir mon précédent post pour l'afficher
Sinon, je suis d'accord, ça doit marcher !

1 2