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

VBA: Appeller une textbox créée depuis le code

mememe

XLDnaute Nouveau
Bonjour à tous!

Tout d'abord, bonne et heureuse année à tous!
Je viens à vous pour un petit problème qui me turlupine!

En fait, j'ai créé des textbox dans un userform via ma macro, et je lui ai donné un nom.
Jusqu'ici, rien d'extraordinaire.

Quand je demande une liste des controls du userform avec un for....each..., mes textbox apparaissent avec le bon nom.

Mais quand je tape une valeur dans le userform et que j'essai de la récupérer via un userform.textbox11.value, il ne reconnait pas la textbox.

Quelqu'un pour m'aider?
D'avance merci, ça me bloque un peu...

Bonne soirée!



Code:
Public Sub CommandButton1_Click()
Dim obj As Object
Dim answer As String

For Each obj In Def_paroi.Controls
answer = answer & vbLf & obj.Name
Next

MsgBox answer

answer = (Def_paroi.textbox32.Value)


Unload Def_paroi

End Sub

Public Sub nombre_mur_change()

Dim valeur As Variant

Def_paroi.Hide
ReDim nb_mur_paroi(Def_paroi.nombre_mur.Value)
nb_mur_paroi(no_paroi) = Def_paroi.nombre_mur.Value
    
Dim Top, Lefti, Width, Height, i As Integer
Dim NumeroTextBox As Integer
Dim TextBoxName, labelname, labelcolonne As String

'supp^ression des textbox

Dim CTRL As Control
i = 0
For Each CTRL In Me.Controls
    If TypeOf CTRL Is MSForms.TextBox Or TypeOf CTRL Is MSForms.Label Then
            Me.Controls.Remove (i)
    Else
        i = i + 1
    End If
Next
    
Top = 70

Width = 50
Height = 20
NumeroTextBox = 1




Def_paroi.Height = 115


i = 1
test = False

While i <= 20 And i <= nb_mur_paroi(no_paroi)

       
 Def_paroi.Width = 260
 Lefti = 70
             Def_paroi.Height = Def_paroi.Height + 25
            
        labelname = "Paroi" & i
        Set labelparoi = Def_paroi.Controls.Add("Forms.label.1", labelname, True) 'Ouverture est le nom de ma fenetre
        
        Lefti = 50
        
        With labelparoi
        .Visible = True
        .Caption = "paroi " & i
        .Top = Top 'Definit la distance entre le bord de la fenetre et le bord du conteneur
        .Left = Lefti - 45 'Definit la distance entre le bord gauche de la fenetre et le bord du conteneur
        .Width = Width 'Definit la largeur de l'objet
        .Height = Height 'Definit la hauteur de l'objet
        .Font.Size = 10
        End With
        
            
            
            For j = 1 To 3
        
                TextBoxName = "textbox" & i & j
                Set TextBox = Def_paroi.Controls.Add("Forms.textbox.1", TextBoxName, True)  'Ouverture est le nom de ma fenetre
        
                With TextBox
                .Name = TextBoxName
                .Visible = True
                .Top = Top 'Definit la distance entre le bord de la fenetre et le bord du conteneur
                .Left = Lefti 'Definit la distance entre le bord gauche de la fenetre et le bord du conteneur
                .Width = Width 'Definit la largeur de l'objet
                .Height = Height 'Definit la hauteur de l'objet
                .Font.Size = 10
                End With
                
                
                labelcolonne = "Labelcolonne" & j
                Set labelcol = Def_paroi.Controls.Add("Forms.label.1", labelcolonne, True)  'Ouverture est le nom de ma fenetre
        
                With labelcol
                .Visible = True
                .Top = 50 'Definit la distance entre le bord de la fenetre et le bord du conteneur
                .Left = Lefti 'Definit la distance entre le bord gauche de la fenetre et le bord du conteneur
                .Width = Width 'Definit la largeur de l'objet
                .Height = Height 'Definit la hauteur de l'objet
                .Font.Size = 10
                End With
                
                If j = 1 Then
                    labelcol.Caption = "Coord. X"
                Else
                    If j = 2 Then
                        labelcol.Caption = "Coord. Y"
                            Else
                                labelcol.Caption = "Teta /X"
                            End If
                    End If
                
                
            Lefti = Lefti + 70
            
            Next j
 i = i + 1
Top = Top + 25
        
Wend


