Sub InsereDataArray()
' Activation de la référence "Microsoft Visual Basic for Applications extensibility 5.3"
' Cette référence est obligatoire pour pouvoir accéder au code et pouvoir le modifier.
Dim VBComp As VBComponent, Cible As String, Tableau()
' C'est cet Array qui sera modifié et enrichi par les valeurs entrées dans l'InputBox
Tableau = Array(1)
' inputBox
NouvelleDonnée = InputBox("Entrez la nouvelle valeur à insérer dans le code :", "Auto enrichissement de l'array") 'La variable reçoit la valeur entrée dans l'InputBox
If NouvelleDonnée <> "" Then 'Si la valeur est différente de "" on traite le résultat
Set wb = ThisWorkbook ' Fichier ouvert pour traitement
For Each VBComp In wb.VBProject.VBComponents ' on parcourt tous les modules
NbLines = VBComp.CodeModule.CountOfLines ' nombre de lignes du module
For i = 1 To NbLines ' on parcourt toutes les lignes du module
Cible = VBComp.CodeModule.Lines(i, 1) ' on extrait la ligne
If Cible Like "Tableau = Array(1*" Then ' si la ligne contient le mot magique
Cible = Replace(Cible, "Tableau = Array(1", "Tableau = Array(1," & NouvelleDonnée)
VBComp.CodeModule.ReplaceLine i, Cible ' on remplace la chaine et on remplace la ligne dans le module
'---------------------------------------------------------------------------
' Pour la démo, donne le nombre d'éléments du tableau et la nouvelle valeur insérée.
MsgBox "Tableau a été enrichi de la valeur " & NouvelleDonnée & Chr(10) & _
" Ce tableau contient désormais " & UBound(Tableau) + 2 & " données."
End If
Next i
Next
End If
End Sub