Ecrire dans le code d'une feuille par macro

Ecrire dans le code d'une feuille par macro - VB/VBA/VBS - Programmation

Marsh Posté le 15-07-2009 à 08:14:41    

Salut tout le monde,
 
Je reviens à la charge (pour une dernière question j'espère...).
 
J'ai quasiment bouclé ma macro mais il me reste un dernier truc à gérer.  
En fait ma macro, suivant le choix de l'utilisateur, va créer X feuilles dont les données vont ensuite être exposées en tableaux et graphique. J'ai une macro qui doit se trouver dans le code de chaque feuille pour que quand je clique dans la colonne 20 ça change l'état de la colonne 21 en OUI ou NON.
Or vu que le fichier excel ne démarre qu'avec la feuil1 vierge et que tout le reste est crée ensuite par la macro il me faut une macro qui va venir écrire le code dans les feuilles 1à x....
 
J'ai essayé ça mais bizaremment ça ne marche pas, j'ai parcouru pas mal de forum sans succès...si quelqu'un pouvait m'aider là dessus ça me sauverait bien.
 
Exemple de ce que j'ai essayé :
 

Code :
  1. Sub InsertionMacroFeuilles()
  2. Dim X As Integer
  3. Dim a As Integer
  4. Dim N As String
  5. Dim O As String
  6. N = "NON"
  7. O = "OUI"
  8. For a = 1 To Compteur
  9. With ActiveWorkbook.VBProject.VBComponents("Feuil" & a & "" ).CodeModule
  10.     X = .CountOfLines
  11.     .InsertLines X + 1, "Private Sub Worksheet_SelectionChange(ByVal Target As Range)"
  12.     .InsertLines X + 2, "If Target.Column <> 20 Then Exit Sub"
  13.     .InsertLines X + 3, "Select Case Target.Offset(0, 1)"
  14.     .InsertLines X + 4, "Case True"
  15.     .InsertLines X + 5, "Target.Offset(0, 1) = N"
  16.     .InsertLines X + 6, "Case False"
  17.     .InsertLines X + 7, "Target.Offset(0, 1) = O"
  18.     .InsertLines X + 8, "Case Else"
  19.     .InsertLines X + 9, "Target.Offset(0, 1) = N"
  20.     .InsertLines X + 10, "End Select"
  21.     .InsertLines X + 11, "Target.Offset(0, 1).Select"
  22.     .InsertLines X + 12, "End Sub"
  23. End With
  24. End Sub


Message édité par Tomuscz le 15-07-2009 à 08:17:22
Reply

Marsh Posté le 15-07-2009 à 08:14:41   

Reply

Marsh Posté le 16-07-2009 à 11:12:19    

Mais "Compteur" vaut combien !?

Reply

Marsh Posté le 16-07-2009 à 11:18:36    

Compteur est saisi par l'utilisateur au départ...
 
Mais j'ai trouvé ma solution, je vais en faire profiter les éventuels interessés en ésperant que cela puisse aider...
 
En fait ma macro pour inscrire le code est donc devenu ceci :
 

Code :
  1. Sub EcrireCode()
  2. ' Ce code permet de recopier la macro Private Sub Worksheet_SelectionChange dans les feuilles bateaux
  3. ' c'est elle qui permet de faire fonctionner le principe de click dans la colonne 20 qui donne l'attribut
  4. ' VRAI ou FAUX dans la colonne 21
  5. Dim i, LeCode(1 To 15)
  6. Dim NomClasseur As String, NomFeuil As String
  7. Dim Wb As Workbook
  8.     NomClasseur = ActiveWorkbook.Name
  9.     LeCode(1) = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)"
  10.     LeCode(2) = "   NbreLignes =3+ Application.CountA(Range(""E1:E65536"" ))"
  11.     LeCode(3) = "Non = ""NON"
  12.     LeCode(4) = "Oui = ""OUI"
  13.     LeCode(5) = "   If Intersect(Target, Range(""T5:T"" & NbreLignes)) Is Nothing Then Exit Sub"
  14.     LeCode(6) = "   Select Case Target.Offset(0, 1)"
  15.     LeCode(7) = "       Case Is = Oui"
  16.     LeCode(8) = "           Target.Offset(0, 1) = ""NON"
  17.     LeCode(9) = "       Case Is = Non"
  18.     LeCode(10) = "           Target.Offset(0, 1) = ""OUI"
  19.     LeCode(11) = "       Case Else"
  20.     LeCode(12) = "          Target.Offset(0, 1) = ""OUI"
  21.     LeCode(13) = "  End Select"
  22.     LeCode(14) = "Target.Offset(0, 1).Select"
  23.     LeCode(15) = "End sub"
  24.     Set Wb = Workbooks(NomClasseur)
  25.    
  26.        For X = 2 To Compteur + 1
  27.         For i = 1 To 15
  28.             Wb.VBProject.VBComponents("Feuil" & X).CodeModule.InsertLines i, LeCode(i)
  29.         Next i
  30.       Next X
  31. End Sub


 
 
 
 
Mais ce qui m'empéchait de la faire marcher était en fait une option de sécurité :
 
Dans Excel -> Outils -> Macro -> Sécurité...   Onglet Editeurs approuvés,  il faut cocher Faire confiance au projet Virtual Basic
 
Voila les amis merci pour l'aide précedente, en éspèrant que ça aide...

Reply

Marsh Posté le 08-09-2009 à 17:02:58    

bonjour à tous,
 
j'ai utilisé le code que tu as mis j'ai une erreur lors de l'execution en faite excel plante tout simple !!!
 
j'ai l impression qu' il essaie de d'executé le code de que je place dans le ThisWorkbook aurais-tu une  idée pour résoudre ce soucis ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed