Créer un code qui insère des lignes de code

Bonjour !

Je vais essayer d'être le plus clair possible même si cela me paraît difficile vu l'essence du problème.

Alors en fait, j'ai créé un formulaire dans lequel j'ai une combobox ayant des arguments à l'initialisation de l'userform:


Private Sub UserForm_Initialize()

    RaisonSociale.AddItem "Mairie" '(RaisonSociale est le nom de la combobox en question)
     RaisonSociale.AddItem "Association"
    RaisonSociale.AddItem "Entreprise"
    RaisonSociale.AddItem "École"

End Sub

Jusque là, pas de problème.

Seulement, sur ce formulaire j'ai ajouter un bouton qui ouvre un deuxième formulaire, servant à ajouter des items à ma combobox. Et en effet, elle ajoute autant d'items que je le veux, mais seulement lorsque je garde mon formulaire de base ouvert. Si je le ferme et que je le ré-ouvre, alors la liste de ma combobox redeviens celle initialisée à la base (donc sans ceux que j'ai ajouté).


Private Sub BoutonOK_Click()

Dim ligneEcriture As Integer

    If MsgBox("Confirmez-vous l'ajout d'une nouvelle raison sociale ?", vbYesNo, "Confirmation") = vbYes Then
        AjouterC.RaisonSociale.AddItem (NouvRaiSociale.Text)
    End If
'AjouterC est le nom de mon premier formulaire,
'je pense qu'il est important de le préciser car les codes
'ne sont pas dans la même page.
    Unload AjouterRaisonSociale

End Sub

Étant donné le code que j'ai tapé cela est normal, cependant, j'aimerais si possible que lorsque j'écris dans mon 2ème formulaire dans la textbox nommée NouvRaiSociale, un bout de code récupère automatiquement NouvRaiSociale pour ajouter une ligne de code du type RaisonSociale.AddItem (NouvRaiSociale).

Dans mon esprit celà donnerait quelque chose comme ça :


Private Sub UserForm_Initialize()

    RaisonSociale.AddItem "Mairie"
    RaisonSociale.AddItem "Association"
    RaisonSociale.AddItem "Entreprise"
    RaisonSociale.AddItem "École"
    RaisonSociale.AddItem "Dupont et compagnie" 'ligne qui aurait été ajouté automatiquement par un code ingénieux placé dans le sub BoutonOK_Click()

End Sub

J'espère avoir été clair, et j'espère surtout trouver une solution à mon problème.

Merci d'avance!

EDIT: C'était du orange gras, mais bon, soit! x'D

arf c'est illisible le rouge ...

Remdu57

Pourquoi ne pas utiliser un onglet qui récapitule au fur et à mesure toutes les raisons sociales ce qui permettrait :

1) à l'ouverture de l'userform d'avoir la liste déroulante rafraichie

Code à mettre dans initialize

'Tout d'abord il faut créer une liste dans une feuille  et ensuite insérer le code suivant :
Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To Sheets("Nom de la feuille source").Range("A65536").End(xlUp).Row
ComboBox1 = Sheets("Nom de la feuille source").Range("A" & i)
If ComboBox1.ListIndex = - 1 Then ComboBox1.AddItem Sheets("Nom de la feuille source").Range("A" & i)
Next i
End Sub  

2) Ensuite codifier l'ajout des nouveaux item dans la feuille nommée à cet effet.

Difficile de répondre plus précisement sans fichier

En effet, c'est une solution qui marche. Mais je voulais si possible ne pas passer par une feuille excel.

Il n'y a pas, par hasard, une commande "InsertLines" où quelque chose dans le genre qui permettrait par exemple ce genre de chose:

Formulaire2:

Private Sub BoutonOK_Click()

Dim ligneEcriture As Integer

    If MsgBox("Confirmez-vous l'ajout d'une nouvelle raison sociale ?", vbYesNo, "Confirmation") = vbYes Then
        AjouterC.RaisonSociale.AddItem (NouvRaiSociale.Text)
    End If

    Module.CodeModule.InsertLines 17, "RaisonSociale.AddItem " & NouvRaiSociale.Text 'avec à la place de module le nom du formulaire1

    Unload AjouterRaisonSociale

End Sub

Ce qui donnerait dans le formulaire1 lorsque l'on tape par exemple "Garderie" dans la textbox NouvRaiSociale:

Private Sub UserForm_Initialize()

    RaisonSociale.AddItem "Mairie"
    RaisonSociale.AddItem "Association"
    RaisonSociale.AddItem "Entreprise"
    RaisonSociale.AddItem "École"
    RaisonSociale.AddItem "Garderie"

End Sub
Rechercher des sujets similaires à "creer code qui insere lignes"