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 :

[VBA-E]Problème formulaire créé dynamiquement . Comment récupérer les données?


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut [VBA-E]Problème formulaire créé dynamiquement . Comment récupérer les données?
    Bonjour,

    J'ai créé un formulaire de façon dynamique à partir d'une feuille Excel. en attribuant à chaque zone créée un nom de variable associé à un numéro que j'incrémente.
    ex: Variable1, Variable2....

    Mon problème est le suivant je créé ce formulaire dans une procédure Userform_initialize()

    Mais je n'arrive pas à récupérer mes données dans ma procédure cmdvalider_click()

    voici mon code source(très très résumé!)

    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
     
    Private Sub UserForm_Initialize()
      Dim TxtActivite(1 To 100) As Control
     
        h = 1
      'Initialisation des boites contenant les activités
        Set TxtActivite(h) = Controls.Add("Forms.TextBox.1")
        TxtActivite(h).Text = FeuilleActivite.Cells(h, 1).Value
        TxtActivite(h).Left = 108
        TxtActivite(h).Top = 0 + (h * 24)
        TxtActivite(h).Width = 210
        TxtActivite(h).Height = 18
     
    End Sub
     
    Private Sub CmdValider_Click()
         Dim h As Integer
         Dim TxtActivite(1 To 100) As Control
         h = 1
     
         If (TxtActivite(h) <> "") Then
    ...
    c'est la qu'Excel me sort sa fameuse phrase:
    variable objet ou variable de bloc with non définie

    En clair il ne connait pas la variableTxtActivite(h) dans ma procédure CmdValider_Click


    Si vous avez une idée sur la résolution de mon problème...

  2. #2
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    J'avais eu un souci similaire (moi c'était avec des checkbox) ya qq temps.
    Voici comment j'avais fait (je sais plus trop quoi était utile mais bon)
    - nommer tes textbox à leur initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    With TxtActivite(h)
        .Text = FeuilleActivite.Cells(h, 1).Value
        .Left = 108
        .Top = 0 + (h * 24)
        .Width = 210
        .Height = 18
        .Name = "txt" & h
    End With
    - utiliser ce nom dans ta procédure de validation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For h = 1 To 100
        If UserForm.Controls("txt" & h).Value <> "" Then
        ....
        End If
    Next
    - en gros je crois que ta variable txtActivite est plus ou moins locale et du coup quand tu la redimensionnes, ça efface tout enfin bref c'est un peu flou pour moi aussi
    J'espère que ça t'aura aidé...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    ca a l'air de marché . mais je te confirmerais ca quandj'aurai changé l'ensemble de mes x variables...

    Merci beaucoup.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    visiblement ca ne marche pas il n'a pas l'air de reconnaitre la concaténation en tant que nom de control
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If (UserForm.Controls("TxtTraites" & h).Value <> "") Then
    Il me dit "Objet requis"

  5. #5
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    ta form, elle s'appelle UserForm ou ... UserForm1 ou autrement ? (Propriété Name)

    Puis tu passes de TxtActivite à TxtTraites, on ne sait pas pourquoi ....

    Bref, n'importe quoi
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Ma form s'appelle UserForm et ensuite si effectivement dans mes exemple je passe TxtActivite à TxtTraites c'est parceque la j'ai simplifier le code à l'extrême je trouve pas ca compréhensible 3 pages de code pour une aide...
    Il est vrai qu'en faisant mon copier/coller je me suis trompé de ligne. Il fallait lire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    If (UserForm.Controls("TxtActivite" & h).Value <> "") Then
    Je n'arrive toujours pas à résoudre ce problème...

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Plates excuses
    D'accord tu avais raison j'avais complètement oublié que j'avais renommé ma Form.....
    Donc en faisant attention à ce détail....
    Le code de Cwain marche parfaitement merci beaucoup!!!!

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

Discussions similaires

  1. Comment récupérer les données de formulaires
    Par pracede2005 dans le forum Struts 2
    Réponses: 1
    Dernier message: 03/09/2012, 14h30
  2. Réponses: 2
    Dernier message: 08/05/2009, 18h00
  3. Comment récupérer les données de mon formulaire?
    Par kaselander dans le forum Langage
    Réponses: 27
    Dernier message: 02/03/2009, 16h03
  4. Réponses: 2
    Dernier message: 07/08/2008, 21h51
  5. Réponses: 3
    Dernier message: 06/07/2006, 18h49

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