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 :

Selection de controles sur tabcontrol


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 84
    Points : 63
    Points
    63
    Par défaut Selection de controles sur tabcontrol
    Bonjour,
    je souhaite sélectionner tous les controls de ma forme seulement voila mes controls sont dans des tabpage.
    J 'ai déjà utilisé c code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
            Dim ctrl As Control
     
            For Each ctrl In Me.Controls
                If TypeName(ctrl) = "TextBox" Then
                    wsExcel.Range(CTRL. Tag).Value = ctrl.Text
                End If
     
            Next
    Pour sélectionner les control dans une forme, mais la pour le tab control je sèche..... Ce dois être du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim ctrl As TabPageControlCollection
     
                For Each ctrl In Me.TabPageControlCollection
                    If TypeName(ctrl) = "TextBox" Then wsExcel.Range(ctrl.Tag).Value = ctrl.Text
                Next
                Dim i As Integer, j As Integer
    Mais la je bloque........
    Y'aurai - t - il quelqu'un pour m' aider ??

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 84
    Points : 63
    Points
    63
    Par défaut Toujours avec ce souci
    voila a quoi ressemble mon code :
    Code vb.net : 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
     
      appExcel = CreateObject("Excel.Application")
                'Ouverture du fichier type Excel
                wbExcel = appExcel.Workbooks.Open("\\Ppffiles\commun\PRODUCTION\POPP\Rapports\F-PRO-09 Rapport injection.xlsx")
                'wsExcel correspond à la première feuille du fichier
                wsExcel = wbExcel.Worksheets(1)
                'on affice pas excel 
                appExcel.Visible = True
     
                'Je declare la première page du fichier rapport
                Dim NativeWorksheet As Microsoft.Office.Interop.Excel.Worksheet = wbExcel.Worksheets("rapport d'injection")
                Dim i As Integer, j As Integer
     
     
     
                ' Dim tb As TabPageControlCollection
                Dim ctrl As Control
     
                'For i = 0 To TabControl1.TabPages.Count - 1
                For Each ctrl In TabControl1.TabPages
                    If TypeName(ctrl) = "TextBox" Then
                        wsExcel.Range(ctrl.Tag).Value = ctrl.Text
                    End If

    Et la rien ne se passe comment faire S.V.P.

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each tp As TabPage In TabControl1.TabPages
      For Each ctrl As Control In tp.Controls
        ' ...
      Next
    Next

    [Edit]Au fait, les "textbox"s sont-il dans des "panel"s ou des "groupbox"s ? (auquel cas il faut en tenir compte)
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 84
    Points : 63
    Points
    63
    Par défaut Réponse
    En fait j'ai réussi pour les textbox dans les panels avec ce code
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                For Each ctrl In Me.TableLayoutPanel1.Controls
                    If TypeName(ctrl) = "TextBox" Then
                        wsExcel.Range(ctrl.Tag).Value = ctrl.Text
                    End If
                Next
    Mais j'ai deux soucis :

    Ayant plusieurs Panel je répète ce code autant de fois que nécessaire (pas très esthétique), et mon second pb est que je dispose aussi de checkbox......
    Et la c'est le drame : Je n'arrive pas a convertir mes textbox en valeur booléenne pour transferer leurs valeur sur Excel !!! J'ai essayé :
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                'Dim cb As CheckBox
                'For Each ctrl In Me.TabControl1.Controls
                '    If TypeOf ctrl Is CheckBox Then
                '        cb = ctrl
                '        If cb.Checked = True Then
                '            wsExcel.Range(ctrl.Tag).Value = ctrl.Text
                '        End If
                '    End If
                'Next

    En vain !!!! Une idée ?

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par killowatt Voir le message
    selection de controles sur tabcontrol
    je souhaite sélectionner tous les controls de ma forme seulement voila mes controls sont dans des tabpage.
    Citation Envoyé par killowatt Voir le message
    En fait j'ai réussi pour les textbox dans les panels avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each ctrl In Me.TableLayoutPanel1.Controls
    c'est quoi ? un TabControl ou un TableLayoutPanel ? Les deux imbriqués ?
    ____________________________________

    Citation Envoyé par killowatt Voir le message
    Je n'arrive pas a convertir mes textbox en valeur booléenne
    Quelles sont les valeurs contenues dans les propriétés "Text" des "TextBox" ?
    ____________________________________

    Sinon,
    soit tu fais des imbrications
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            For Each tp As TabPage In TabControl1.TabPages
                For Each pan In tp.Controls.OfType(Of Panel)()
                    For Each txt As TextBox In pan.Controls.OfType(Of TextBox)()
                        ' ici traitement de tous les textbox ...
     
                    Next
                Next
            Next
        End Sub
    Soit tu pars sur cet exempe : Boucler sur toutes les TextBox que tu adaptes.

    Tu peux écrire la méthode ainsi :
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Function GetAllControls(Of TControl As Control)(source As Control) As IEnumerable(Of TControl)
            Dim children = source.Controls.Cast(Of Control)()
            Return children.SelectMany(Function(child) GetAllControls(Of TControl)(child)).OfType(Of TControl).Concat(children.OfType(Of TControl))
        End Function
    Et l'utiliser de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Dim s As String = ""
            Array.ForEach(GetAllControls(Of TextBox)(Me).ToArray, Sub(tb) s &= tb.Text & vbCrLf)
            MessageBox.Show(s)
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 84
    Points : 63
    Points
    63
    Par défaut Je me suis trompé
    En fait c'est des checkbox que je n'arrive pas a convertir en booléen ... dsl...
    Et oui c'est une forme à l'interieur il y un tabcontrol et dedans il ya des textbox, des panel et des checkbox....

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bien, avec ces nouvelles spécifications :
    Soit :
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            For Each tp As TabPage In TabControl1.TabPages
                For Each pan In tp.Controls.OfType(Of Panel)()
                    For Each ckb As CheckBox In pan.Controls.OfType(Of CheckBox)()  ' ici traitement de tous les checkbox
                        wsExcel.Range(ckb.Tag).Value = ckb.Checked
                    Next
                Next
            Next

    Soit
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
            Array.ForEach(GetAllControls(Of CheckBox)(Me).ToArray, Sub(ckb) wsExcel.Range(ckb.Tag).Value = ckb.Checked)
    en utilisant la méthode
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Function GetAllControls(Of TControl As Control)(source As Control) As IEnumerable(Of TControl)
            Dim children = source.Controls.Cast(Of Control)()
            Return children.SelectMany(Function(child) GetAllControls(Of TControl)(child)).OfType(Of TControl).Concat(children.OfType(Of TControl))
        End Function

    Résultat (tabpage2 = colonne B) :
    Images attachées Images attachées   
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 84
    Points : 63
    Points
    63
    Par défaut Valeur
    Pour mes check box en l'occurrence je dois avoir des "X" dans les valeurs Tags, Donc je dois passe par la methode checkstate que je n'arrrive pas a glisser ......

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par killowatt Voir le message
    Pour mes check box en l'occurrence je dois avoir des "X" dans les valeurs Tags, Donc je dois passe par la methode checkstate que je n'arrrive pas a glisser ......
    Mais pourquoi diable vouloir convertir un boolean en string ?
    Kropernic

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par killowatt Voir le message
    Pour mes check box en l'occurrence je dois avoir des "X" dans les valeurs Tags, Donc je dois passe par la methode checkstate que je n'arrrive pas a glisser ......
    Rien compris.

    Dans les propriétés tag des "CheckBox"s j'ai mis la cellule excel (en design), a1, a2 ,a3 ,a4 répartie dans chaque "CheckBox" du panel1 du "TapPage1" et b1, b2, b3, b4 répartie dans chaque "CheckBox" du panel2 du "TapPage2".
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 84
    Points : 63
    Points
    63
    Par défaut
    Dans Dans vb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    If checkbox1.checked = true then 
    wsExcel.Range(ctrl.Tag).Value = "x"
    Pour que dans mon formulaire j'ai une case cochée

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par killowatt Voir le message
    Dans Dans vb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If checkbox1.checked = true then 
    wsExcel.Range(ctrl.Tag).Value = "x"
    Pour que dans mon formulaire j'ai une case cochée
    Là, si la case à cocher "checkbox1" est cochée, tu vas écrire un X dans excel dans la cellule spécifiée par ctrl.Tag.
    Que contient ctrl.Tag ?
    _______________________________
    Dans mon exemple :
    J'ai défini la propriété Tag de chaque "checkbox" avec une valeur de cellule excel (voir image)
    et la ligne wsExcel.Range(ckb.Tag).Value = ckb.Checked envoi l'état de la propriété booléenne ".Checked" du checkbox (vrai/faux) à excel

    Plutôt que de définir le tag dans le désigner, J'aurai pu écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            CheckBox1.Tag = "b1"
            CheckBox2.Tag = "b2"
    donc dans la boucle, je parcours les tous les "CheckBox"s, et la valeur "Checked" (true si CheckBox est cochée ; sinon, false.) est envoyée à excel
    Images attachées Images attachées  
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

Discussions similaires

  1. [Réseau] select() et accept() sur plusieurs sockets
    Par Higestromm dans le forum C++
    Réponses: 13
    Dernier message: 13/10/2008, 09h18
  2. [VB]Control sur une msflexgrid ?
    Par Shypster dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/01/2006, 14h29
  3. [JSP/WebSphere] Boucle de controle sur un FTP
    Par benben13 dans le forum Websphere
    Réponses: 10
    Dernier message: 30/08/2005, 16h18
  4. SELECT ORDER BY sur 2 tables
    Par _Eric_ dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/07/2004, 12h17
  5. affichage de controles sur un splash screen
    Par shrek dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/11/2003, 19h59

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