XL 2016 alimenter textbox via listbox

tikazor

XLDnaute Nouveau
Bonjour la communauté,

Grâce aux différentes ressources fournies sur le forum et autres sites, j'ai pu assembler un fichier qui à l'air de fonctionner. Construit de manière un peu artisanal, j'essaye de faire progresser le code afin de le rendre le plus fonctionnel possible.

à ce moment du code, en cliquant sur une ligne de la listbox je bute sur le remplissage des textbox d'userform (non modal) en lien avec l'userform principal (usfdata). J'aimerai savoir si certain pourrait m'aiguiller sur une résolution?

Je m'excuse par avance du fouilli dans le codage

voici le code en question qui doit ne pas être bien écrit :
VB:
 n = 1
           For m = TxtBoxMin2 To TxtBoxMax2
           UserForms.Add(USF).Controls("TextBox" & m) = usfData.ListBox1.List(ListBox1.ListIndex, n)
            'UserForms.Add(USF).Controls("TextBox1") = "test"
           n = n + 1
           Next
Merci Bon week-end
 

Pièces jointes

  • formulaire donnée.xlsm
    137.5 KB · Affichages: 14
Solution
Je pense avoir trouvé la solution à mon problème. C'était une erreur de place de la macro. Si je mets la macro à l'initialisation de l'userform concerné, le code a l'air de fonctionner.
Je rafraîchis tout ça et je mets à jour le code pour voir si tout est bon.

tikazor

XLDnaute Nouveau
Désolé @fanfan38 je n'étais pas devant mon poste , merci de ta lecture rapide voici quelques explications concernant le code initiant USF :

VB:
 For Each C In Me.Frame1.Controls
      If C.Value = True Then
      Bouton = C.Name
      End If
    Next C
    Tablo = "t_" & Bouton
    USF = "usf" & Bouton

puis on retrouve plus bas :

Code:
          n = 1
           For m = TxtBoxMin2 To TxtBoxMax2
           UserForms.Add(USF).Controls("TextBox" & m) = usfData.ListBox1.List(ListBox1.ListIndex, n)
            'UserForms.Add(USF).Controls("TextBox1") = "test"
           n = n + 1
           Next

De cette manière ça me permet grace aux optionbutton de naviguer entre mes tableaux, pages, worksheets sans démultiplier les codes
 

ChTi160

XLDnaute Barbatruc
Bonjour tikazor
Bonjour François
y'a aussi la possibilité de mettre
un exit for dans toutes ces Boucles Lol
VB:
For Each C In Frame1.Controls
      If C.Value = True Then
      Bouton = C.Name
      Exit For 'si trouvé on quitte la  boucle
      End If
Next C
Je crois qu'il y a du Boulot .
Courage!
Bonne journée
Jean marie
 

tikazor

XLDnaute Nouveau
Bonjour François,
Bonjour Jean-Marie,

Merci pour vos retours, j'ai la mauvaise manie d'accumuler les codes sans pour autant effacer ceux qui sont inutiles.
Effectivement, les contrôles "if" permettent de mieux gérer les retours d'erreur lorsque tous les bons boutons ne sont pas activés dans le bon ordre. Cependant, à moins que je les place au mauvais endroits cela ne résout pas l'alimentation des textboxs sur les usfficheactivite, usfmodule, usfparcours.
Je pense avoir trouvé l'origine du problème sans pour autant trouver de solution. Cela viendrait de ce code :

VB:
For Each C In Me.Frame1.Controls
      If C.Value = True Then
      Bouton = C.Name
      Exit For
      End If
Next C
 
 USF = "usf" & Bouton
           If USF = "usf" Then Exit Sub
          
           UserForms.Add(Bouton).Show 0
            
            UserForms.Add(Bouton).TextBox3 = "test"

Lorsque je modifie le code :
VB:
UserForms.Add(Bouton).Show 0
en
VB:
usfmodule.Add(Bouton).Show 0

l'alimentation se passe correctement.

Merci de votre lecture
Bon début de semaine
 

tikazor

XLDnaute Nouveau
Je pense avoir trouvé la solution à mon problème. C'était une erreur de place de la macro. Si je mets la macro à l'initialisation de l'userform concerné, le code a l'air de fonctionner.
Je rafraîchis tout ça et je mets à jour le code pour voir si tout est bon.
 

Statistiques des forums

Discussions
312 100
Messages
2 085 292
Membres
102 852
dernier inscrit
Badrcola26