Vbsupernul
Messages postés287Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention18 janvier 2004
-
22 déc. 2002 à 19:09
SATANdemon
Messages postés44Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention30 novembre 2005
-
23 déc. 2002 à 20:05
Ben voilà, j'essaye de choisir un nombre aléatoire qui ne se répète jamais. j'ai donc fais cette sub, mais ça fait boguer, ça recommence trop de fois...
Private Sub Command1_Click()
Dim lenombre As String
Dim nombre As Integer
anciennombre = 0
nbdefois = 1
start:
If nbdefois = 51 Then
Exit Sub
ElseIf nbdefois < 51 Then
GoTo debut
End If
debut:
Randomize Timer
nombre = Int((Rnd * 51) + 1)
lenombre = nombre
If Len(lenombre) = 1 Then
lenombre = 0 & nombre
nombre = lenombre
End If
donc:
If InStr(Text1.Text, nombre) <> 0 Then
GoTo alors
ElseIf InStr(Text1.Text, nombre) = 0 Then
Text1.Text = Text1.Text & nombre & vbCrLf
anciennombre = nombre
nbdefois = nbdefois + 1
GoTo start
End If
nombre = 1
alors:
nombre = nombre + 1
If nombre = 51 Then
GoTo start
End If
GoTo donc
End Sub
QQun peut-il essayer de l'optimiser ou d'en faire une qui marche?
@+
Vbsupernul (à force de poster des sos, je vais finir par devenir moins nul :clown) )
SATANdemon
Messages postés44Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention30 novembre 2005 23 déc. 2002 à 20:05
Private Sub Command1_Click()
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 51
Continue = False
Do While Continue = False
DoEvents
'Genere un nombre aleatoire entre 1 et 51
Nombre = Int((Rnd * 51) + 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
'Converti le nombre en STRING et l'affecte a la variable TEXTE
Texte = CStr(Nombre)
'Redimentionne le Tableau en preservant les valeurs
ReDim Preserve ListeNombre(i)
'Insert le nouveau nombre
ListeNombre(i) = Nombre
'Si la longueur est de 1 on rajoute un 0 devant
If Len(Texte) = 1 Then
Texte = "0" & Texte
End If
'On rempli le champs texte
Text1.Text = Text1.Text & Texte & vbCrLf
Next i
End Sub
Voila qui fera ton bonheur, je te deconseil les GOTO en general on se perd rapidement dans le code :)