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

Ajout procédure évenementielle avec du code VBA

3 réponses
Avatar
Eric RENAUD
Bonjour,
Sur le site de Frédéric Signoneau, jai trouvé un exemple de code qui
fonctionne bien sauf que ...
Je rajoute via du code VBA, une procédure évenementielle dans la feuille
active de mon classeur.
Le code est le suivant :
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
'nom de l'événement, type de module concerné ("Worksheet")
'n° ligne du début de la proc
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
'insérer le texte du code
.InsertLines DebutCode + 1, S
'modifier la 2ème ligne du texte du code
End With
Si mes onglets porte le nom générique Feuil1, Feuil2, etc... tout va bien

Si je renomme mes onglets par ex .Juin, Juillet, etc... mon programme bug
sur la ligne
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
Pourquoi et quelle solution ?

J'ai pensé à remplacer ActiveSheet.Name par "Feuil" & i ou i serait le
numéro de la feuille active.
Malheureusement je ne sais pas récupérer le numéro de la feuille active.
--
...........................
Bien cordialement
Eric Renaud
http://www.erenaud.fr.fm/

3 réponses

Avatar
ru-th
Salut

pas testé,
mais n'aurais-tu pas intérêt à travailler directement avec le code name de
la feuille
ActiveSheet.CodeName

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

a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo (à l'essai)

"Eric RENAUD" a écrit dans le message de
news:
Bonjour,
Sur le site de Frédéric Signoneau, jai trouvé un exemple de code qui
fonctionne bien sauf que ...
Je rajoute via du code VBA, une procédure évenementielle dans la feuille
active de mon classeur.
Le code est le suivant :
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
'nom de l'événement, type de module concerné ("Worksheet")
'n° ligne du début de la proc
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
'insérer le texte du code
.InsertLines DebutCode + 1, S
'modifier la 2ème ligne du texte du code
End With
Si mes onglets porte le nom générique Feuil1, Feuil2, etc... tout va bien

Si je renomme mes onglets par ex .Juin, Juillet, etc... mon programme bug
sur la ligne
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
Pourquoi et quelle solution ?

J'ai pensé à remplacer ActiveSheet.Name par "Feuil" & i ou i serait le
numéro de la feuille active.
Malheureusement je ne sais pas récupérer le numéro de la feuille active.
--
...........................
Bien cordialement
Eric Renaud
http://www.erenaud.fr.fm/




Avatar
Michel Pierron
Bonsoir Eric;
As-tu essayé en remplaçant ActiveSheet.Name par ActiveSheet.CodeName ?
MP

"Eric RENAUD" a écrit dans le message de
news:
Bonjour,
Sur le site de Frédéric Signoneau, jai trouvé un exemple de code qui
fonctionne bien sauf que ...
Je rajoute via du code VBA, une procédure évenementielle dans la feuille
active de mon classeur.
Le code est le suivant :
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
'nom de l'événement, type de module concerné ("Worksheet")
'n° ligne du début de la proc
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
'insérer le texte du code
.InsertLines DebutCode + 1, S
'modifier la 2ème ligne du texte du code
End With
Si mes onglets porte le nom générique Feuil1, Feuil2, etc... tout va bien

Si je renomme mes onglets par ex .Juin, Juillet, etc... mon programme bug
sur la ligne
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
Pourquoi et quelle solution ?

J'ai pensé à remplacer ActiveSheet.Name par "Feuil" & i ou i serait le
numéro de la feuille active.
Malheureusement je ne sais pas récupérer le numéro de la feuille active.
--
...........................
Bien cordialement
Eric Renaud
http://www.erenaud.fr.fm/




Avatar
RENAUD Eric
Merci de la réponse. C'est parfait.

"Eric RENAUD" a écrit dans le message de
news:
Bonjour,
Sur le site de Frédéric Signoneau, jai trouvé un exemple de code qui
fonctionne bien sauf que ...
Je rajoute via du code VBA, une procédure évenementielle dans la feuille
active de mon classeur.
Le code est le suivant :
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
'nom de l'événement, type de module concerné ("Worksheet")
'n° ligne du début de la proc
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
'insérer le texte du code
.InsertLines DebutCode + 1, S
'modifier la 2ème ligne du texte du code
End With
Si mes onglets porte le nom générique Feuil1, Feuil2, etc... tout va bien

Si je renomme mes onglets par ex .Juin, Juillet, etc... mon programme bug
sur la ligne
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
Pourquoi et quelle solution ?

J'ai pensé à remplacer ActiveSheet.Name par "Feuil" & i ou i serait le
numéro de la feuille active.
Malheureusement je ne sais pas récupérer le numéro de la feuille active.
--
...........................
Bien cordialement
Eric Renaud
http://www.erenaud.fr.fm/