IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Alimenter une TextBox créée dynammiquement [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2018
    Messages : 4
    Par défaut Alimenter une TextBox créée dynammiquement
    Bonjour,

    je coince sur l'utilisation de Textbox que j'ai créé de façon dynamique

    J'ai un bout de code de type :

    dim TB as MSForms.TextBox
    dim i as integer
    dim NOMTB as string

    for i =1 to 10
    NOMTB= "Champ" & i
    set TB =Me.Controls.Add("forms.textbox.1", NOMTB, True)
    with TB
    .Left = 20
    .Top = 50 + (20*1)
    next i


    Jusque là tout va bien, mes textbox sont créées et alignées comme je le souhaite.
    Par contre, impossible d'aller charger la valeur de la textbox en dehors de la boucle

    une syntaxe de type Champ1.Value = "toto" ne fonctionne pas.

    Je ne vois pas mes objets [Champ1], ...[Champ10] dans les variables de mon [Me], pourtant si je parcours mes formes avec un Controls et que j'interroge les .Name, j'ai bien Champ1 à Champ10 qui m'est remonté.

    Quelqu'un aurait-il une solution à m'apporter afin que je puisse alimenter mes textbox créées dynamiquement comme je le souhaite ?

    D'avance merci.

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 041
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    A tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("Champ1").Text = "toto"
    :bug:

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2018
    Messages : 4
    Par défaut
    Citation Envoyé par tototiti2008 Voir le message
    Bonjour,

    A tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("Champ1").Text = "toto"

    Merci, mais cela ne fonctionne pas non plus.
    J'ai testé différentes choses ("Champ1").Value, (Champ1).Text .... j'arrive toujours à la même erreur d'éxécution '438' Proprièté ou méthode non gérée par cet objet ...

  4. #4
    Membre expérimenté
    Homme Profil pro
    libre
    Inscrit en
    Septembre 2024
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Septembre 2024
    Messages : 126
    Par défaut
    Le code que tu as posté contient une erreur un End With manquant
    et les Textbox sont entassés dans la même position 50 + (20 * 1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim TB As MSForms.TextBox
    Dim i As Integer
    Dim NOMTB As String
     
    For i = 1 To 10
        NOMTB = "Champ" & i
        Set TB = Me.Controls.Add("forms.textbox.1", NOMTB, True)
        With TB
          .Left = 20
          .Top = 50 + (20 * i)
        End With
    Next
    ' ajouter des valeurs
    Me.Controls("Champ1") = 1500
    Me.Controls("Champ2").Text = 2000
    Me.Controls("Champ3").Value = 3000

  5. #5
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 041
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Pourtant j'ai testé, ai créé un userform vide et ai lancé sur un évènement au choix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub UserForm_Click()
    Dim TB
        Set TB = Me.Controls.Add("forms.textbox.1", "Champ1", True)
        With TB
            .Left = 20
            .Top = 70
        End With
        Me.Controls("Champ1").Text = "toto"
    End Sub
    Et ça marche...
    :bug:

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2018
    Messages : 4
    Par défaut
    Citation Envoyé par rMist2024 Voir le message
    Le code que tu as posté contient une erreur un End With manquant
    et les Textbox sont entassés dans la même position 50 + (20 * 1)
    Effectivment, mais ce n'est pas mon code,juste du texte à titre d'exemple.
    Désolé pour cette mauvaise présentation, et merci de ton attention et ta précision.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2018
    Messages : 4
    Par défaut
    Citation Envoyé par tototiti2008 Voir le message
    Bonjour,

    Pourtant j'ai testé, ai créé un userform vide et ai lancé sur un évènement au choix


    Et ça marche...
    Je viens de reprendre en partant de vos codes, en utilisant boucle et variable, à partir d'un UserForm vierge et effectivement tout fonctionne.

    Je ne sais que dire, si ce n'est merci à vous deux


  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 454
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 454
    Par défaut
    Hello,

    Il y a un peut plus simple non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim TB As MSForms.TextBox
        '// code de creation dynamique du contrôle
    TB.Text = "Toto"

  9. #9
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 041
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Hello,

    Il y a un peut plus simple non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim TB As MSForms.TextBox
        '// code de creation dynamique du contrôle
    TB.Text = "Toto"
    Bonjour deedolith,

    il les crée dans une boucle et je suppose qu'il les affecte plus tard, suivant des traitements intermédiaires
    :bug:

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Changer le mode d'alimenter une TextBox
    Par criscris11 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/07/2012, 12h54
  2. Alimenter une requete SQL par la valeur d'un TextBox
    Par Monta^^ dans le forum ASP.NET
    Réponses: 5
    Dernier message: 06/02/2012, 12h17
  3. Réponses: 11
    Dernier message: 31/08/2010, 10h49
  4. Alimenter une TextBox Avec le contenu d'une cellule
    Par nico18987 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/10/2008, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo