Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme de tirage au sort de caractere en double

22 juillet 2016 à 18:17:38

bonjour

comme le dit le titre je fait tirer des caractere aleatoirement mes j ai un probleme de doublon du au random je pence et j arrive pas a eviter qu il me tire des doublon si quel qu un peu me corriger se probleme

merci

 Dim alphabets As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        Dim small_alphabets As String = "abcdefghijklmnopqrstuvwxyz"
        Dim numbers As String = "1234567890"
        Dim SPECIAL As String = "()éè_-ç@[]{}$ù%£µ¤!:/+,.;:§'\°#?˜©ª«»¬®¯±º¹²³¶¼½¾¿÷"""
        Dim characters As String = numbers



        'VERIFIE QUE LE NOMBRE DE CARACTERE ET VALIDER
        If ListBox1.SelectedItem.ToString = ListBox1.SelectedItem Then

            ' Converti LES CARACTERE EN STRING
            characters += Convert.ToString(alphabets & small_alphabets) & numbers & SPECIAL
        End If

        'SE DIM DONNE LE NOMBRE DE CARACTERE EN FONCTION DU LISTBOX
        Dim length As Integer = Integer.Parse(ListBox1.SelectedItem.ToString)

        ' SE DIT DONNE LA SORTI APRES TRETEMENT AU LABEL
        Dim otp As String = String.Empty

        'ICI IL CHERCHE LES CARACTERE A INTEGRER 
        For i As Integer = 0 To length - 1
            Dim character As String = String.Empty

            Do

                'ICI CHOISI UN CARATERE AU AZART
                Dim index As Integer = New Random().Next(0, characters.Length)
                character = characters.ToCharArray()(index).ToString()


            Loop While otp.IndexOf(character) <> -1

            ' DONNE LES CARACTERE CHOISI
            otp += character
        Next
           Label3.Text = otp



-
Edité par FRED92G 22 juillet 2016 à 18:18:12

  • Partager sur Facebook
  • Partager sur Twitter
22 juillet 2016 à 19:31:33

Bonjour,

Le problème de Random est toujours le même ici, à savoir, personne ne lit la doc.

Il faut créer un new Random() une seule fois et appeler Next() au fil des itérations successives et non pas le recréer à chaque fois.

Ceci étant dit, Random() n'assure pas l'unicité de ta valeur, le plus simple pour avoir des valeurs uniques est de vérifier que tu ne l'as pas tirée auparavant et la changer si besoin, ou plus simplement remplir un array avec tes valeurs, le mélanger et les tirer une par une.

  • Partager sur Facebook
  • Partager sur Twitter
Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
22 juillet 2016 à 19:34:29

justement je comprent pas le random un  code  me montrent mon pb m aurai plus aider
  • Partager sur Facebook
  • Partager sur Twitter
23 juillet 2016 à 0:29:13

Souvent le plus simple pour aider quelqu'un c'est encore de lui donner assez d'information pour qu'il puisse corriger son erreur, ce que je pense avoir fait en te proposant deux solutions dans le dernier paragraphe et en t'expliquant que tu utilisais mal le Random et que de lui même il ne te permettrai pas d'arriver à la solution que tu cherches.

Faire du code à ta place c'est différent et ce n'est pas de l'aide pour moi et ce n'est enrichissant pour personne, je le fais quand ça me paraît nécessaire.

Si tu as des questions je serai ravi de t'aider mais il va falloir m'expliquer ce qui coince dans mes explications et ce que tu n'arrives pas à changer dans ton code.

  • Partager sur Facebook
  • Partager sur Twitter
Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
23 juillet 2016 à 10:43:58

SE QUI BLOQUE C EST SE BLOC RRELEMENT QUE JE COMPRENT QUE A MOITIER JE ME SUIS INSPIRAI D UN CODE POUR LE FAIRE ET DU COUP JE LE COMPRENT PAS 

  For i As Integer = 0 To length - 1
           Dim character As String = String.Empty
 
           Do
 
               'ICI CHOISI UN CARATERE AU AZART
               Dim index As Integer = New Random().Next(0, characters.Length)
               character = characters.ToCharArray()(index).ToString()
 
 
           Loop While otp.IndexOf(character) <> -1

LA SEULE CHOSE QUE JE C EST IL CHERCHE UN TRUC

