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 :

test cellules vide


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut test cellules vide
    Bonjour,
    j'ai 64 textbox nomées de a1 a a64
    j'aimerais tester dans une boucle les textbox vides
    merci

  2. #2
    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
    Par défaut
    Bonjour,

    Quel language ?

    Ex : en vb
    Pour traiter proprement si tous les TextBox (et seulement ceux-ci) sont dans un conteneur (panel, groupbox (, form)).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Sub TestTextBox(ByVal conteneur As Control)
            For Each txt As TextBox In conteneur.Controls.OfType(Of TextBox)()
                If txt.Text = "" Then  MessageBox.Show("vide") Else MessageBox.Show("renseigné")
            Next
        End Sub
    Appel TestTextBox(Panel1).


    Si d'autres Textbox ne sont pas à traiter (noms autres) dans le conteneur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Sub TestTextBox2(ByVal conteneur As Control)
            For i As Integer = 1 To 64
                If DirectCast(conteneur.Controls("a" & i.ToString), TextBox).Text = "" Then MessageBox.Show("vide") Else MessageBox.Show("renseigné")
            Next
        End Sub
    Appel TestTextBox2(Me) (ou Me représente le form par exemple, mais ce pourrait être un panel ou groupbox)
    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.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut
    j'ai créé une fonction pour mes calculs j'ai donc mis le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function calculordi1()
            If b.seul.Checked = True Then
                Dim conteneur As Control
                For i As Integer = 1 To 64
                    If DirectCast(conteneur.Controls("a" & i.ToString), TextBox).Text = "" Then MessageBox.Show("vide") Else MessageBox.Show("renseigné")
                Next
    et j'ai l'erreur suivante:
    la variable conteneur est utilisée avant qu'une valeur ne lui est été assignée.
    voila, ca plante? merci pour votre aide

  4. #4
    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
    Par défaut
    Citation Envoyé par pascb423 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                Dim conteneur As Control
                For i As Integer = 1 To 64
                    If DirectCast(conteneur.Controls("a" & i.ToString), TextBox).Text = "" Then MessageBox.Show("vide") Else MessageBox.Show("renseigné")
                Next
    et j'ai l'erreur suivante:
    la variable conteneur est utilisée avant qu'une valeur ne lui est été assignée.
    voila, ca plante? merci pour votre aide
    Normal aucun contrôle n'est associé à conteneur.
    Regardez l'utilisation de mon code dans les appels
    Panel1 étant un contrôle existant sur la form.
    La fonction TestTextBox reçoit le contrôle Panel1 et travaille avec celui-ci. (elle l'assigne à conteneur)

    Dans votre déclaration Dim conteneur As Control conteneur vaut nothing, aucune valeur ne lui est assigné.
    - Soit vous l'utilisez comme paramètre comme dans mon exemple,
    - soit vous utilisez directement le contrôle (présent sur votre form ou la form) qui contient vos TextBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    If DirectCast(MonPanel.Controls("a" & i.ToString), TextBox).Text = "" Then MessageBox.Show("vide") Else MessageBox.Show("renseigné")
    Mais s'ils sont tous dans un conteneur (panel ou groupbox) et seulement eux, il est préférable d'utiliser la 1 ère méthode, c'est plus propre.

    Le Cours VB.NET de Philippe Lasserre est une mine d'information, très bien pour apprendre.
    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.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut
    C'est bon, ça marche, j'avais déclaré 2 fois la variable!!!

    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function calculordi1()
            If b.seul.Checked = True Then
                compteur = 0
                For i As Integer = 1 To 64
                    If DirectCast(Panel1.Controls("a" & i.ToString), TextBox).Text = "" Then compteur = compteur + 1
                Next
                a.erreur.Text = compteur
                a.erreur.Visible = True

  6. #6
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    C'est légèrement accessoire, mais le DirectCast ne sert à rien ; la propriété Text est définie au niveau de la classe Control, ce qui est le résultat de l'indéxeur sur Controls donc pas besoin de passer par TextBox

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

Discussions similaires

  1. Test colonne et ajout 1 à la dernière cellule vide
    Par timtof2011 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/10/2011, 22h44
  2. [XL-2002] Test de cellules vides et enregistrement automatique
    Par magninde dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/05/2009, 08h31
  3. Test si cellule vide et décalage à gauche
    Par Lechette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/03/2008, 10h40
  4. [VBA]Test cellule vide base access
    Par ALAMARQU dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/03/2006, 16h14
  5. [XSL-FO] Table avec cellule vide
    Par JustAGphy dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 12/05/2004, 14h11

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