Je me suis montré un peu paresseux dans mon précédent message,
j'ai maintenant fait quelque chose qui permet d'être plus précis.
 
J'ai écrit la macro suivante :
 
Sub EcrireTestTailleModule()
 
  Dim ourDocument As Object
  Dim ourViewCursor As Object
  Dim i As Long
  Dim specialChar As Integer
  Dim ourText As Object
  Dim noFileProp()
 
  ourDocument = StarDesktop.LoadComponentFromURL("private:factory/swriter", "_blank", 0, noFileProp)
  ourViewCursor = ThisComponent.CurrentController.getViewCursor()
  ourText = ourViewCursor.getText()
  specialChar = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK
 
  ourText.insertString(ourViewCursor, "Sub TailleModule()", False)
  ourText.insertControlCharacter(ourViewCursor, specialChar, False)
  ourText.insertString(ourViewCursor, "Dim j As Long", False)
  ourText.insertControlCharacter(ourViewCursor, specialChar, False)
  ourText.insertString(ourViewCursor, "j = 0", False)
  ourText.insertControlCharacter(ourViewCursor, specialChar, False)
 
  For i = 1 To 5000
    ourText.insertString(ourViewCursor, "j = j + 1", False)
    ourText.insertControlCharacter(ourViewCursor, specialChar, False)
  Next
 
  ourText.insertString(ourViewCursor, "MsgBox j", False)
  ourText.insertControlCharacter(ourViewCursor, specialChar, False)
  ourText.insertString(ourViewCursor, "End Sub", False)
 

 
End Sub
 
Cette macro écrit le texte d'une macro qui comporte la déclaration d'un j de type Long,
l'affectation de la valeur 0 à j, puis 5 000 instructions identiques "j = j + 1".
Même si on compte la marque de paragraphe pour deux caractères, la macro
produite ne compte pas beaucoup plus de 55 000 caractères.
Même chose pour le module si le module ne comporte que cette macro.
Or, à la "compilation", on reçoit le message "Programme trop volumineux".
Il y a une marque à peu près aux deux tiers du programme.
 
On dirait donc qu'ici, la limite est inférieure à 65 000, peut-être quelque chose
comme 33 000 (si une marque de paragraphe est comptée pour un seul caractère).
 
Si quelqu'un peut faire une mise au point, merci d'avance.
 
A.

Répondre à