J AURAI BESOIN QUE LA BOUCLE ME SOIT EXPLIQUER  INSI QUE LE DO DE FACON A POUVOIRS METTRE EN FORME  LE RANDOM MEME LUI J AI POUR LIRE LA DOC JE LE COMPREND PAS

  • Partager sur Facebook
  • Partager sur Twitter
25 juillet 2016 à 0:47:40

A l'arrache :

Dim random As Random = New Random()
For i As Integer = 0 To length - 1
         Dim character As String = String.Empty
 
         Do
 
             'ICI CHOISI UN CARATERE AU AZART
             Dim index As Integer = random.Next(0, characters.Length)
             character = characters.ToCharArray()(index).ToString()
             characters.Remove(index,1)
 
         Loop While otp.IndexOf(character) <> -1

Faudrait quand même lire les réponses et la documentation avant de GUEULER.

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
25 juillet 2016 à 1:51:50

il y a toujour le probleme de doublon
  • Partager sur Facebook
  • Partager sur Twitter
25 juillet 2016 à 9:11:07

bacelar : le Remove ne change rien si tu ne le réassignes ;) ; et quand bien même la condition de sortie s'occupe déjà du test d'appartenance, j'imagine que l'objectif était d'éliminer le risque de retenter un essai infructueux au sein de la boucle.

Concernant le bloc de code incompris :

Une boucle For ... Next sert à répéter un bloc de code plusieurs fois délimité par les bornes de début et de fin données (avec parfois un pas quand il existe mais ce n'est pas le cas ici)

Présentement, on va donc répéter autant de fois que le "nombre" contenu dans la sélection courante de la ListBox.

Ensuite la boucle Do ... Loop While condition sert à répéter un bloc de code plusieurs fois, tant que la condition de sortie donnée est fausse (renvoie False). Donc ici tant que le "caractère" choisi n'existe pas dans la chaine "otp"

Dans ce bloc de code on choisi un caractère au hasard

Après je rejoins totalement Pyrobolser quant au fait qu'il serait plus judicieux de mélanger la source initiale et prendre les n premiers éléments ; mais avant ça, encore faudrait-il que l'OP montre un peu d'investissement dans la résolution de son problème...

  • Partager sur Facebook
  • Partager sur Twitter
Censément, quelqu'un de sensé est censé s'exprimer sensément.
25 juillet 2016 à 10:09:33

Dim random As Random = New Random()
For i As Integer = 0 To length - 1
         Dim character As String = String.Empty

             'ICI CHOISI UN CARATERE AU AZART
             Dim index As Integer = random.Next(0, characters.Length)
             character = characters.ToCharArray()(index).ToString()
             characters = characters.Remove(index,1)
  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
25 juillet 2016 à 10:59:50

toujour le meme probleme pour temp le remove  si j ai bien compris doit se charger de retirer les doublon mes il le fait pas a savoir que c est aussi bien des caractere que des nombre qui passe
  • Partager sur Facebook
  • Partager sur Twitter
25 juillet 2016 à 16:09:48

Mon code fonction correctement.

Il n'y pas de doublon à proprement parler, c'est vous qui avez ajouté 2 fois la chaine "numbers" à la chaine "characters" (ligne 5 et ligne 13), nous avons donc droit à 2 fois les chiffres de 0 à 9.

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
25 juillet 2016 à 16:49:15

Dim alphabets As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        Dim small_alphabets As String = "abcdefghijklmnopqrstuvwxyz"
        Dim numbers As String = "1234567890"
        Dim SPECIAL As String = "()éè_-ç@[]{}$ù%£µ¤!:/+,.;:§'\°#?˜©ª«»¬®¯±º¹²³¶¼½¾¿÷"""
        Dim characters As String 


        'VERIFIE QUE LE NOMBRE DE CARACTERE ET VALIDER
        If ListBox1.SelectedItem.ToString = ListBox1.SelectedItem Then

            ' Converti LES CARACTERE EN STRING
            characters = Convert.ToString(alphabets & small_alphabets) & numbers & SPECIAL
        End If

        'SE DIM DONNE LE NOMBRE DE CARACTERE EN FONCTION DU LISTBOX
        Dim length As Integer = Integer.Parse(ListBox1.SelectedItem.ToString)

        ' SE DIT DONNE LA SORTI APRES TRETEMENT AU LABEL
        Dim otp As String = String.Empty

        Dim random As Random = New Random()
        For i As Integer = 0 To length - 1
            Dim character As String = String.Empty

            'ICI CHOISI UN CARATERE AU AZART
            Dim index As Integer = random.Next(0, characters.Length)
            character = characters.ToCharArray()(index).ToString()
            characters = characters.Remove(index, 1)

            ' DONNE LES CARACTERE CHOISI
            otp += character
        Next
        '   Label3.Text = otp
        'AJOUTER AU TABLEAU DATAGRIDVIEW LES CARACTERE
        Dim ligne As String() = New String() {otp}
        DataGridView1.Rows.Add(ligne)

J AI MODIFIER SA COMME SA ET DANS MON DATAGRIDVIEW J AI TOUJOUR DES CARACTERE EN DOUBLE CHIFFRE OU LETTRE
  • Partager sur Facebook
  • Partager sur Twitter
25 juillet 2016 à 17:35:27

Vous en avez encore combien des lapins blancs dans votre chapeau ???

C'est quoi cette embrouille avec la DataGridView, quel est le rapport avec le problème initial ?

A moins qu'on n'est là pour faire vos devoirs ?

La fonction suivante donne une chaine de caractère sans doublon, démerdez-vous avec, moi, je mets mes boules quies, marre de ceux qui gueulent.

    Function toto() As String
        Dim alphabets As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        Dim small_alphabets As String = "abcdefghijklmnopqrstuvwxyz"
        Dim numbers As String = "1234567890"
        Dim SPECIAL As String = "()éè_-ç@[]{}$ù%£µ¤!:/+,.;:§'\°#?˜©ª«»¬®¯±º¹²³¶¼½¾¿÷"""
        Dim characters As String

        characters += Convert.ToString(alphabets & small_alphabets) & numbers & SPECIAL

        Dim length As Integer = characters.Length

        Dim otp As String = String.Empty
        Dim random As Random = New Random()
        For i As Integer = 0 To length - 1
            Dim character As String = String.Empty

            Dim index As Integer = random.Next(0, characters.Length)
            character = characters.ToCharArray()(index).ToString()
            characters = characters.Remove(index, 1)

            otp += character
        Next
        toto = otp
    End Function



  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
25 juillet 2016 à 18:26:08

si tu veu savoir a la basse le code se trouve dans un timer une detection de valeur si 114 caractere son donner le timer s arrete mes pour sa faut avoir que une foi mes caractere et pas de doublon sinon il me manque des caractere le datagrisview et la pour justement voir  si les caractere sorte bien en un seule exemplaire chacun une foi sa regler il va disparaitre

la ta fonction je voit pas comment m en servire

et cette ligne a disparue se qui m arrenge pas c est elle qui donne le nombre de carctere 1 c est a b c mes 2 c est aa ab ac

If ListBox1.SelectedItem.ToString = ListBox1.SelectedItem Then
 



  • Partager sur Facebook
  • Partager sur Twitter
25 juillet 2016 à 19:26:02

Votre explication est incompréhensible, en tout cas pour moi.

La fonction donnée est juste une illustration qu'il est très simple de faire un tirage sans doublon, quand on écoute les remarques.

Elle l'illustre en prenant toutes les valeurs possibles et cela sans doublon.

Elle n'est pas à prendre tel quelle, parce que votre problème concret, on le connait pas, parce que moi, je bite rien à vos "explications".

Mais franchement, vu la simplicité du truc, je vois pas comment vous n'arriveriez pas l'adapter à votre besoin, si vous l'analyser correctement.

>et cette ligne a disparue

Un "if" qui fournit une taille, ça c'est concept. Arrêtez de vous faire des nœuds au cerveau.

Faites la tambouille que vous voulez pour calculer la taille de la chaine, mais en dehors de la fonction, et passez cette longueur en paramètre de la fonction "toto" et supprimer la ligne 10.

>1 c est a b c mes 2 c est aa ab ac

Vous vous foutez de nous ?

un "aa" et vous nous emmerdez parce qu'il y a des "doublons en sortie" !!!

Des valeurs qui semble ordonnées, alors pourquoi nous enquiquinez avec un Random ??!!!

Bon, posez votre vrai problème correctement, sinon, moi, je laisse tomber.

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
25 juillet 2016 à 19:36:24

en realite le datagridview me fait une liste de caractere un sous les autre si dans mon listbox je choisi le choix 1 sa me fait une liste de 1caractere

a

b

e

si je prent choix 2 

ab

as

ad 

aa

se que je veux pas c est revoir un 2 eme a dans la liste 

a

e

d

a la on a deja le a plus haut  donc un double  se qui et de meme pour choix 2

voici le code actuel 

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim alphabets As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        Dim small_alphabets As String = "abcdefghijklmnopqrstuvwxyz"
        Dim numbers As String = "1234567890"
        Dim SPECIAL As String = "()éè_-ç@[]{}$ù%£µ¤!:/+,.;:§'\°#?˜©ª«»¬®¯±º¹²³¶¼½¾¿÷"""
        Dim characters As String 


        'VERIFIE QUE LE NOMBRE DE CARACTERE ET VALIDER
        If ListBox1.SelectedItem.ToString = ListBox1.SelectedItem Then

            ' Converti LES CARACTERE EN STRING
            characters = Convert.ToString(alphabets & small_alphabets) & numbers & SPECIAL
        End If

        'SE DIM DONNE LE NOMBRE DE CARACTERE EN FONCTION DU LISTBOX
        Dim length As Integer = Integer.Parse(ListBox1.SelectedItem.ToString)

        ' SE DIT DONNE LA SORTI APRES TRETEMENT AU LABEL
        Dim otp As String = String.Empty

        Dim random As Random = New Random()
        For i As Integer = 0 To length - 1
            Dim character As String = String.Empty

            'ICI CHOISI UN CARATERE AU AZART
            Dim index As Integer = random.Next(0, characters.Length)
            character = characters.ToCharArray()(index).ToString()
            characters = characters.Remove(index, 1)

            ' DONNE LES CARACTERE CHOISI
            otp += character
        Next
        '   Label3.Text = otp
        'AJOUTER AU TABLEAU DTAGRIDVIEW LE NUMERO
        Dim ligne As String() = New String() {otp}
        DataGridView1.Rows.Add(ligne)

     
        '  COMPTE LES ENTRE AU DATAGRIDVIEW
        Label4.Text = DataGridView1.RowCount - 1

        If Val(ListBox2.SelectedItem.ToString) = Val(Label4.Text) Then
            Timer1.Stop()
        
        End If
    End Sub



-
Edité par FRED92G 25 juillet 2016 à 19:37:55

  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2016 à 12:36:42

Faudrait un peu se prendre par la main.

Code super sale parce qu'on n'a pas à lire le contenu des contrôles pour implémenter les règles business :

    Dim m_random As Random = New Random()
    Function titif(length As Integer) As String
        Dim alphabets As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        Dim small_alphabets As String = "abcdefghijklmnopqrstuvwxyz"
        Dim numbers As String = "1234567890"
        Dim SPECIAL As String = "()éè_-ç@[]{}$ù%£µ¤!:/+,.;:§'\°#?˜©ª«»¬®¯±º¹²³¶¼½¾¿÷"""
        Dim characters As String

        characters += Convert.ToString(alphabets & small_alphabets) & numbers & SPECIAL

        Dim otp As String

        Do
            otp = String.Empty
            For i As Integer = 0 To length - 1
                Dim character As String = String.Empty

                Dim index As Integer = m_random.Next(0, characters.Length)
                character = characters.ToCharArray()(index).ToString()
                otp += character
            Next
        Loop While ((From theRow As DataGridViewRow In DataGridView1.Rows, _
               theCell As DataGridViewCell In theRow.Cells _
          Where theCell.Value = otp _
          Select theCell).FirstOrDefault() IsNot Nothing)
        titif = otp
    End Function



-
Edité par bacelar 26 juillet 2016 à 14:13:05

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
26 juillet 2016 à 12:58:38

si j ai bien comprie la function  je la lance comme sa

titif (1) si je veux juste un caractere si je veux 2 caractere je mes 2

et elle me fait tout d elle meme  et remplie le datagirdview 

j ai constater que r_random ligne 17 ete pas initier

donc j ai ajouter sa a la ligne 9

Dim m_random As Random = New Random()

mes le pb et que rien se passe du tout le datagridview reste vide

-
Edité par FRED92G 26 juillet 2016 à 12:59:07

  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2016 à 14:21:04

>titif (1) si je veux juste un caractere si je veux 2 caractere je mes 2

Oui.

>et elle me fait tout d elle meme  et remplie le datagirdview

Non, c'est déjà assez dégueu comme ça, cette méthode.

Pour l'ajouter à la DataGridView, il suffit d'une ligne comme :

DataGridView1.Rows.Add(titif(2))


>j ai constater que r_random ligne 17 ete pas initier

m_random, j'ai modifié mon post car j'avais "oublié" sa déclaration. "m_" pour membre.

C'est pas un problème d'initialisation, mais de déclaration. Configurez votre environnement pour qu'il soit plus "strict".

>mes le pb et que rien se passe du tout le datagridview reste vide

La programmation, c'est pas de la prestidigitation, tout ce qui est fait est dans le code.

Vous bloquez sur une simple ligne pour ajouter le résultat de la méthode à une DataGridView ???

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
26 juillet 2016 à 16:52:25

 Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click


        DataGridView1.ColumnCount = ListBox1.SelectedItem.ToString
        DataGridView1.Columns(0).Name = ListBox1.SelectedItem.ToString & " " & "CARACTERE"
        ListBox2.SelectedIndex = ListBox1.SelectedItem.ToString - 1

        titif(1)

    End Sub

    Dim m_random As Random = New Random()
    Function titif(length As Integer) As String
        Dim alphabets As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        Dim small_alphabets As String = "abcdefghijklmnopqrstuvwxyz"
        Dim numbers As String = "1234567890"
        Dim SPECIAL As String = "()éè_-ç@[]{}$ù%£µ¤!:/+,.;:§'\°#?˜©ª«»¬®¯±º¹²³¶¼½¾¿÷"""
        Dim characters As String

        characters = Convert.ToString(alphabets & small_alphabets) & numbers & SPECIAL

        Dim otp As String

        Do otp = String.Empty For i As Integer = 0 To length - 1
                Dim character As String = String.Empty

                Dim index As Integer = m_random.Next(0, characters.Length)
                character = characters.ToCharArray()(index).ToString()
                otp += character
            Next
        Loop While ((From theRow As DataGridViewRow In DataGridView1.Rows, theCell As DataGridViewCell In theRow.Cells Where theCell.Value = otp Select theCell).FirstOrDefault() IsNot Nothing)
        titif = otp
        Dim ligne As String() = New String() {titif}
        DataGridView1.Rows.Add(ligne)

    End Function



j ai fait sa comme sa mes mais comme tu ma parler de faire sa proprement et pas comme un cochon j ai une autre demande

pourrai tu m expliquer les parti entre les balise color rouge que je puisse moi dans un autre projet reutiliser le proceder voir meme les commanter dans le code

y a t il possibilité d automatiser le remplissage de datagridview vue que je connais le nombre de ligne a remplir et sa m éviterai le timer en boucle jusqu a temps que mes ligne de caractere soit atteinte au dategridview

-
Edité par FRED92G 26 juillet 2016 à 16:54:42

  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2016 à 19:14:44

Function titif(length As Integer) As String

Déclaration d'une fonction/méthode de nom "titif" (donc nom complètement random pour code à l'arrache, à changer pour qu'il corresponde à l'action de la fonction/méthode), qui prend un paramètre de type Integer et de nom "length", et qui retourne une chaine de caractère (une String). Donc rien de très mystérieux.

