Problème Variable dynamique pour récupérer des informations de TextBox d'un Userform

  • Initiateur de la discussion Initiateur de la discussion Caldou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Caldou

XLDnaute Nouveau
Bonjour, j'ai googlisé tous les mots clés que j'ai pu trouvé sans avoir pu solutionner mon problème. Je vais essayer de l'expliquer le plus clairement possible. J'espère que quelqu'un pourra m'aider car je bloque vraiment.

J'ai créée un Userform afin de faciliter les processus de commande de produits. L'utilisateur rentre les quantités, référence, le nom du produit, le prix, les codes services etc...

Lorsqu'il valide, je dois récupérer les informations rentrées afin de les valider et ensuite les inclure dans une feuille qui sera imprimée. L'utilisateur ne peux commander que 7 produits d'un même fournisseur dans ce cas là.

J'ai décidé de récupérer les infos des textbox par catégories que j'inscris dans un tableau : exemple : un tableau tQuantite(7) où je vais récupérer les quantité rentrées par l'utilisateur de mes 7 textbox qui s'apellent z_Quantite_1, z_Quantite_2 ... z_Quantite_7.
Idem pour les Prix, Reference etc...

Le code :

Code:
Private Sub b_Commande_Valider_Click()


    Dim mFournisseur As String, mDemandeur As String
    Dim tQuantite(7) As String, tReference(7) As String, tProduit(7) As String
    Dim tService(7) As String, tProjet(7) As String, tPrix(7) As String
    Dim i As Integer

    tQuantite(1) = z_Quantite_1.Value
    tQuantite(2) = z_Quantite_2.Value
    tQuantite(3) = z_Quantite_3.Value
    tQuantite(4) = z_Quantite_4.Value
    tQuantite(5) = z_Quantite_5.Value
    tQuantite(6) = z_Quantite_6.Value
    tQuantite(7) = z_Quantite_7.Value
    
    tReference(1) = z_Reference_1.Value
    tReference(2) = z_Reference_2.Value
    tReference(3) = z_Reference_3.Value
    tReference(4) = z_Reference_4.Value
    tReference(5) = z_Reference_5.Value
    tReference(6) = z_Reference_6.Value
    tReference(7) = z_Reference_7.Value
    
    tProduit(1) = z_Produit_1.Value
    tProduit(2) = z_Produit_2.Value
    tProduit(3) = z_Produit_3.Value
    tProduit(4) = z_Produit_4.Value
    tProduit(5) = z_Produit_5.Value
    tProduit(6) = z_Produit_6.Value
    tProduit(7) = z_Produit_7.Value
    
    tService(1) = z_Service_1.Value
    tService(2) = z_Service_2.Value
    tService(3) = z_Service_3.Value
    tService(4) = z_Service_4.Value
    tService(5) = z_Service_5.Value
    tService(6) = z_Service_6.Value
    tService(7) = z_Service_7.Value
    
    tProjet(1) = z_Projet_1.Value
    tProjet(2) = z_Projet_2.Value
    tProjet(3) = z_Projet_3.Value
    tProjet(4) = z_Projet_4.Value
    tProjet(5) = z_Projet_5.Value
    tProjet(6) = z_Projet_6.Value
    tProjet(7) = z_Projet_7.Value
    
    tPrix(1) = z_Prix_1.Value
    tPrix(2) = z_Prix_2.Value
    tPrix(3) = z_Prix_3.Value
    tPrix(4) = z_Prix_4.Value
    tPrix(5) = z_Prix_5.Value
    tPrix(6) = z_Prix_6.Value
    tPrix(7) = z_Prix_7.Value

...
End Sub

Ce code marche plutôt bien, mais ca me parait lourd à lire et j'aurais bien aimé pouvoir le transformer dans des boucles For pour moi ca aurait donné quelque chose du genre :

Code:
    For i = 1 To 7
        tQuantite(i) = z_Quantite_ & i & .Value
    Next i

qui remplacerait :

    tQuantite(1) = z_Quantite_1.Value
    tQuantite(2) = z_Quantite_2.Value
    tQuantite(3) = z_Quantite_3.Value
    tQuantite(4) = z_Quantite_4.Value
    tQuantite(5) = z_Quantite_5.Value
    tQuantite(6) = z_Quantite_6.Value
    tQuantite(7) = z_Quantite_7.Value

Je sais pertinemment que ce code ne marche pas et je n'ai trouvé aucun sujet capable de résoudre mon dilemne. La boucle For est d'autant plus intéressante qu'elle me permettrait d'inclure des If. Le fait de passer par plusieurs lignes de commandes m'obligeraient à mettre des If pour chaque ligne de récupération de données.

Soit il n'y a aucune solution et le code va prendre beaucoup de place, soit il existe un "truc" qui me permettrait de gagner en lisibilité et practicité dans code.

Merci d'avance pour vos suggestions !
 
Re : Problème Variable dynamique pour récupérer des informations de TextBox d'un User

Bonjour Caldou et bienvenue sur le forum.

Si ton UserForm s'appelle UserForm1, tu peux essayer ceci :
VB:
For i = 1 To 7
    tQuantite(i) = UserForm1.Controls("z_Quantite_" & i)
Next i

Code à adapter à ton besoin.

A+
 
Re : Problème Variable dynamique pour récupérer des informations de TextBox d'un User

Bonjour Caldou et bienvenue sur le forum.

Si ton UserForm s'appelle UserForm1, tu peux essayer ceci :
VB:
For i = 1 To 7
    tQuantite(i) = UserForm1.Controls("z_Quantite_" & i)
Next i

Code à adapter à ton besoin.

A+

Oh parfait ca fonctionne magnifiquement !

Juste avant de poster ma réponse, j'ai cherché ce que faisait Controls sans trop comprendre comment cela fonctionnait exactement. Qu-est ce que cela récupère ? La Value du Control sous forme d'une String ?
(Donc que pour "simplifier" UserForm1.Controls("z_Quantite_" & i) voudrait dire implicitement UserForm1.Controls("z_Quantite_" & i).Value ?)

Merci en tout cas, cela va grandement m'aider pour la suite !
 
Re : Problème Variable dynamique pour récupérer des informations de TextBox d'un User

Re-bonsoir Caldou.

C'est cela, t'as tout compris. Lorsqu'on ne spécifie rien après "UserForm1.Controls("z_Quantite_" & i)", cela revient implicitement à .Value
Il en est de même pour Range("") qui est équivalent à Range("").Value
Mais il faut faire attention, cela provoque quelquefois des erreurs de compilation.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
79
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
503
Retour