Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Enregistrer du texte saisi via un userform dans un code vba

ninajams

XLDnaute Junior
Bonjour,

Mon projet de formulaire avance mais j'ai encore besoin de vous.

Dans un textbox je souhaite faire apparaître du texte en fonction de la marque.
Je saisie donc pour chaque marque une petite présentation que j'intègre dans une variable.

Mais un problème intervient lorsque je suis face à une nouvelle marque :
Je dois ouvrir le formulaire et compléter le code vba.​
Puis relancer le formulaire​
Ma question est comment réussir à enregistrer le texte saisie dans le textbox dans le code vba pour qu'il soit disponible la prochaine fois?

Normalement je devrais utiliser un tableau excel et saisir les données dedans puis y faire référence. Mais je souhaiterais une autre option.
Mon objectif est de disposer de toute les informations directement dans le projet VBA sans stocker de manière permanente des données ailleurs.

Avez vous des idées?
Merci
 

xuard

XLDnaute Nouveau
Bonjour NinaJams,
Mais un problème intervient lorsque je suis face à une nouvelle marque :
Je dois ouvrir le formulaire et compléter le code vba.
Ceci est contraire à une utilisation normale d'un formulaire, un formulaire puise ou stocke ses informations dans une feuille de calcul.
Ma question est comment réussir à enregistrer le texte saisie dans le textbox dans le code vba pour qu'il soit disponible la prochaine fois?
En stockant le texte dans la feuille de calcul, il sera disponible la prochaine fois.
Normalement je devrais utiliser un tableau excel et saisir les données dedans puis y faire référence.
ça c'est du bon sens !
Mon objectif est de disposer de toute les informations directement dans le projet VBA sans stocker de manière permanente des données ailleurs
Il est préférable de stocker dans une feuille de calcul qui peut être cachée si l'utilisateur n'a pas besoin de consulter les informations.
Bon courage
Christian
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
Un exemple en PJ, sans préjuger de la pertinence de la démarche.
Penser à activer la référence "Microsoft Visual Basic for Applications extensibility 5.3".
Dans le code VBA, faire Outils/Références et cocher celle ci.
VB:
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
 

Pièces jointes

  • ModifieCodeVBA.xlsm
    21.4 KB · Affichages: 26

patricktoulon

XLDnaute Barbatruc
bonjour
perso je me permettrais justement de juger la pertinence de la démarche

il est inconcevable de travailler avec un code qui s'auto modifierait

le but d'un code est d'automatiser un action et non l'inverse
c'est la porte ouverte a tout sinon

toute personne saine d'esprit refusera l'utilisation d'un tel fichier

et si tu veux une démonstration et que tu est prêt a perdre 3 heureS pour tout reformater ton pc et réinstaller tout tes applications je me ferais un plaisir de te faire un petit fichier exemple pour te pétarder ton boots

ma conclusion :
OUBLIE CETTE IDEE
 

Discussions similaires

Réponses
17
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…