Do 
   otp = String.Empty 
   For i As Integer = 0 To length - 1
      ....
   Next
Loop While (UneExpressionBooleenALaCon)

C'est une boucle "While", qui s'exécutera tant que "UneExpressionBooleenALaCon" sera évaluée à True.

Dans cette boucle on commence par toujours mettre "otp" à vide (sinon, en cas de collision, on va ajouter la nouvelle valeur à la fin de la valeur qui a collisionnée avec une valeur déjà dans la DataGridView).

Et on fait une boucle "For" pour créer une nouvelle valeur à la bonne taille.

      ((From theRow As DataGridViewRow In DataGridView1.Rows, _
           theCell As DataGridViewCell In theRow.Cells _
      Where theCell.Value = otp _
      Select theCell).FirstOrDefault() IsNot Nothing)

C'est l'"UneExpressionBooleenALaCon" de la première question.

C'est du LINQ, en gros, ça se lit un peu comme du SQL.

On déclare "theRow" comme une DataGridViewRow, qui sera initialisée avec chaque ligne de "DataGridView1.Rows" qui respecte la condition "theRow.Cells(xxx).Value" (avec xxx de 0 au nombre de cellule d'une ligne -1) soit égale à "otp".

On prend la première ligne qui est retourné (donc qui respect la condition theCell.Valie = otp), c'est le sens de "First", soit on prend "Nothing" si aucune ligne n'est trouvée (c'est le dans de "Default", car la valeur par défaut du type DataGridViewRow, c'est "Nothing").

Et on compare ce qui est retourné à "Nothing" avec le IsNot.

Donc en claire, cette ligne est égale à True s'il existe une cellule dans DataGridView1 qui à la même valeur de otp, False sinon.


>y a t il possibilité d automatiser le remplissage de datagridview vue que je connais le nombre de ligne a remplir

Bin oui, c'est le rôle même du DataBinding.

Vous remplissez un DataSet, Datatable, ou tout autre collection adaptée, et vous l'affectez au DataSource de votre DataGridView.

>sa m éviterai le timer en boucle jusqu a temps

Alors pourquoi vous emmerdez avec tout ce bordel ???

Faites simple, mais commencez par lire un cours EN ENTIER !!!

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
26 juillet 2016 à 19:42:59

j ai pas compris du tout le comment de l automatisation

je pence qu il y a un truc plus propre que un timer pour lancer la fonction et l auto remplissage de mon datagridview

je préférerai clique sur mon bouton et ope la fonction démarre et me rempli d elle même le datagridview et s arête quand il y a plus de caractère a donner.

que de faire bouton qui lance timer et qui s arette quand le nombre de ligne et ataind

  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2016 à 20:03:14

Pourquoi vous vous emmerdez avec un timer ?
  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
26 juillet 2016 à 20:09:40

J AI ESSAYER DE FAIRE COMME SA DANS MON BOUTON DE LANCEMENT MAIS RIEN SE PASSE 

For x As Integer = 1 To ListBox2.SelectedItem.ToString
            Label4.Text = DataGridView1.RowCount + 1 - 1
            titif(ListBox1.SelectedItem.ToString)

        Next

LISTBOX2 CONTIENS LE NOMBRE DE LIGNE A FAIRE DONC LA POUR 1 CARACTÈRE PAR LIGNE C EST 114

PS:JE RALE PAS DU TOUT J AI UN PC QUI A DES PROBLEMES DE CLAVIER DES FOIT IL TIEN LA JOURNER SANS PASSER DE MINUSCULE A MAJUSCULE ET QUAND IL PASSE EN MAJUSCULE JE NE PEU PLUS LA DESACTIVER SANS REDEMARRER MON PC

-
Edité par FRED92G 27 juillet 2016 à 0:09:17

  • Partager sur Facebook
  • Partager sur Twitter
27 juillet 2016 à 12:36:06

Pourquoi une boucle ?

Pourquoi modifier "Label4.Text" à chaque tour de boucle ?

C'est quoi ce "+1 -1" ???

Faites simple !!!

>LISTBOX2 CONTIENS LE NOMBRE DE LIGNE A FAIRE DONC LA POUR 1 CARACTÈRE PAR LIGNE C EST 114

Ne faites pas de corrélation entre valeur vous-même à la main. C'est immaintenable à la longue.

Vous ne devez pas faire de lien entre longueur 1 et 114 caractères. Si vous voulez ajouter ou supprimer un caractère à la liste, cela ne doit pas impacter votre code.

Si, pour une longueur 1, il faut 114 caractères, donc tous les caractères, c'est que vous ne voulez pas tirer au hasard des valeurs mais mélanger ces valeurs, alors l'approche est un peu différente :

http://stackoverflow.com/questions/108819/best-way-to-randomize-an-array-with-net

Si les valeurs de ListBox1 et ListBox2 sont liées, n'utilisez qu'une de ces valeurs.

Vous n'êtes vraiment pas clair sur votre vrai besoin. On peu pas aider si vous ne savez pas ce que vous voulez (le comment, on s'en charge).

