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 :

verification textbox unique [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 10
    Par défaut verification textbox unique
    Bonjour,

    Je suis débutant en programmation et je n'arrive pas a trouver une solution a mon problème.
    J'ai une form contenant 5 textbox ( textbox1 à textbox5) ces textbox doivent contenir une ou deux lettres unique. Mon problème c'est que je n'arrive a savoir comment comparer le contenu de mes 5 textbox pour savoir si il sont bien tous unique.
    Exemple bon:
    textbox1=A
    textbox2=B
    textbox3=C
    textbox4=D
    textbox5=E

    Exemple pas bon:
    textbox1=A
    textbox2=B
    textbox3=A
    textbox4=D
    textbox5=E

    Je vous remercie pour votre aide précieux.

  2. #2
    Membre très actif
    Homme Profil pro
    Retraité intello
    Inscrit en
    Juillet 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité intello

    Informations forums :
    Inscription : Juillet 2012
    Messages : 186
    Par défaut
    Bonjour lolo1878.

    C'est juste une question d'algorithmique élémentaire. Comme je ne peux savoir à quel point vous êtes débutant, je vais faire comme si vous ne savez rien (alors que vous pouvez très bien être maître es algorithmes). Je vais en conséquence vous envoyer un petit bout de code, mais il vous faudra attendre un peu.

    Cordialement.

  3. #3
    Membre très actif
    Homme Profil pro
    Retraité intello
    Inscrit en
    Juillet 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité intello

    Informations forums :
    Inscription : Juillet 2012
    Messages : 186
    Par défaut
    Me voici à nouveau, lolo1878.

    Voici le code que je vous ai promis.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Public Class Accueil
        Private Lst(5) As String
     
        Private Sub bTst1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bTst1.Click
            Initialiser1()
            FormerListe()
            lUnq1.Text = "Unique = " & Unique.ToString
        End Sub
     
        Private Sub bTst2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bTst2.Click
            Initialiser2()
            FormerListe()
            lUnq2.Text = "Unique = " & Unique.ToString
        End Sub
     
        Private Sub FormerListe()
            Lst(1) = textbox1.Text
            Lst(2) = textbox2.Text
            Lst(3) = textbox3.Text
            Lst(4) = textbox4.Text
            Lst(5) = textbox5.Text
        End Sub
     
        Private Sub Initialiser1()
            textbox1.Text = "A"
            textbox2.Text = "B"
            textbox3.Text = "C"
            textbox4.Text = "D"
            textbox5.Text = "E"
        End Sub
     
        Private Sub Initialiser2()
            textbox1.Text = "A"
            textbox2.Text = "B"
            textbox3.Text = "C"
            textbox4.Text = "D"
            textbox5.Text = "A"
        End Sub
     
        Private Function Unique() As Boolean
            Dim Ok As Boolean, i As Integer, j As Integer, Txt As String
            Ok = True
            For i = 1 To 5
                Txt = Lst(i)
                For j = i + 1 To 5
                    If Lst(j) = Txt Then Ok = False : Exit For
                Next j
                If Not Ok Then Exit For 
            Next i
            Return Ok
        End Function
     
    End Class
    Il est placé sur un formulaire sur lequel j'ai déposé

    – vos cinq contrôles TextBox
    – deux contrôles Button nommés bTst1 et bTst2
    – deux contrôles Label nommés lUnq1 et lUnq2
    L'algorithme dont je vous ai parlé se limite à la fonction Unique As Boolean (tout le reste ne sert qu'à la mettre en scène). Grâce à la méthode FormerListe, les 5 textes mis dans vos TextBox sont rassemblés dans le tableau Lst(). Dans la fonction Unique, la boucle d'index i parcourt cette liste, depuis le rang 1 jusqu'au rang 5,
    en relevant au passage le texte Lst() sous la forme d'un string nommé Txt. À l'intérieur de cette boucle, s'en trouve une autre d'index j, depuis le rang i + 1 jusqu'au rang 5. C'est ainsi que l'on peut comparer deux à deux les termes de la liste, et de mettre à False le booléen Ok en cas de doublon.

    N'hésitez pas à l'appeler en cas de besoin.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    où en plus moderne et plus lisible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim contenuTextboxes as ienumerable(of string) = (from c as control in me.controls where typeof c is textbox select directcast(c, textbox).text)
    'on parcours tous les textbox du form pour les mettre dans une collection
    ' (faire 5 fois .Add dans un New List(Of Textbox) si vous ne voulez pas prendre tous les textbox du form, pour y mettre les textbox, après il faudrait faire un select du .text pour le mettre dans l'ienumerable(of string))
     
    if liste.distinct.count <> liste.count then
      ' pas unique
    end if
    néanmoins il convient d'avoir des bases d'algorithmie pour pouvoir programmer
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 10
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    où en plus moderne et plus lisible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim contenuTextboxes as ienumerable(of string) = (from c as control in me.controls where typeof c is textbox select directcast(c, textbox).text)
    'on parcours tous les textbox du form pour les mettre dans une collection
    ' (faire 5 fois .Add dans un New List(Of Textbox) si vous ne voulez pas prendre tous les textbox du form, pour y mettre les textbox, après il faudrait faire un select du .text pour le mettre dans l'ienumerable(of string))
     
    if liste.distinct.count <> liste.count then
      ' pas unique
    end if
    néanmoins il convient d'avoir des bases d'algorithmie pour pouvoir programmer
    merci pour ton aide, mais je n'arrive pas faire fonctionner ton code (je pense oublier de faire quelque chose)

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    Citation Envoyé par lolo1878 Voir le message
    merci pour ton aide, mais je n'arrive pas faire fonctionner ton code (je pense oublier de faire quelque chose)
    rien de grave, si tu as réussi à adapter et comprendre le code avec les bases c'est mieux
    dans quelques mois tu te pencheras sur linq si nécessaire ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 10
    Par défaut
    Citation Envoyé par Jean-Marie Grave Voir le message
    Me voici à nouveau, lolo1878.

    Voici le code que je vous ai promis.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Public Class Accueil
        Private Lst(5) As String
     
        Private Sub bTst1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bTst1.Click
            Initialiser1()
            FormerListe()
            lUnq1.Text = "Unique = " & Unique.ToString
        End Sub
     
        Private Sub bTst2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bTst2.Click
            Initialiser2()
            FormerListe()
            lUnq2.Text = "Unique = " & Unique.ToString
        End Sub
     
        Private Sub FormerListe()
            Lst(1) = textbox1.Text
            Lst(2) = textbox2.Text
            Lst(3) = textbox3.Text
            Lst(4) = textbox4.Text
            Lst(5) = textbox5.Text
        End Sub
     
        Private Sub Initialiser1()
            textbox1.Text = "A"
            textbox2.Text = "B"
            textbox3.Text = "C"
            textbox4.Text = "D"
            textbox5.Text = "E"
        End Sub
     
        Private Sub Initialiser2()
            textbox1.Text = "A"
            textbox2.Text = "B"
            textbox3.Text = "C"
            textbox4.Text = "D"
            textbox5.Text = "A"
        End Sub
     
        Private Function Unique() As Boolean
            Dim Ok As Boolean, i As Integer, j As Integer, Txt As String
            Ok = True
            For i = 1 To 5
                Txt = Lst(i)
                For j = i + 1 To 5
                    If Lst(j) = Txt Then Ok = False : Exit For
                Next j
                If Not Ok Then Exit For 
            Next i
            Return Ok
        End Function
     
    End Class
    Il est placé sur un formulaire sur lequel j'ai déposé



    L'algorithme dont je vous ai parlé se limite à la fonction Unique As Boolean (tout le reste ne sert qu'à la mettre en scène). Grâce à la méthode FormerListe, les 5 textes mis dans vos TextBox sont rassemblés dans le tableau Lst(). Dans la fonction Unique, la boucle d'index i parcourt cette liste, depuis le rang 1 jusqu'au rang 5,
    en relevant au passage le texte Lst() sous la forme d'un string nommé Txt. À l'intérieur de cette boucle, s'en trouve une autre d'index j, depuis le rang i + 1 jusqu'au rang 5. C'est ainsi que l'on peut comparer deux à deux les termes de la liste, et de mettre à False le booléen Ok en cas de doublon.

    N'hésitez pas à l'appeler en cas de besoin.

    merci beaucoup. Ton code fonctionne très bien et j'ai réussi a l'adapter a mon code sans problème

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 10
    Par défaut
    bonsoir,

    merci a vous deux d'avoir pris la peine de me répondre.
    Je suis complétement novice. je vais essayer de mettre en œuvre vos code et de les comprendre.
    Je vous tiens au courant

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

Discussions similaires

  1. Paramétrage unique des Shapes Textbox.
    Par CAFOUIN dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/12/2007, 18h23
  2. Réponses: 1
    Dernier message: 03/07/2007, 18h18
  3. Taper uniquement des chiffres dans une TextBox?
    Par christopher07 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 17/06/2007, 16h22
  4. verification textbox only numeric
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/11/2006, 15h18
  5. [C# 2.0] TextBox uniquement en consultation -> pas de curseur
    Par oodini dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/07/2006, 16h31

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