Nombres aleatoire

tarzom Messages postés 12 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 22 octobre 2004 - 21 oct. 2004 à 20:54
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 22 oct. 2004 à 14:34
bonsoir,

quelqu'un pourrait optimiser mon code pour que quand il tire un nombre impaire il me l'enleve de la liste et qu'il me remonte mes nombres, j'ai essayer mais j'y arrive pas
le nombre impaire se trouve dans une zone text(text3.text)

Dim ListeNombre() As Integer
Dim Nombre As Integer
Dim Texte As String
Dim i As Integer
Dim x As Integer
Dim Continue As Boolean

'Vide le champ de texte
Text1.Text = vbNullString

'Initialise la fonction Rnd
Randomize

'Dimentionne le Tableau
ReDim ListeNombre(0)

'Insert un nombre 0 pour la premiere instance
ListeNombre(0) = 0

For i = 1 To Text2.Text

Continue = False

Do While Continue = False
DoEvents
'Genere un nombre aleatoire entre 1 et text1.text
Nombre = Int((Rnd * Text2.Text) + 1)
'Met la valeur de sorti de boucle sur True
Continue = True
'Verifie si il n'y a pas de double
For x = LBound(ListeNombre) To UBound(ListeNombre)
If ListeNombre(x) = Nombre Then
'Si le nombre existe deja on met sur False
Continue = False
End If
Next x
Loop

'Redimentionne le Tableau en preservant les valeurs
ReDim Preserve ListeNombre(i)
'Insert le nouveau nombre
ListeNombre(i) = Nombre

'On rempli le champs list
If i Mod 2 = 1 Then
Texte = CStr(Nombre)
Else
List1.AddItem (Text1.Text & Texte & " - " & CStr(Nombre))
End If

Next i
RandomizeIf Mid(Text2.Text, Len(Text2.Text), 1) "1" Or Mid(Text2.Text, Len(Text2.Text), 1) "3" Or Mid(Text2.Text, Len(Text2.Text), 1) = "5" Or Mid(Text2.Text, Len(Text2.Text), 1) = "7" Or Mid(Text2.Text, Len(Text2.Text), 1) = "9" Then 'Test le dernier nombre s'il est impaire
NoParticip = Int((Rnd * Val(Text2.Text)) + 1) 'Retourne un nombre entier aléatoire compris entre 1 et Text2.
Text3.Text = NoParticip
End If

merci pour votre aide

5 réponses

Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
21 oct. 2004 à 22:00
J'ai pas compris...
Tu veux faire quoi exactement avec le texte de Text2 ?

Saros
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 oct. 2004 à 22:15
Re

Dim Noparticip As Integer
Dim ListeNombre() As Integer
Dim Nombre As Integer
Dim Texte As String
Dim i As Integer
Dim x As Integer
Dim Continue As Boolean
Dim nb As Integer

Private Sub Command1_Click()

'Vide le champ de texte
Text1.Text = vbNullString
Text3.Text = vbNullString

'Initialise la fonction Rnd
Randomize

'Dimentionne le Tableau
ReDim ListeNombre(0)

'Insert un nombre 0 pour la premiere instance
ListeNombre(0) = 0

nb = Val(Text2)

For i = 1 To nb

Continue = False

Do While Continue = False
   DoEvents
'  Genere un nombre aleatoire entre 1 et text1.text
   Nombre = Int((Rnd * Text2.Text) + 1)
'  Met la valeur de sorti de boucle sur True
   Continue = True
'  Verifie si il n'y a pas de double
   For x = LBound(ListeNombre) To UBound(ListeNombre)
       If ListeNombre(x) = Nombre Then
'         Si le nombre existe deja on met sur False
          Continue = False
          End If
       Next x
Loop

'Redimentionne le Tableau en preservant les valeurs
ReDim Preserve ListeNombre(i)
'Insert le nouveau nombre
ListeNombre(i) = Nombre

Next i
'On rempli le champs list
List1.Clear
For i = 1 To nb - 1 Step 2
    List1.AddItem Text1.Text & ListeNombre(i) & " - " & ListeNombre(i + 1)
    Next

Randomize
If nb Mod 2 = 1 Then
   Noparticip = Int(Rnd * nb + 1)
   Text3 = Noparticip
   List1.AddItem Text1.Text & CStr(Nombre & " - ")
   End If

End Sub

Private Sub Command2_Click()
    nb = nb - 1
    For i = Noparticip To nb
        ListeNombre(i) = ListeNombre(i + 1)
        Next
    ListeNombre(i) = 0
    List1.Clear
    For i = 1 To nb Step 2
        List1.AddItem Text1.Text & ListeNombre(i) & " - " & ListeNombre(i + 1)
        Next
End Sub
0
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
21 oct. 2004 à 22:31
Donc en fait tu veux que, quand il tire un nombre impair de numéros, cela ne gêne pas le décalage des chiffres ?

Saros
0
tarzom Messages postés 12 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 22 octobre 2004
22 oct. 2004 à 00:09
oui c'est sa
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
22 oct. 2004 à 14:34
après corrections.

 Dim Noparticip    As Integer
 Dim ListeNombre() As Integer
 Dim Nombre        As Integer
 Dim i             As Integer
 Dim x             As Integer
 Dim Continue      As Boolean
 Dim nb            As Integer

Private Sub Command1_Click()

'   Vide le champ de texte
    Text1.Text = vbNullString
    Text3.Text = vbNullString

'   Initialise la fonction Rnd
    Randomize

    nb = Val(Text2)
    
'   Dimentionne le Tableau
    ReDim ListeNombre(nb)

    For i = 1 To nb

        Continue = False

        Do While Continue = False
           DoEvents
'          Genere un nombre aleatoire entre 1 et text1.text
           Nombre = Int((Rnd * Text2.Text) + 1)
'          Met la valeur de sorti de boucle sur True
           Continue = True
'          Verifie si il n'y a pas de double
           For x = 1 To i - 1
               If ListeNombre(x) = Nombre Then
'                 Si le nombre existe deja on met sur False
                  Continue = False
                  Exit For
                  End If
               Next x
           Loop

'       Insert le nouveau nombre
        ListeNombre(i) = Nombre

    Next i
    
'   On rempli le champs list
    List1.Clear
    For i = 1 To nb - 1 Step 2
        List1.AddItem Text1.Text & Format(ListeNombre(i), "00") & " - " & Format(ListeNombre(i + 1), "00")
        Next

    Randomize
    If nb Mod 2 = 1 Then
       Noparticip = Int(Rnd * nb + 1)
       Text3 = Noparticip
       List1.AddItem Text1.Text & Format(Nombre, "00") & " - "
       End If

End Sub

Private Sub Command2_Click()
   If Noparticip = 0 Then Exit Sub
   nb = nb - 1
   For i = Noparticip To nb
       ListeNombre(i) = ListeNombre(i + 1)
       Next
   ListeNombre(i) = 0
   List1.Clear
   For i = 1 To nb Step 2
       List1.AddItem Text1.Text & Format(ListeNombre(i), "00") & " - " & Format(ListeNombre(i + 1), "00")
       Next
End Sub
0
Rejoignez-nous