Voici une fonction qui remplie une DataGridView avec "rowsCount" éléments d'une longueur de "stringLength" caractères.

    Sub FillDataGridView(dgv As DataGridView, stringLength As Integer, rowsCount As Integer)
        Dim alphabets As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        Dim small_alphabets As String = "abcdefghijklmnopqrstuvwxyz"
        Dim numbers As String = "1234567890"
        Dim SPECIAL As String = "()éè_-ç@[]{}$ù%£µ¤!:/+,.;:§'\°#?˜©ª«»¬®¯±º¹²³¶¼½¾¿÷"""
        Dim characters As String = alphabets & small_alphabets & numbers & SPECIAL

        Dim values As List(Of String) = New List(Of String)

        If characters.Length * stringLength < rowsCount Then
            Throw New ArgumentException(String.Format("characters.Length({0}) * stringLength({1}) doit être supérieur ou égale à rowsCount({2})", characters.Length, stringLength, rowsCount))
        End If

        dgv.Rows.Clear()

        For i As Integer = 0 To rowsCount - 1
            Dim otp As String = String.Empty
            Do
                otp = String.Empty
                For j As Integer = 0 To stringLength - 1
                    Dim character As String = String.Empty

                    Dim index As Integer = m_random.Next(0, characters.Length)
                    character = characters.ToCharArray()(index).ToString()
                    otp += character
                Next
            Loop While (values.Exists(Function(x) x = otp))
            values.Add(otp)
            dgv.Rows.Add(otp)
        Next
    End Sub


