Bonjour amis du forum
Est-il possible, par macro, d'insérer un code dans une feuille que l’on vient de créer par macro ?
Merci de vos solutions à mes problèmes
Version imprimable
Bonjour amis du forum
Est-il possible, par macro, d'insérer un code dans une feuille que l’on vient de créer par macro ?
Merci de vos solutions à mes problèmes
Bonjour,
Oui c'est possible, tu as un tutoriel sur la manipulation de l'éditeur VBA par macro à l'adresse ci-dessous. Tu y trouveras un exemple pour ajouter une procédure évènementielle SelectionChange dans la Feuil1 du classeur actif.
http://silkyroad.developpez.com/VBA/VisualBasicEditor/
Merci fring
Bonne journée
Bonjour le Forum
J'ai bien trouvé la réponse dans le tuto, mais je bute sur la 1ère ligne :car j'aimerai, plutôt que de spécifier "Feuil16", j'attribue un nom de variable.Code:With ActiveWorkbook.VBProject.VBComponents("Feuil16").CodeModule
La macro que je fais créé à chaque début de mois un onglet qui porte le nom du mois précédent, et c'est dans ce nouvel onglet que je voudrais mettre le code.
S'il existe une soluce, merci de me l'indiquer.
Si la feuille que tu ajoutes se trouve d'office en dernière position, tu peux faire ceci
En passant par une variable ça donnerait quelque chose de ce styleCode:With ActiveWorkbook.VBProject.VBComponents(Sheets(Sheets.Count).CodeName).CodeModule
Code:
1
2
3
4
5
6 Dim NewSh As Worksheet Set NewSh = Sheets.Add NewSh.Move after:=Sheets(Sheets.Count) With ActiveWorkbook.VBProject.VBComponents(NewSh.CodeName).CodeModule
Encore merci fring, ça fonctionne très bien.
bon après-midi
Bonjour
Je rencontre un problème sur le code qui fonctionnait très bien sous excel 2000.
En effet, je viens de passer sous Excel 2003, et un message d'erreur apparait :
"Erreur d'excécution '9':
L'indice ne correspond pas à la sélection"
y aurait-il un rapport avec le changement de version d'Excel ?
Merci de m'aider.
Bonjour,
As-tu pensé à activer les bonnes références ?
cordialement,
Didier
Merci Ormonth de me répondre.
Voici les références présentes dans mon appli :
Visual Basic For Applications
Microsoft Excel 11.0 Object Library
OLE Automation
Microsoft Office 11.0 Object Library
Microsoft Forms 2.0 Object Library
Dans le Tutoriel de Silkyroad cité par Fring, il est bien précisé :
as-tu essayé ?Citation:
La majeur partie des procédures utilisées nécessite d'activer la référence Microsoft Visual Basic for Applications Extensibility 5.3.
cordialement,
Didier
Cela ne fonctionne pas mieux, mais lorsque je fais "Débogage", l'appli se poursuit lorsque je fais le pas à pas(F8) puis "continuer".
Et si tu mettais ton code (entre balises)
Ceci est OK sous 2003 (code Silky et Fring)
voois si Ok chez toi..Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub testencours() Dim NewSh As Worksheet Set NewSh = Sheets.Add NewSh.Move after:=Sheets(Sheets.Count) With ActiveWorkbook.VBProject.VBComponents(NewSh.CodeName).CodeModule X = .CountOfLines .InsertLines X + 1, "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" 'Chr(38) permet d'insérer le symbole & dans la procédure. .InsertLines X + 2, _ "MsgBox ""La cellule sélectionnée: """ & Chr(38) & " Target.Address,,""Message"" " .InsertLines X + 3, "End Sub" End With End Sub
cordialement,
Didier
Malheureusement, le résultat est toujours le même. Cela se plante, je fais Débogage, je déroule pas à pas, j'ai comme message que je ne peux travailler en mode arrêt, je fais continuer et cela fonctionne.
Le message est explicit
Tu ne peux pas lancer ta sub à partir de l'éditeur vba en pas à pas.
Merci mercatog, mais je le savais. Le problème est que mon code ne s'exécute que comme cela, et je ne comprends pas pourquoi.
Je comprends de moins en moins. Je viens de mettre undevant mon code.Code:Stop
La procédure s"exécute jusqu'au STOP, puis quand je clique pour continuer, cela fonctionne.
Ca sent la nécessité d'un DoEvents...
Je viens d'essayer un truc bête, mais ça à marché. Juste avant l'instruction qui plante:j'ai fait :Code:With ActiveWorkbook.VBProject.VBComponents(Sheets(Sheets.Count).CodeName).CodeModule
bizarre !Code:
1
2 On Error GoTo 1 1:
Bonjour
Une partie de ton code se déroule trop vite, il faut (comme te l'indique AlainTech :coucou:) utiliser l'instruction DoEvents à la place de ce que tu as testé de faire.
C'est comme si tu voulais fermer ton cahier alors que tu n'as pas fini d'écrire, cette instruction va d'abord bloquer la fermeture pour être sûr que tu ais fini d'écrire avant de fermer le cahier.
Philippe