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

Comment écrire du code VBA dans un module de feuille ?

3 réponses
Avatar
Claude Trouet
Est-il possible d'écrire du code VBA dans un module de feuille ( général ou
évènement worksheet ) à partir du VBA ?
Si oui, voici mon problème :
Merci d'avance

Exemple : la procédure ci-dessous créée une feuille dans le classeur actif
et je voudrais écrire la procédure évènementielle WorkSheet_SelectionChange
qui interdit à l'utilisateur de modifier le nom de la
feuille ( en fait en y réaffectant son nom stocké dans la ditee procédure )

Sub Ajoute_Feuille()
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Nouvelle Feuille"
Ecrire_VBA
End Sub

Sub Ecrire_VBA
???
??? .... de façon à obtenir le code ci-dessous
???
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
feuille = "Nouvelle"
If ActiveSheet.Name <> "Nouvelle" Then
ActiveSheet.Name = "Nouvelle"
MsgBox "Ne pas changer le nom de cette feuille !"
End If
End Sub

3 réponses

Avatar
papou
Bonjour
Voir un exemple ici :
http://perso.wanadoo.fr/frederic.sigonneau/code/VBE/AjoutFeuilleEtCode.txt
Cordialement
Pascal

"Claude Trouet" a écrit dans le message de
news:
Est-il possible d'écrire du code VBA dans un module de feuille ( général
ou

évènement worksheet ) à partir du VBA ?
Si oui, voici mon problème :
Merci d'avance

Exemple : la procédure ci-dessous créée une feuille dans le classeur actif
et je voudrais écrire la procédure évènementielle
WorkSheet_SelectionChange

qui interdit à l'utilisateur de modifier le nom de la
feuille ( en fait en y réaffectant son nom stocké dans la ditee
procédure )


Sub Ajoute_Feuille()
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Nouvelle Feuille"
Ecrire_VBA
End Sub

Sub Ecrire_VBA
???
??? .... de façon à obtenir le code ci-dessous
???
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
feuille = "Nouvelle"
If ActiveSheet.Name <> "Nouvelle" Then
ActiveSheet.Name = "Nouvelle"
MsgBox "Ne pas changer le nom de cette feuille !"
End If
End Sub




Avatar
PMO
Bonjour,

Faites tourner le code suivant:

'****************************************
Option Explicit
Sub Ajoute_Feuille()
Dim codeNom$
Dim S As Worksheet
Dim C As Object
Dim A$
Sheets.Add
ActiveSheet.Name = "Nouvelle"
For Each S In Worksheets
If S.Name = "Nouvelle" Then
codeNom$ = S.CodeName
Exit For
End If
Next S
A$ = "Private Sub Worksheet_SelectionChange" & _
"(ByVal Target As Range)" & vbCrLf
A$ = A$ & "If ActiveSheet.Name <>" & Chr(34) & _
"Nouvelle" & Chr(34) & " Then" & vbCrLf
A$ = A$ & "ActiveSheet.Name = " & _
Chr(34) & "Nouvelle" & vbCrLf
A$ = A$ & "MsgBox " & Chr(34) & _
"Ne pas changer le nom de cette feuille !" & _
vbCrLf
A$ = A$ & "End If" & vbCrLf
A$ = A$ & "End Sub"
Application.VBE.ActiveVBProject. _
VBComponents(codeNom$). _
CodeModule.AddFromString (A$)
End Sub
'******************************

Cordialement.

PMO
Patrick Morange


-----Message d'origine-----
Est-il possible d'écrire du code VBA dans un module de
feuille ( général ou

évènement worksheet ) à partir du VBA ?
Si oui, voici mon problème :
Merci d'avance

Exemple : la procédure ci-dessous créée une feuille dans
le classeur actif

et je voudrais écrire la procédure évènementielle
WorkSheet_SelectionChange

qui interdit à l'utilisateur de modifier
le nom de la

feuille ( en fait en y réaffectant son nom stocké dans
la ditee procédure )


Sub Ajoute_Feuille()
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Nouvelle Feuille"
Ecrire_VBA
End Sub

Sub Ecrire_VBA
???
??? .... de façon à obtenir le code ci-dessous
???
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As
Range)

feuille = "Nouvelle"
If ActiveSheet.Name <> "Nouvelle" Then
ActiveSheet.Name = "Nouvelle"
MsgBox "Ne pas changer le nom de cette feuille !"
End If
End Sub


.



Avatar
Claude Trouet
Merci pour la célérité ( on ne parle plus de vitesse ! ) et pour la macro.
C'est exactement ce que j'attendais
Cordialement
CT
Claude Trouet

"PMO" a écrit dans le message de news:
0bf101c4a6fd$4fdbfb50$
Bonjour,

Faites tourner le code suivant:

'****************************************
Option Explicit
Sub Ajoute_Feuille()
Dim codeNom$
Dim S As Worksheet
Dim C As Object
Dim A$
Sheets.Add
ActiveSheet.Name = "Nouvelle"
For Each S In Worksheets
If S.Name = "Nouvelle" Then
codeNom$ = S.CodeName
Exit For
End If
Next S
A$ = "Private Sub Worksheet_SelectionChange" & _
"(ByVal Target As Range)" & vbCrLf
A$ = A$ & "If ActiveSheet.Name <>" & Chr(34) & _
"Nouvelle" & Chr(34) & " Then" & vbCrLf
A$ = A$ & "ActiveSheet.Name = " & _
Chr(34) & "Nouvelle" & vbCrLf
A$ = A$ & "MsgBox " & Chr(34) & _
"Ne pas changer le nom de cette feuille !" & _
vbCrLf
A$ = A$ & "End If" & vbCrLf
A$ = A$ & "End Sub"
Application.VBE.ActiveVBProject. _
VBComponents(codeNom$). _
CodeModule.AddFromString (A$)
End Sub
'******************************

Cordialement.

PMO
Patrick Morange


-----Message d'origine-----
Est-il possible d'écrire du code VBA dans un module de
feuille ( général ou

évènement worksheet ) à partir du VBA ?
Si oui, voici mon problème :
Merci d'avance

Exemple : la procédure ci-dessous créée une feuille dans
le classeur actif

et je voudrais écrire la procédure évènementielle
WorkSheet_SelectionChange

qui interdit à l'utilisateur de modifier
le nom de la

feuille ( en fait en y réaffectant son nom stocké dans
la ditee procédure )


Sub Ajoute_Feuille()
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Nouvelle Feuille"
Ecrire_VBA
End Sub

Sub Ecrire_VBA
???
??? .... de façon à obtenir le code ci-dessous
???
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As
Range)

feuille = "Nouvelle"
If ActiveSheet.Name <> "Nouvelle" Then
ActiveSheet.Name = "Nouvelle"
MsgBox "Ne pas changer le nom de cette feuille !"
End If
End Sub


.