Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
950 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Ecrire dans le code d'une feuille par macro

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ecrire dans le code d'une feuille par macro

n°1905149
Tomuscz
Posté le 15-07-2009 à 08:14:41  profilanswer
 

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
mood
Publicité
Posté le 15-07-2009 à 08:14:41  profilanswer
 

n°1905730
GuiGui013
Posté le 16-07-2009 à 11:12:19  profilanswer
 

Mais "Compteur" vaut combien !?

n°1905735
Tomuscz
Posté le 16-07-2009 à 11:18:36  profilanswer
 

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...

n°1922283
zit_zit
Posté le 08-09-2009 à 17:02:58  profilanswer
 

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 ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Ecrire dans le code d'une feuille par macro

 

Sujets relatifs
Macro ExcelMacro excel 2007 remplir tableau recap
Ecrire une page html en vbsAide pour alléger une macro
Addition toute bête en VBA (Macro Excel)[RESOLU] Problème de vérouillage dans ma feuille excel
Convertir code C# -> VBA ou VBA -> C#Détecter l'affichage d'une MsgBox dans une macro excel
[ksh] Ecrire sans fichier temporaire[Resolu] [VBA] Macro Excel - Zone de texte
Plus de sujets relatifs à : Ecrire dans le code d'une feuille par macro


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR