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 :

Récupérer les valeurs de Textboxs créés dynamiquement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Juin 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Papouasie

    Informations professionnelles :
    Activité : Collégien
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2017
    Messages : 23
    Par défaut Récupérer les valeurs de Textboxs créés dynamiquement
    Bonjour,

    J'ai des soucis avec les codes VBA ci-dessous:

    1° La valeur saisie dans les Textbox créés dynamiquement dans un formulaire (à chaque click d'un bouton "CommandButton") s'effacent à chaque fois que le Textbox suivant est créé (à chaque click dudit bouton "CommandButton"). En gros, à chaque click les Textbox se vident.

    2° Comment faire pour récupérer les valeurs saisies dans les Textbox créés dynamiquement afin de les faire apparaître dans une liste déroulante placée sur une feuille de calcul Excel.

    Merci.

    Voici le code cité plus haut:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Private Sub CommandButton6_Click()
        Dim tab_actionnaires()
        Dim M As Integer
        Dim NomTextBox As Single
        Dim nouvelleTextBox As Control
        Dim nouveauLabel As Control
        Dim nouveauLabel2 As Control
        Dim nouvelleCheckBox As Control
        Dim nouvelleTextBox2 As Control
        Dim nouvelleTextBox3 As Control
        Dim i As Integer
        Dim j As Integer
        Dim DerCol As Range
     
     
    MajCompteur 'Dénombre le nombre de clicks
     
    M = Range("COMPTEUR_CLICK").Value
     
    'DerCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Colum
     
    For i = 1 To M + 1 - M
     
     
        Set nouveauLabel = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.Label.1", "ACTIONNAIRE" & i + 4, True)
            With nouveauLabel
                .Name = "ACTIONNAIRE" & i + 30
                .Left = 12
                .Top = 408 + i * 42
                .Width = 78
                .Height = 18
                .Caption = "ACTIONNAIRE" & " " & i + 10
                .FontBold = True
            End With
     
        Set nouvelleTextBox = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.TextBox.1") ' ajout d'une nouvelle TextBox dans le UserForm
            With nouvelleTextBox
                .Name = "TextBox" & i + 30
                .Left = 102
                .Top = 402 + i * 42
                .Width = 360
                .Height = 34.5
                .Text = Worksheets("Source Actionnaires").Cells(i, 2)
            End With
     
     
        Set nouvelleCheckBox = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.CheckBox.1") ' ajout d'une nouvelle CheckBox dans le UserForm
            With nouvelleCheckBox 'propriétés de la nouvelle CheckBox
                .Name = "CheckBox" & i + 30 'nom de la forme : CheckBox x
                .Left = 474 'positionnement sur l'axe des abscisses
                .Top = 414 + i * 40 'positionnement sur l'axe des ordonnées (seule caractér tique variable dans l'exemple)
                .Width = 85.5 'largeur
                .Height = 17.25 'hauteur
                .Caption = "Personne Morale"
            End With
     
        Set nouvelleTextBox2 = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.TextBox.1") ' ajout d'une nouvelle TextBox dans le UserForm
            With nouvelleTextBox2 'propriétés de la nouvelle TextBox
                .Name = "TextBox" & i + 98 'nom de la forme : TextBox x
                .Left = 576 'positionnement sur l'axe des abscisses
                .Top = 408 + i * 42 'positionnement sur l'axe des ordonnées (seule caractéristique variable dans l'exemple)
                .Width = 144 'largeur
                .Height = 20.25 'hauteur
            End With
     
        Set nouvelleTextBox3 = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.TextBox.1") ' ajout d'une nouvelle TextBox dans le UserForm
            With nouvelleTextBox3 'propriétés de la nouvelle TextBox
                .Name = "TextBox" & i + 200 'nom de la forme : TextBox x
                .Left = 726 'positionnement sur l'axe des abscisses
                .Top = 408 + i * 42 'positionnement sur l'axe des ordonnées (seule caractéristique variable dans l'exemple)
                .Width = 144 'largeur
                .Height = 20.25 'hauteur
            End With
     
       Next i
     
    End Sub

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    j'ai ouvert un nouveau classeur.xlsm que j'ai "remonté" avec ton code.

    j'ai donc nommé 2 cellules : "MajCompteur" et "COMPTEUR_CLICK"

    je lance...et une première erreur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MajCompteur 'Dénombre le nombre de clicks
    je construit un userform avec 2 multipage,...

    je lance...et une autre erreur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Set nouveauLabel = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.Label.1", "ACTIONNAIRE" & i + 4, True)
    que je transforme en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Set nouveauLabel = UserForm1.MultiPage2.Page2.Controls.Add("forms.Label.1", "ACTIONNAIRE" & i + 4, True)
    et la même erreur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Set nouvelleTextBox = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.TextBox.1") ' ajout d'une nouvelle TextBox dans le UserForm
    que je transforme en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Set nouvelleTextBox = UserForm1.MultiPage2.Page2.Controls.Add("forms.TextBox.1") ' ajout d'une nouvelle TextBox dans le UserForm
    je lance...et une autre erreur... (c'est pas un problème )

    c'est ICI que ce trouve ton Bug... (peut être )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Set nouvelleTextBox = UserForm1.MultiPage2.Page2.Controls.Add("forms.TextBox.1") ' ajout d'une nouvelle TextBox dans le UserForm
            With nouvelleTextBox
                .Name = "TextBox" & i + 30
                .Left = 102
                .Top = 402 + i * 42
                .Width = 360
                .Height = 34.5
                .Text = Worksheets("Source Actionnaires").Cells(i, 2)
            End With
    tu as une "nouvelleTextBox" que tu renomme ".Name = "TextBox" & i + 30"
    MAIS tu écris dans "nouvelleTextBox" avec ".Text = Worksheets("Source Actionnaires").Cells(i, 2)"
    ALORS QUE son nouveau nom est ".Name = "TextBox" & i + 30"

    si c'est bien le souci, il suffit de renommer en dernier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            With nouvelleTextBox
                .Left = 102
                .Top = 402 + i * 42
                .Width = 360
                .Height = 34.5
                .Text = Worksheets("Source Actionnaires").Cells(i, 2)
                .Name = "TextBox" & i + 30
            End With

    il y a 5 cas similaires dans ton code.

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub TexteDesControlesTextBox()
     
    Dim cCont As Control
     
    For Each cCont In UserForm1.Controls
     
    If TypeName(cCont) = "TextBox" Then
     Debug.Print cCont.Name, cCont.Text
    End If
     
    Next cCont
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Juin 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Papouasie

    Informations professionnelles :
    Activité : Collégien
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2017
    Messages : 23
    Par défaut
    Re-Bonjour,

    Merci pour vos réponses mais l'idée en fait est que:

    - dans le orksheet "Observatoire", colonnes "Actionnaires", le nom des actionnaires (ainsi que leurs parts dans une société) soit affiché sous forme de liste déroulante (et non plus à la suite, comme c'est le cas) après leur saisi dans le formulaire.

    Vous trouverez ci-joint le fichier excel en question.

    Merci encore pour votre aide.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    avec le fichier c'est juste un poil plus clair (un petit poil...de caribou ??? )

    çà c'est ok --> c'est la page7 !!! index 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Set nouvelleTextBox = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.TextBox.1") ' ajout d'une nouvelle TextBox dans le UserForm
    bien que je n'arrive pas à cerner tous les détours du code,
    il y a un truc qui m'interpelle, à toi de voir ...
    à chaque click sur le CommandButton6 tu mets TOUT à ZERO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub CommandButton6_Click()
        Dim tab_actionnaires()
        Dim M As Integer
        Dim NomTextBox As Single
        Dim nouvelleTextBox As Control
        Dim nouveauLabel As Control
        Dim nouveauLabel2 As Control
        Dim nouvelleCheckBox As Control
        Dim nouvelleTextBox2 As Control
        Dim nouvelleTextBox3 As Control
        Dim i As Integer
        Dim j As Integer
        Dim DerCol As Range
    à toi de voir ce qui doit être déclaré en dehors du click

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  6. #6
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Juin 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Papouasie

    Informations professionnelles :
    Activité : Collégien
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2017
    Messages : 23
    Par défaut
    Ah bon je remet TOUT à Zéro? à chaque click? Ah ben c'était pas mon intention. Normalement, la fonction MajCompteur me permet de compter le nombre de clicks (à défaut d'avoir trouver mieux) et en fonction de ce nombre, ajouter le nombre de Textboxs correspondant. Pour ce faire, j'ai cru bon de mettre MajCompteur en début de macro pour récupérer ensuite le nombre de click et ainsi faire tourner ma macro.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir Doc,
    Tu peux créer un tableau en tête du formulaire et faire un Ubound du tableau!

  8. #8
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Juin 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Papouasie

    Informations professionnelles :
    Activité : Collégien
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2017
    Messages : 23
    Par défaut
    En intégrant le code de @Doc, je ne toujours rien qui se passe, pas de listes déroulantes et encore moins avec les valeurs des textboxes ajoutées dynamiquement.

  9. #9
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Est-ce que tu sais comment, en mode Edition, modifier les proprietes des controles?

    En mode Edition, clic droit sur le controle dont la valeur doit etre ecrite dans la colonne A de l'onglet OBSERVATOIRE. Choisis Proprietes. Modifie la propriete TAG de ce controle pour OBSERVATOIRE;a

    Idem pour le controle dont la valeur doit etre ecrite dans la colonne B ou tu changes la propriete TAG pour OBSERVATOIRE;b

    Etc...

    Ne t'occupe pas pour le moment des controles dont les valeurs doivent aller dans une liste deroulante.

    Ensuite tu utilises le code suivant comme Validation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim c As Control
    L = Sheets("OBSERVATOIRE").Cells(Rows.Count, "A").End(xlUp).Row + 1
    For Each c In Me.Controls
    If c.Tag <> "" Then
     onglet = Split(c.Tag, ";")(0)
    If Not onglet Like "OBSERVATOIRE" Then
    Else
     col = Split(c.Tag, ";")(1)
     Sheets(onglet).Cells(L, col).Value = c.Value
    End If
    End If
    Next c

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ça efface ou ça recouvre?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PrivateSub CommandButton6_Click()
    For i = 1To M + 1 - M
         .Top = 408 + i * 42 'si i=1 tu recouvres le contrôle créé au précédent CommandButton6_Click
    next
    SaveIndex=SaveIndex + i
    
    Il faut utiliser une variable qui sauvegarde l'index du dernier contrôle créé!

    .Top = 402 +( i * 42 * SaveIndex)
    Dernière modification par Invité ; 14/06/2017 à 09h10.

  11. #11
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    modifies ta boucle : For i = 1 To M + 1 - M
    en clair : For i = 1 To M + 1

    de plus , j'ai indiqué la possibilité de ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .Text = Worksheets("Source Actionnaires").Cells(i+30, 2)
    pour faire correspondre les lignes avec les box

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  12. #12
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Juin 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Papouasie

    Informations professionnelles :
    Activité : Collégien
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2017
    Messages : 23
    Par défaut
    @MJPMJP j'ai fait ce que tu suggérais précédemment. J'arrive donc à ajouter des Textbox à la suite. Toutefois, le problème valeur saisies dans les nouvelles Textboxes qui s'effacent, persiste! Je ne veux juste plus que ça s'efface, l'utilisateur du formulaire ajoutant au fur et à mesure de ses clicks une valeur à l'intérieur du TextBox. J'ai tenté la méthode suggérée par @Dysorthographie mais ça me donne un truc trop louche, du style, ça me décale toutes mes Textboxes.

  13. #13
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    j'ai écris une série (1 a 50) dans "Source Actionnaires" colonne "B"
    et çà fonctionne ,
    à chaque click, çà ajoute une textbox avec le contenu de la colonne "B"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .Text = Worksheets("Source Actionnaires").Cells(i+10, 2)
    avec cette modif "i+10" ET NON "i+30" (désolé ) , la textbox 11 recoit bien 11 de la colonne "B"

    question
    est ce que tu enregistres tes data ? et où ?

    je n'ai pas regardé ce problème dans ton fichier

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Actuellement , chaque fois que tu click tu ajoute des textebox. Et comme i commence toujours à 1 les nouveaux textebox ce positionnent sur celle crée précédemment ce qui te fait penser que. Le contenu s'efface!

    Pour ne pas recouvrir le textebox existant il faut faire un gestion d'offset i + Offset! Qui a t-il de chelou là dedans?

  15. #15
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Juin 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Papouasie

    Informations professionnelles :
    Activité : Collégien
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2017
    Messages : 23
    Par défaut
    En fait, @mjpmjp la feuille "source actionnaire" servirait à stocker les saisies des textboxes du formulaire (l'idée est de créer une liste déroulante à partir de ces données stocker sur la feuille "source actionnaires", mais on en est encore là).

    @Dystilography, la méthode qui consiste à utiliser "Offset" ne s'applique que pour les cellules d'un worksheet pas pour des champs de formulaire. Je ne vois pas comment faire sinon. Merci

  16. #16
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    En fait, @mjpmjp la feuille "source actionnaire" servirait à stocker les saisies des textboxes du formulaire (l'idée est de créer une liste déroulante à partir de ces données stocker sur la feuille "source actionnaires", mais on en est encore là).
    TU en est encore là...

    moi non , j'ai dis tout ce que j'avais à dire (pas grand chose )


    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  17. #17
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Juin 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Papouasie

    Informations professionnelles :
    Activité : Collégien
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2017
    Messages : 23
    Par défaut
    Rectification: je voulais écrire *On n'en est pas encore là. Même si "ce n'est pas grand chose", merci tout de même pour ta contribution.

  18. #18
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    Rectification: j'ai toujours des choses à dire...

    dysorthographie :
    Bonjour,
    Actuellement , chaque fois que tu click tu ajoute des textebox. Et comme i commence toujours à 1 les nouveaux textebox ce positionnent sur celle crée précédemment ce qui te fait penser que. Le contenu s'efface!
    Pour ne pas recouvrir le textebox existant il faut faire un gestion d'offset i + Offset!...
    quand dysorthographie te propose : "gestion d'offset i + Offset!..."
    c'est le même principe que ce que je t'ai proposé : ".Text = Worksheets("Source Actionnaires").Cells(i+10, 2)"

    en clair :
    si tu persiste à garder les 10 premieres textbox alors tu dois en tenir compte et utiliser "i+10"

    mais tu peux également supprimer les 10 textbox "en dur" qui n'on pas lieux d’être...

    en ce qui concerne
    question
    est ce que tu enregistres tes data ? et où ?

    et
    je voulais écrire *On n'en est pas encore là...
    c'est pour autant de la même importance ,
    puisque de ton raisonnement : chaque textbox est liée à un data enregistré

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    For i = 1 To M + 1 - M
        On Error Resume Next
        Set nouveauLabel = UserForm1.Controls("ACTIONNAIRE" & i + 30)
        If Err Then Set nouveauLabel = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.Label.1", "ACTIONNAIRE" & i + 4, True)
        Err.Clear: On Error GoTo 0
            With nouveauLabel
                .Name = "ACTIONNAIRE" & i + 30
                .Left = 12
                .Top = 408 + i * 42
                .Width = 78
                .Height = 18
                .Caption = "ACTIONNAIRE" & " " & i + 10
                .FontBold = True
            End With
     
        Set nouvelleTextBox = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.TextBox.1") ' ajout d'une nouvelle TextBox dans le UserForm
            With nouvelleTextBox
                .Name = "TextBox" & i + 30
                .Left = 102
                .Top = 402 + i * 42
                .Width = 360
                .Height = 34.5
                .Text = Worksheets("Source Actionnaires").Cells(i, 2)
            End With
     
        Set nouvelleCheckBox = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.CheckBox.1") ' ajout d'une nouvelle CheckBox dans le UserForm
            With nouvelleCheckBox 'propriétés de la nouvelle CheckBox
                .Name = "CheckBox" & i + 30 'nom de la forme : CheckBox x
                .Left = 474 'positionnement sur l'axe des abscisses
                .Top = 414 + i * 40 'positionnement sur l'axe des ordonnées (seule caractér tique variable dans l'exemple)
                .Width = 85.5 'largeur
                .Height = 17.25 'hauteur
                .Caption = "Personne Morale"
            End With
     
        Set nouvelleTextBox2 = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.TextBox.1") ' ajout d'une nouvelle TextBox dans le UserForm
            With nouvelleTextBox2 'propriétés de la nouvelle TextBox
                .Name = "TextBox" & i + 98 'nom de la forme : TextBox x
                .Left = 576 'positionnement sur l'axe des abscisses
                .Top = 408 + i * 42 'positionnement sur l'axe des ordonnées (seule caractéristique variable dans l'exemple)
                .Width = 144 'largeur
                .Height = 20.25 'hauteur
            End With
     
        Set nouvelleTextBox3 = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.TextBox.1") ' ajout d'une nouvelle TextBox dans le UserForm
            With nouvelleTextBox3 'propriétés de la nouvelle TextBox
                .Name = "TextBox" & i + 200 'nom de la forme : TextBox x
                .Left = 726 'positionnement sur l'axe des abscisses
                .Top = 408 + i * 42 'positionnement sur l'axe des ordonnées (seule caractéristique variable dans l'exemple)
                .Width = 144 'largeur
                .Height = 20.25 'hauteur
            End With
       Next i
    End Sub
    Code pareil pour tous les contrôles : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      On Error Resume Next: Set nouvelleCheckBox = UserForm1.Controls("CheckBox" & i + 30)
        If Err Then Set nouvelleCheckBox = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.CheckBox.1") ' ajout d'une nouvelle CheckBox dans le UserForm
        Err.Clear: On Error GoTo 0

  20. #20
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Juin 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Papouasie

    Informations professionnelles :
    Activité : Collégien
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2017
    Messages : 23
    Par défaut
    En utilisant le code de @Docmarty, j'ai pu arriver là où je voulais:

    - Ajouter dynamiquement des Textboxes ==> OK
    - Conserver les valeurs des Textboxes lors d'un ajout ==> OK

    Désormais, j'aimerais récupérer les valeurs saisies dans les Textboxes ajoutées dynamiquement pour les stocker dans le worksheet "Source actionnaire"; et ainsi, partir de la pour créer une liste déroulante dans le worksheet "Liste déroulante".
    La difficulté ici réside dans le fait que les Texboxes sont créés dynamiquement, et donc, leur .Name également.

    Merci encor Pour votre aide.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Récupérer les valeurs de textboxes créées dynamiquement en JavaScript
    Par zakarinalaw dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/02/2014, 22h04
  2. Réponses: 5
    Dernier message: 25/07/2013, 15h07
  3. Récupérer les valeurs d'un Usercontrol dynamique
    Par lutaine dans le forum ASP.NET
    Réponses: 6
    Dernier message: 23/06/2010, 16h20
  4. récupérer les valeurs d'un formulaire dynamique
    Par une_tite_question dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2008, 16h06
  5. Récupérer les valeurs des champs créés dynamiquement
    Par outlawz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/05/2006, 16h32

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