Execution macro qui bug

Résolu/Fermé
supergenial - 7 janv. 2011 à 08:18
 supergenial - 7 janv. 2011 à 12:44
Bonjour,

Voilà je programme du VBA sous Excel 2003 pour mon stage et actuellement je rencontre un gros problème que je crains de ne pouvoir résoudre.
En effet, je crée une macro qui génère une macro par le biais du code :

With Workbooks(Fichier0).VBProject.VBComponents("Feuil4").CodeModule
.InsertLines 1, "Private Sub Worksheet_SelectionChange(ByVal Target As Range)"
.InsertLines 2, "If Not Application.UserName = ""XXX"" Or Application.UserName = ""XXX"" Then"
.InsertLines 3, "i = ActiveCell.Row"
.InsertLines 4, "ActiveSheet.Range(""AD"" & i).Select"
.InsertLines 5, "End If"
.InsertLines 6, "End Sub"
End With

Si je remplace la première ligne par "Sub nom()" ou n'importe quoi s'autre ça marche, mais avec le code "Private Sub Worksheet..." la macro fait bugué tout excel et quitte inopinément à chaque fois...

Que faire ? Est-ce un problème de mémoire d'ordinateur ?

Merci de votre aide
A voir également:

6 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 7/01/2011 à 09:01
Bonjour,
Deux pistes,
1°) Contrôler le contenu de Fichier0, il doit contenir un nom de classeur MAIS AUSSI L'EXTENSION.
2°) Je pencherais plutôt pour.. Ton code DOIT être dans un module public et pas dans un module de feuille.
J'ai tester ton code et à part les remarques ci-dessus il fonctionne très bien.
A+
EDIT : 3°) Si tu à configurer Excel pour mettre "Option Explicit" tu doit employé une variable..
Dim Ligne  as integer.
With Workbooks(Fichier0).VBProject.VBComponents("Feuil4").CodeModule 
Ligne = .CountOfLines 
.InsertLines Ligne + 1, ....


L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
0
Merci pour ta réponse !

Malheureusement les pistes 1 et 3 se révèlent vaines.
Pour la 2e piste, je ne comprends pas... En effet le Private Sub Worksheet est censé être mis dans une feuille pour qu'il fonctionne... si on le met dans un module, il ne sait pas sur quelle feuille travailler ? ... je me trompe peut-être !


Merci encore pour ton aide !
0
cousinhub29 Messages postés 977 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 21 décembre 2024 348
7 janv. 2011 à 10:28
Bonjour,

en complément de ce que t'a dit lermite22, peux-tu vérifier au niveau des sécurités des macros?

Pour cela, tu cliques sur Outils/Macros/Sécurité

Dans le 2ème onglet "Éditeurs Approuvés", tu coches la case :

"Faire confiance au projet Visual basic", voire les 2 cases...

Peut-être?

Bon courage
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
7 janv. 2011 à 12:26
Bonjour cousinhub29,
Tu m'a rebaptiser ? :-DD
A+
0
cousinhub29 Messages postés 977 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 21 décembre 2024 348
7 janv. 2011 à 12:28
Bonjour,

Et scuse, mais le 22 est si près du 29, que mes doigts ont fourché....

Meilleurs voeux
0
Je dois cocher les cases à chaque fois que je lance la macro, donc en effet, ils sont cochés... mais merci pour ton aide :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
7 janv. 2011 à 11:44
Je me suis probablement mal exprimé, c'est la macro qui crée la feuille et le code qui DOIT se trouver dans un module.
Pour le WorkSheets bien sûr c'est dans le module de la feuille.
A+
0
Merci à vous deux pour votre mais finalement je me suis débrouillé autrement...
J'ai crée une macro qui génère une macro dans un module du classeur exporté et ce module permettra une fois exécuter de créer une macro ... ^^
pas simple mais j'y suis arrivé :)

Merci à vous et bonne continuation
0