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

  1. #21
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    Voilà le bon fichier...ne pas tenir compte du précédent.

    Comment vide la cellule "Compteur_Click" lors de la fermeture du formulaire. J'ai réussi à le faire lorsqu'on click soit sur le bouton "Valider" soit sur le bouton "terminer" mais pas encore lorsque le formulaire est fermé via la croix rouge en haut à droite.
    Fichiers attachés Fichiers attachés

  2. #22
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Voici une technique facile.
    Utilise la propriete TAG des controles pour y mettre le nom de l'onglet et celui de la colonne destination.
    Exemple : OBSERVATOIRE A

    Puis ensuite tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    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
    Cordialement

    Docmarti.

  3. #23
    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!

  4. #24
    Candidat au Club
    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
    Points : 3
    Points
    3
    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.

  5. #25
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    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
    Cordialement

    Docmarti.

  6. #26
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    Merci Docmarti pour ce code mais je ne peux pas modifier les Tags des contrôles (cad Textbox) car il sont ajoutés dynamiquement ! Ils n’apparaîtront que lorsqu'on aura cliqué sur le Button "Ajouter actionnaire". ???

  7. #27
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    Docmarti,

    J'ai repris ton code en l'adaptant afin de récupérer les valeurs dans le Worksheet ("Liste déroulante"). J'ai également ajouter ==> .Tag = "Liste déroulate;a dans le code qui ajoute une nouvelle Textbox. Toutefois, la seule valeur que j'arrive à récupérer est "10" (valeur saisie dans la 10ème Textbox ajoutée". Les valeurs des précédentes Textboxes sont irrécupérables!!!!
    Fichiers attachés Fichiers attachés

  8. #28
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    C'est tres bien.

    Il manque une information importante cependant : la valeur M qui indique la ligne ou se trouve les controles.
    Donc ajoute dans .Tag un troisieme element : M qui va etre tres utile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Tag = "Liste déroulante;a;" & M
    Cordialement

    Docmarti.

  9. #29
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    J'ai rajouté "M" et le problème semble rester le même. J'ai toujours et uniquement la dernière valeur utilisée dans le dernier Textbox ajouté qui est récupérée.
    Fichiers attachés Fichiers attachés

  10. #30
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par chou2best987 Voir le message
    J'ai rajouté "M" et le problème semble rester le même.
    Ce n'est pas suffisant de mettre la valeur de M dans la propriete .TAG. Tu dois ensuite l'utiliser, sinon le problème reste le même, c'est sur et certain.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     col = Split(c.Tag, ";")(1)
     M = Split(c.Tag, ";")(2)
     Sheets(onglet).Cells(M + L, col).Value = c.Value
     Sheets(onglet).Activate
     Sheets(onglet).Cells(M + L, col).Select
     Stop
    La valeur M dans range("COMPTEUR_CLICK") semble s'effacer. Il faudrait chercher et trouver pourquoi.

    Et re-initialise Range("COMPTEUR_CLICK") a 1 dans UserForm_Initialize
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
         Range("COMPTEUR_CLICK") = 1  
    End Sub
    Cordialement

    Docmarti.

  11. #31
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse @DOCMARTI j'ai fait ce que tu suggérais et notamment supprimé le code qui effaçait la valeur de mon "compteur_click". Cependant, en intégrant ton code, une erreur apparaît "l'indice n'appartient pas à la sélection".

    J'ai tout essayé (déclarer la variable M etc) mais rien n'y fait. J'ai toujours la même erreur qui apparaît.
    Fichiers attachés Fichiers attachés

  12. #32
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    C'est fort probablement la propriete TAG du TextBox21 sur la page Composition du capital qui est
    Liste déroulante;a
    et qui devrait etre
    Liste déroulante;a;1
    Il lui manque le troisieme parametre.

    Quelqu'un t'avait suggere de supprimer ces 5 controles sur la page Composition du capital. C'est une tres bonne idee. Supprime-les. Ils sont inutiles.
    Cordialement

    Docmarti.

  13. #33
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    J'ai rajouté 1 en tant que troisième paramètre mais toujours aucun changement
    Fichiers attachés Fichiers attachés

  14. #34
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    Petite lueur d'espoir, j'ai rajouté des choses au code et je me suis rendu compte (en exécutant la macro pas à pas) que la macro ajoutait bien les valeurs des Textboxes dynamiques dans les cellules de la colonne A de la feuille "Liste déroulante". Mais ce qui se passe est que ces valeurs sont écrasé/supprimé et il ne reste que la dernière valeur du dernier textboxe.
    Fichiers attachés Fichiers attachés

  15. #35
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonsoir

    je suis étonné que après 35 posts personne ne t'ai parlér des modules classes
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #36
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    Les modules classes résoudraient mon problème ? Je veux bien en savoir plus si c'est le cas.

  17. #37
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    En réalité 35 réponse multiplié par 3 ou 4 discussion qui sens être redondante se télescopant!

    Ajuster tel trucs décale tel autre! Un seule et unique poste en 3 point aurait évité un cacophonie!

  18. #38
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    Ben pour le coup, je pensais avoir été assez claire loirs de mon premier post (en deux points):



    "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
    ."

  19. #39
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    En réalité tu rajoutes des contrôles sur des contrôles existants, tu j'efface pas les contrôles tu les découvres!


    Le premier contrôle créé garde bien sa valeur mais est recouvert par un nouveau!

    Utilise un type de variable utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    type controles
       txtBox1 as Object
       txtBox2 as Object
       lstBox1 as Object 
       label1 as Object 
    En dype
     
    Dim dbGrid() as controles,nb as long
    Private Sub CommandButton6_Click()
        redim preserver dbGrid(nb) 
    Set dbGrid(nb).label1 = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.Label.1", "ACTIONNAIRE" & nb, True)
    Set dbGrid(nb).txtBox1 = UserForm1.MultiPage2.Pages(2).Controls.Add("forms.TextBox.1") 
    Nb=nb+1
    je n'arrête pas de te dire qu'a chaque click sur CommandButton6 tu ajoutes des contrôles sur ceux existent!
    Dernière modification par Invité ; 04/07/2017 à 08h16.

  20. #40
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    Merci pour ce code, je l'ai intégré dans mes codes mais je ne suis pas plus avancé. J'ai l'impression plus on creuse, plus ça devient inextricable. Je pense qu'il ne doit pas vraiment y avoir de solutions.
    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