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

VB.NET Discussion :

utilisation des Textbox dans une boucle For


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 50
    Par défaut utilisation des Textbox dans une boucle For
    Bonjour,

    Je cherche à récupérer des valeurs de plusieurs Textbox pour cela j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       Dim i As Integer
            For i = 1 To 5
                ma_chaine = Me.Controls(TextBox & CStr(i)).Text
            Next i
    J'obtiens l'erreur suivante :
    'TextBox' est un type et ne peut pas être utilisé en tant qu'expression.
    Merci de m'aider

  2. #2
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    J'imagine que tu fais cela car tes contrôles sont nommé TextBox1, TextBox2, ... ? Auquel cas Textbox devrait être une chaine (entre guillemets). Ceci dit, ce n'est pas la façon la plus propre de procéder...

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 50
    Par défaut
    Citation Envoyé par Er3van Voir le message
    J'imagine que tu fais cela car tes contrôles sont nommé TextBox1, TextBox2, ... ? Auquel cas Textbox devrait être une chaine (entre guillemets). Ceci dit, ce n'est pas la façon la plus propre de procéder...
    évidement ! mes TextBox sont nommé Textbox1,Textbox2.... même avec les guillemets ( "Textbox") j'obtiens toujours la même erreur , si vous connaissez une autre méthode je suis prenant . Merci

  4. #4
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Bonjour, il vaut mieux faire comme çà à mon avis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim machaine As String = ""
    For Each ctrl As Control In Me.Controls
        If TypeOf ctrl Is TextBox Then
             Dim textBox As TextBox = CType(ctrl, TextBox)
             machaine = textBox.Text
        End If
    Next

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Citation Envoyé par Gurdil le nain Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim machaine As String = ""
    For Each ctrl As Control In Me.Controls
        If TypeOf ctrl Is TextBox Then
             Dim textBox As TextBox = CType(ctrl, TextBox)
             machaine = textBox.Text
        End If
    Next
    Bonsoir,
    sauf erreur, tu testes si le contrôle est de type TextBox, puis tu tentes une conversion, celle ci me semble superflue (il y a peut être une raison, tu me le diras) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            For Each ctrl As Control In Me.Controls
                If TypeOf ctrl Is TextBox Then
                    machaine = ctrl.Text
                End If
            Next
    et en condensé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            For Each ctrl In Me.Controls.OfType(Of TextBox)()
                machaine = ctrl.Text
            Next
    Ensuite pour différencier les TextBox, si les Panels ne conviennent pas, il y a leur propriété Tag qui peut servir à stocker des données propres au contrôle ou à un groupe de contrôles :
    exemple :
    si ctrl.Tag = "groupe1" alors je traite sinon je ne traite pas ...
    Enfin ceci reste à tester.

  6. #6
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    La dernière méthode de compile pas chez moi. Mais en effet, le cast est inutile dans ce cas on l'on souhaite récupérer uniquement le texte.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2010
    Messages : 151
    Par défaut
    Citation Envoyé par zayoub Voir le message
    Bonjour,

    Je cherche à récupérer des valeurs de plusieurs Textbox pour cela j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       Dim i As Integer
            For i = 1 To 5
                ma_chaine = Me.Controls(TextBox & CStr(i)).Text
            Next i
    J'obtiens l'erreur suivante :
    'TextBox' est un type et ne peut pas être utilisé en tant qu'expression.
    Salut,

    Il manque les Guillemets autour de TextBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("TextBox" & CStr(i)).Text
    Edit : arf Er3van plus rapide que moi, le temps de poster, une réponse entre temps XD

    @+
    Mat

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 50
    Par défaut
    Citation Envoyé par matll Voir le message
    Salut,

    Il manque les Guillemets autour de TextBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("TextBox" & CStr(i)).Text
    Edit : arf Er3van plus rapide que moi, le temps de poster, une réponse entre temps XD

    @+
    Mat
    Toujours le même problème en utilisant les guillemets

  9. #9
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Cela m'étonnerait beaucoup que tu aies toujours l'erreur
    'TextBox' est un type et ne peut pas être utilisé en tant qu'expression.
    Tu en as peut-être toujours une, mais pas celle-là.
    As-tu besoin de Cstr() par ailleurs ? A priori son entier sera casté implicitement.

    Citation Envoyé par Gurdil le nain Voir le message
    Bonjour, il vaut mieux faire comme çà à mon avis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim machaine As String = ""
    For Each ctrl As Control In Me.Controls
        If TypeOf ctrl Is TextBox Then
             Dim textBox As TextBox = CType(ctrl, TextBox)
             machaine = textBox.Text
        End If
    Next
    C'est en effet beaucoup plus propre !

  10. #10
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_chaine = Me.Controls(TextBox & CStr(i)).Text
    Pour moi, il doit aussi manquer le cast: Me.Controls sont des controles et donc pas de propriété .Text

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2010
    Messages : 151
    Par défaut
    Citation Envoyé par BenoitM Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_chaine = Me.Controls(TextBox & CStr(i)).Text
    Pour moi, il doit aussi manquer le cast: Me.Controls sont des controles et donc pas de propriété .Text
    Chez moi ceci fonctionne sans erreur ni avertissement (et Text proposé en auto-complétion) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox(Me.Controls("TextBox1").Text)
    Pour ma culture personnelle, en quoi la solution de Gurdil est-elle plus propre ? est-ce juste en terme d'optimisation car on vient chercher plusieurs TextBox ? Si l'on n'a besoin que d'un TextBox, la méthode initiale est-elle quand même moins bien que celle de Gurdil ?

    Merci

  12. #12
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 50
    Par défaut
    Salut tout le monde ,
    je tiens à vous remercier pour votre aide et de m'avoir accorder votre temps. mais il me reste un tout petit problème
    Bon J'ai réussie à récupérer les valeurs de mes Textboxe en utilisant le code que vous m'avez proposer, j'ai fais quelques modifications bien sur :
    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
     
    Dim tab_coti(60) As String 'le tableau ou je dois stocké les valeurs des Textboxe 
    Dim Last As Integer = 0 ' une variable de teste 
    Dim i As Integer = 0 ' un simple compteur 
     
    For Each ctrl As Control In Me.form1.Controls
                If Last = 0 Then
                    If TypeOf ctrl Is TextBox Then
                        Dim ValBox As TextBox = CType(ctrl, TextBox)
                        If ValBox.Text = String.Empty Then ' si je rencontre un Textbox vide je sort de la boucle 
                            Last = 1
                            GoTo a
                        Else
                            machaine = ValBox.Text.ToString
                        End If
     
                        If i Mod 2 = 0 Then ' si le Textbox conteint l'année 
                            tab_coti(i) = machaine
                            i = i + 1
                        Else
                            tab_coti(i) = CDbl(machaine) ' si le Textbox contient le montant de cotisation  
                            i = i + 1
                        End If
     
                    End If
                End If
     
            Next
    Le problème qui se pose c'est que en utilisant cette méthode mon tableau et remplit de la manière suivantes : TB1->TB2->TB7->TB8->TB3-TB4......
    Moi je le veux de cette maniéré : TB1->TB2->TB3->TB4.....
    La forme de mes Textboxe est en miniature , j'attends vos réponses Merci
    Images attachées Images attachées  

  13. #13
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Euh alors là, une question :

    Pourquoi ne pas utiliser une dataGridView ?

  14. #14
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 50
    Par défaut
    Citation Envoyé par Gurdil le nain Voir le message
    Euh alors là, une question :

    Pourquoi ne pas utiliser une dataGridView ?
    Oui j'ai pensé à ça mais comme je débute sur Asp/vb.net j'ai réussie seulement a afficher les données de ma table avec une requête SELECT mais je vois pas comment faire pour l'insertion , si vous connaissez une simple méthode pour le faire ou quoi que ce soit qui peut m'aider je suis prenant .

  15. #15
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Citation Envoyé par zayoub Voir le message
    j'ai réussie seulement a afficher les données de ma table avec une requête SELECT mais je vois pas comment faire pour l'insertion , si vous connaissez une simple méthode pour le faire ou quoi que ce soit qui peut m'aider je suis prenant .
    Pour insérer des lignes sur la DGV ou en base ?

    Pour mettre une ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDGV.Rows.Add(val1, val2, val3, ...)
    Pour les récupérer :

    Pour une cellule en particulier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDGV.Rows(n°Ligne).Cells(n°Colonne).Value

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Par défaut
    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
     
    Dim tab_coti(60) As String 'le tableau ou je dois stocké les valeurs des Textboxe 
    Dim Last As Integer = 0 ' une variable de teste 
    Dim i As Integer = 0 ' un simple compteur 
     
    For Each ctrl As Control In Me.form1.Controls
                If Last = 0 Then
                    If TypeOf ctrl Is TextBox Then
                        Dim ValBox As TextBox = CType(ctrl, TextBox)
                        If ValBox.Text = String.Empty Then ' si je rencontre un Textbox vide je sort de la boucle 
                            Last = 1
                            GoTo a
                        Else
                            machaine = ValBox.Text.ToString
                        End If
     
                        If i Mod 2 = 0 Then ' si le Textbox conteint l'année 
                            tab_coti(i) = machaine
                            i = i + 1
                        Else
                            tab_coti(i) = CDbl(machaine) ' si le Textbox contient le montant de cotisation  
                            i = i + 1
                        End If
     
                    End If
                End If
     
            Next

    Bon courage a celui qui devra reprendre ce code...

    Et surtout, les GOTO sont a bannir !

  17. #17
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 50
    Par défaut
    Citation Envoyé par Shadam Voir le message
    Pour insérer des lignes sur la DGV ou en base ?
    Je veux insérer dans une base de données les lignes de ma GridView

Discussions similaires

  1. Utilisation de condition dans une boucle for-each
    Par siro1 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/03/2012, 17h07
  2. Récupération des données dans une boucle for
    Par boubounagh dans le forum Interfaces Graphiques en Java
    Réponses: 22
    Dernier message: 24/10/2011, 16h29
  3. [PHP 5.3] Tester des conditions dans une boucle for
    Par coulane dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2010, 11h50
  4. Utiliser un pas dans une boucle For .. to .. do
    Par colorid dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2009, 11h09

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