EDIT ;

>DES PROBLEMES DE CLAVIER DES FOIT IL TIEN LA JOURNER SANS PASSER DE MINUSCULE ...

On n'est d'accord que c'est pas juste la touche "Caps Lock" ???

-
Edité par bacelar 27 juillet 2016 à 14:17:25

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
27 juillet 2016 à 14:02:54

oui le listbox1 et 2 son lier le 1 contien le nombre de caractere a sortir par ligne et le 2 le nombre de ligne a remplir et tout sa sans doublon

sur cette fonction je n est pas reusi a comprendre comment la lancer du tout

et sur l autre j ai  preferai faire une boucle qui ne fonctionne pas a par si j ajoute dedans un msgbox et que je le valide et la  le datagridview se remplie or j aurai aimer eviter de devoir repondre au msgbox

et non le clavier c est un probleme  bien plus enbetent c est electronique sa fait 3 windows different que sa me le fait asus ma deja changer la cm et le clavier une foi et le pb et rester inssi

-
Edité par FRED92G 27 juillet 2016 à 14:20:38

  • Partager sur Facebook
  • Partager sur Twitter
27 juillet 2016 à 14:28:45

>oui le listbox1 et 2 son lier le 1 contien le nombre de caractere a sortir par ligne et le 2 le nombre de ligne a remplir