If i > 20 Then
Top = 70
 For i = 21 To nb_mur_paroi(no_paroi)
 
             Def_paroi.Width = 520
             Lefti = 320
        
        labelname = "Paroi" & i
        
        Set labelparoi = Def_paroi.Controls.Add("Forms.label.1", labelname, True) 'Ouverture est le nom de ma fenetre
                
        With labelparoi
        .Visible = True
        .Caption = "paroi " & i
        .Top = Top 'Definit la distance entre le bord de la fenetre et le bord du conteneur
        .Left = Lefti - 45 'Definit la distance entre le bord gauche de la fenetre et le bord du conteneur
        .Width = Width 'Definit la largeur de l'objet
        .Height = Height 'Definit la hauteur de l'objet
        .Font.Size = 10
        End With
        
            
            
            For j = 1 To 3
        
                TextBoxName = "textbox" & i & j
                Set TextBox = Def_paroi.Controls.Add("Forms.textbox.1", TextBoxName, True)  'Ouverture est le nom de ma fenetre
        
                With TextBox
                .Name = TextBoxName
                .Visible = True
                .Top = Top 'Definit la distance entre le bord de la fenetre et le bord du conteneur
                .Left = Lefti 'Definit la distance entre le bord gauche de la fenetre et le bord du conteneur
                .Width = Width 'Definit la largeur de l'objet
                .Height = Height 'Definit la hauteur de l'objet
                .Font.Size = 10
                End With
                
                
                labelcolonne = "Labelcolonne" & j
                Set labelcol = Def_paroi.Controls.Add("Forms.label.1", labelcolonne, True)  'Ouverture est le nom de ma fenetre
        
                With labelcol
                .Visible = True
                .Top = 50 'Definit la distance entre le bord de la fenetre et le bord du conteneur
                .Left = Lefti 'Definit la distance entre le bord gauche de la fenetre et le bord du conteneur
                .Width = Width 'Definit la largeur de l'objet
                .Height = Height 'Definit la hauteur de l'objet
                .Font.Size = 10
                End With
                
                If j = 1 Then
                    labelcol.Caption = "Coord. X"
                Else
                    If j = 2 Then
                        labelcol.Caption = "Coord. Y"
                            Else
                                labelcol.Caption = "Teta /X"
                            End If
                    End If
                                
            Lefti = Lefti + 70
            
            Next j
            
        Top = Top + 25
 
        
Next
End If


Def_paroi.Height = Def_paroi.Height - 25

Def_paroi.Show
'Def_paroi.nombre_mur.SetFocus

'MsgBox (Def_paroi.textbox32.Value)


End Sub
 

James007

XLDnaute Barbatruc
Re : VBA: Appeller une textbox créée depuis le code

Bonjour,

Pour le bien commun de tous les participants, tu pourrais joindre ton fichier, par la même occasion ... puisque tu t'auto-félicites ... !!!

Quant à ta question, comme toujours avec Excel, bien sûr que c'est possible ...
Il va simplement falloir que tu penches sur les modules de classe ...

A +
 

mememe

XLDnaute Nouveau
Re : VBA: Appeller une textbox créée depuis le code

Re!

Je suis loin de m'auto féliciter...
Je donnais juste le point où j'en étais!

Ci joint le fichier!
Et ce que je voulais, c'est que ça fasse comme le premier USF, mais pour chaque page du multipage du 2 eme USF!
 

Pièces jointes

  • Calcul_paroi_0.2.zip
    32.8 KB · Affichages: 43
Dernière édition:

kjin

XLDnaute Barbatruc
Re : VBA: Appeller une textbox créée depuis le code

Bonjour,
Je sens venir l'usine à gaz et sans en comprendre les tenants et aboutissants, difficile d'aller plus loin...
Comme déjà dit, il suffit d'ajouter un module de classe dans ton userform vierge en y incluant les procédures necessaires; il suffira alors d'initialiser la classe lors de l'ajout des nouveaux contrôles
Reviens si tu n'y arrive pas ou si tu ne comprends pas
A+
kjin
 

mememe

XLDnaute Nouveau
Re : VBA: Appeller une textbox créée depuis le code

Bonjour,
D'accord pour le module de classe dans le userform.
Je vais me pencher là dessus, me documenter et tenter de comprendre tout ça!

Meri en tout cas!
 

kjin

XLDnaute Barbatruc
Re : VBA: Appeller une textbox créée depuis le code

Bonjour,
Suite à ton MP, je te répondrais qu'ici tu ne "saoules" personne, libre à chacun de répondre ou non, mais je préfère que les dixcussions se poursuivent ici pour que chacun puisse profiter et apporter sa pierre s'il le souhaite.
Pour en revenir à ton pb, il est difficile de véritablement cibler la réponse dans la mesure où l'on ne sait rien des tenants et aboutissants de ce projet.
Nèanmoins, j'ai corrigé le fichier et ajouter le module de classe. Lorsque tu click sur les combos nouvellement crées, leur nom s'affiche et tu pourras de la même manière leur affecter une procédure où une fonction.
Maintenant, est-il véritablement utile de develpopez une telle usine à gaz dont la maintenance sera difficile alors que par exemple, il suffit de creer des formulaires dont les contrôles sont activés à la demande
A+
kjin
 

Pièces jointes

  • mememe_v3.zip
    33.7 KB · Affichages: 59

mememe

XLDnaute Nouveau
Re : VBA: Appeller une textbox créée depuis le code

Bonsoir,

Ok, j'ai pigé comment ça marche!

Merci pour tout, je vous tiens au courant du resultat, même s'il risque d'être bien dégueulasse quand on fait Alt+11 !
Merci pour tout, vraiment!

bonne soirée!
 

Discussions similaires

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