none
Écrire dans un module en VBA EXCEL RRS feed

  • Question

  • Bonjour,

    En VBA Access, il est possible d'écrire dans des modules.  Très pratique pour programmer, par exemple, un assistant.

    « Élément de langage masqué. Vous avez demandé de l'aide pour un élément de langage qui est masqué et auquel vous ne pouvez, par conséquent, accéder par programmation. »

    Cela me chagrine beaucoup.  Connaissez-vous un moyen de contourner cela ?

    Cdt, Blaise

    mardi 24 août 2010 11:32

Réponses

  • J'ai posé la question trop vite et n'avais pas chrché assez loin.

    La réponse ici http://www.cpearson.com/excel/vbe.aspx

    Il faut ajouter la référence Microsoft Visual Basic for Applications Extensibility 5.3

    Et voici un exemple de code

    Option Explicit
    Const sQT = """"  'quote, guillement
    '
    
    Sub Test_Creer_Mdl()
      Dim vbProj As VBIDE.VBProject
      Dim vbComp As VBIDE.VBComponent
      Dim vbMdl As VBIDE.CodeModule
      Dim ligne As Long
      Dim sCode As String
    
      Set vbProj = ActiveWorkbook.VBProject
      Set vbComp = vbProj.VBComponents("Module1")
      Set vbMdl = vbComp.CodeModule
    
      sCode = "Sub Bonjour" & vbCrLf _
          & "  msgbox " & sQT & "Bonjour le monde" & sQT & vbCrLf _
          & "end sub"
    
      ligne = vbMdl.CountOfLines + 1
      vbMdl.InsertLines ligne, sCode
    
    End Sub
    
    

    Cdt, Blaise

    • Marqué comme réponse blaise032 mardi 24 août 2010 13:24
    mardi 24 août 2010 13:23

Toutes les réponses

  • bonjour Blaise,

    as-tu coché la référence à la bibliothèque "Visual basic For Application Extensibility 5.3"

    isabelle

    Le 2010-08-24 07:32, blaise032 a écrit :

    Bonjour,

    En VBA Access, il est possible d'écrire dans des modules.  Très pratique pour programmer, par exemple, un assistant.

    « Élément de langage masqué. Vous avez demandé de l'aide pour un élément de langage qui est masqué et auquel vous ne pouvez, par conséquent, accéder par programmation. »

    Cela me chagrine beaucoup.  Connaissez-vous un moyen de contourner cela ?

    Cdt, Blaise

    mardi 24 août 2010 13:00
  • J'ai posé la question trop vite et n'avais pas chrché assez loin.

    La réponse ici http://www.cpearson.com/excel/vbe.aspx

    Il faut ajouter la référence Microsoft Visual Basic for Applications Extensibility 5.3

    Et voici un exemple de code

    Option Explicit
    Const sQT = """"  'quote, guillement
    '
    
    Sub Test_Creer_Mdl()
      Dim vbProj As VBIDE.VBProject
      Dim vbComp As VBIDE.VBComponent
      Dim vbMdl As VBIDE.CodeModule
      Dim ligne As Long
      Dim sCode As String
    
      Set vbProj = ActiveWorkbook.VBProject
      Set vbComp = vbProj.VBComponents("Module1")
      Set vbMdl = vbComp.CodeModule
    
      sCode = "Sub Bonjour" & vbCrLf _
          & "  msgbox " & sQT & "Bonjour le monde" & sQT & vbCrLf _
          & "end sub"
    
      ligne = vbMdl.CountOfLines + 1
      vbMdl.InsertLines ligne, sCode
    
    End Sub
    
    

    Cdt, Blaise

    • Marqué comme réponse blaise032 mardi 24 août 2010 13:24
    mardi 24 août 2010 13:23
  • Comme de fait, Merci Isabelle
    mardi 24 août 2010 13:28
  • bonjour Blaise, il y a aussi la méthode AddFromString, Sub Écrire_Macro() Dim code(3) code(0) = "Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) " code(1) = "MsgBox ""je suis la premiere ligne""" code(2) = "ligne2 = 2" code(3) = "End Sub" For i = 0 To 3 S = S & code(i) & Chr(10) Next Set MyVB = ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule MyVB.AddFromString S End Sub isabelle Le 2010-08-24 09:23, blaise032 a écrit : > J'ai posé la question trop vite et n'avais pas chrché assez loin. > > La réponse ici http://www.cpearson.com/excel/vbe.aspx > > Il faut ajouter la référence Microsoft Visual Basic for Applications Extensibility 5.3 > > Et voici un exemple de code > [code] > > Option Explicit > Const sQT = """" 'quote, guillement > ' > > Sub Test_Creer_Mdl() > Dim vbProj As VBIDE.VBProject > Dim vbComp As VBIDE.VBComponent > Dim vbMdl As VBIDE.CodeModule > Dim ligne As Long > Dim sCode As String > > Set vbProj = ActiveWorkbook.VBProject > Set vbComp = vbProj.VBComponents("Module1") > Set vbMdl = vbComp.CodeModule > > sCode = "Sub Bonjour"& vbCrLf _ > & " msgbox "& sQT& "Bonjour le monde"& sQT& vbCrLf _ > & "end sub" > > ligne = vbMdl.CountOfLines + 1 > vbMdl.InsertLines ligne, sCode > > End Sub > > > [/code] > > Cdt, Blaise >
    mardi 24 août 2010 15:22
  • Ouf ! ??
    J'ai écrit mes premières questions/réponses via le web au boulot, maintenant je suis chez moi via nntp (Community Forums NNTP bridge) et regarde comment je vois ta réponse.  C'est la 1ère fois que je vois cela (tes autres réponses étant claires)

    Merci, Blaise

    <isabelleV> a écrit dans le message de news: 553f89f3-bf20-4883-ba20-56b16b576dc2@communitybridge.codeplex.com...

    bonjour Blaise, il y a aussi la méthode AddFromString, Sub Écrire_Macro() Dim code(3) code(0) = "Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) " code(1) = "MsgBox ""je suis la premiere ligne""" code(2) = "ligne2 = 2" code(3) = "End Sub" For i = 0 To 3 S = S & code(i) & Chr(10) Next Set MyVB = ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule MyVB.AddFromString S End Sub isabelle Le 2010-08-24 09:23, blaise032 a écrit : > J'ai posé la question trop vite et n'avais pas chrché assez loin. > > La réponse ici http://www.cpearson.com/excel/vbe.aspx > > Il faut ajouter la référence Microsoft Visual Basic for Applications Extensibility 5.3 > > Et voici un exemple de code > [code] > > Option Explicit > Const sQT = """" 'quote, guillement > ' > > Sub Test_Creer_Mdl() > Dim vbProj As VBIDE.VBProject > Dim vbComp As VBIDE.VBComponent > Dim vbMdl As VBIDE.CodeModule > Dim ligne As Long > Dim sCode As String > > Set vbProj = ActiveWorkbook.VBProject > Set vbComp = vbProj.VBComponents("Module1") > Set vbMdl = vbComp.CodeModule > > sCode = "Sub Bonjour"& vbCrLf _ > & " msgbox "& sQT& "Bonjour le monde"& sQT& vbCrLf _ > & "end sub" > > ligne = vbMdl.CountOfLines + 1 > vbMdl.InsertLines ligne, sCode > > End Sub > > > [/code] > > Cdt, Blaise >

    mardi 24 août 2010 16:14
  • wow, je réessaie,

    il y a aussi la méthode AddFromString

    Sub Écrire_Macro()
    Dim code(3)
    code(0) = "Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) "
    code(1) = "MsgBox ""je suis la premiere ligne"""
    code(2) = "ligne2 = 2"
    code(3) = "End Sub"

    For i = 0 To 3
    S = S & code(i) & Chr(10)
    Next

    Set MyVB = ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule
    MyVB.AddFromString S

    End Sub

    isabelle

    Le 2010-08-24 12:14, blaise032 a écrit :

    Ouf ! ??
    J'ai écrit mes premières questions/réponses via le web au boulot, maintenant je suis chez moi via nntp (Community Forums NNTP bridge) et regarde comment je vois ta réponse.  C'est la 1ère fois que je vois cela (tes autres réponses étant claires)

    Merci, Blaise

    <isabelleV>  a écrit dans le message de news: 553f89f3-bf20-4883-ba20-56b16b576dc2@communitybridge.codeplex.com...

    bonjour Blaise, il y a aussi la méthode AddFromString, Sub Écrire_Macro() Dim code(3) code(0) = "Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) " code(1) = "MsgBox ""je suis la premiere ligne""" code(2) = "ligne2 = 2" code(3) = "End Sub" For i = 0 To 3 S = S&  code(i)&  Chr(10) Next Set MyVB = ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule MyVB.AddFromString S End Sub isabelle Le 2010-08-24 09:23, blaise032 a écrit :>  J'ai posé la question trop vite et n'avais pas chrché assez loin.>  >  La réponse icihttp://www.cpearson.com/excel/vbe.aspx>  >  Il faut ajouter la référence Microsoft Visual Basic for Applications Extensibility 5.3>  >  Et voici un exemple de code>  [code]>  >  Option Explicit>  Const sQT = """" 'quote, guillement>  '>  >  Sub Test_Creer_Mdl()>  Dim vbProj As VBIDE.VBProject>  Dim vbComp As VBIDE.VBComponent>  Dim vbMdl As VBIDE.CodeModule>  Dim ligne As Long>  Dim sCode As String>  >  Set vbProj = Act

    iveWorkbook.VBProject>  Set vbComp = vbProj.VBComponents("Module1")>  Set vbMdl = vbComp.CodeModule>  >  sCode = "Sub Bonjour"&  vbCrLf _>  &  " msgbox"&  sQT&  "Bonjour le monde"&  sQT&  vbCrLf _>  &  "end sub">  >  ligne = vbMdl.CountOfLines + 1>  vbMdl.InsertLines ligne, sCode>  >  End Sub>  >  >  [/code]>  >  Cdt, Blaise>

    mardi 24 août 2010 16:25