Si elles sont liées, n'en utilisez qu'une !!!

>sur cette fonction je n est pas reusi a comprendre comment la lancer du tout

Là, faudrait sérieusement revoir vos cours/tutos.

Par exemple, avec "DataGridView1", un DataGridView sur le formulaire

FillDataGridView(DataGridView1, 2, 20)

Après, il sera rempli avec 20 éléments de 2 caractères.

>et sur l autre

L'autre quoi ???

Soyez un minimum clair, SVP.

>par si j ajoute dedans un msgbox

Mais qu'est-ce-que ce putain de nouveau lapin blanc sorti du chapeau.

MsgBox, on s'en cogne de ces bidouilles, on n'en a pas besoin.

>que je le valide

Valide Quoi ??? Il n'y pas de validation dans une MsgBox !!!

>et la  le datagridview se remplie

Et la marmotte, elle met le chocolat dans le papier d'alu !!! Soyer clair !!!

Avec la fonction FilleDataGridView, elle est remplie.

Bon, j'ai vraiment pas l'impression que vous déniez ne serait-ce que lire et essayer de comprendre les codes fournis.

Soit vous n'avez pas les bases, soit vous vous foutez de nous.

Bon, alors on va être clair, vos lapins blancs, vous les regroupez tous, vous nous faites une vraie question sur vos vrais problèmes et après on voit.

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
27 juillet 2016 à 14:55:18

j ai essayer ta ligne sa a marche pour 1 carectere sur 20 ligne mes des que je mes 114 plus rien

si je mes 113 sa marche sa voudrai dire que j ai  au max 113 ligne caractere possible

j ai fini par comprendre que dans mon caractere special le "" pour représenter un espace ete pas compter comme un caractere se qui me fait 113 caractere sans lui

par compte j ai un autre probleme c est la parti 2 caractere par ligne se qui me fait 12769 ligne  113x113 il me sort une erreur bizart

-
Edité par FRED92G 27 juillet 2016 à 15:30:08

  • Partager sur Facebook
  • Partager sur Twitter
27 juillet 2016 à 15:05:01

Le capslock ... why not.
Par contre je doute que votre clavier soit à l'origine des fautes de français et des immondicités orthographiques ! Un minimum d'effort svp :waw:

  • Partager sur Facebook
  • Partager sur Twitter