Execution macro qui bug

Résolu
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

6 réponses

  1. 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
    1. Contributeur
      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+
      1. Je dois cocher les cases à chaque fois que je lance la macro, donc en effet, ils sont cochés... mais merci pour ton aide :)
        1. 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
          1. Contributeur
            Bonjour cousinhub29,
            Tu m'a rebaptiser ? :-DD
            A+
          2. Bonjour,

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

            Meilleurs voeux
        2. 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 !
          1. Contributeur
            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)