Tableau

lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008 - 8 févr. 2007 à 15:52
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 10 févr. 2007 à 12:14
Bonjour,



Voila je prends  à chaque fois au hasard  huit noms d’une liste qui en contient 32



Comment procéder pour qu ‘a la deuxième  sélection  elle ne prend pas les huit premiers,



Merci d’avance

13 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 févr. 2007 à 17:08
salut,

commence ton rnd... + 8

besoin de code? mets nous le tien ;)
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008
8 févr. 2007 à 17:20
'''''''''''''''''''''''''''''''''''''''
' ma fonction hasard
Public Function Hasard(Min As Integer, Max As Integer) As Integer
    Hasard = Int((Max * Rnd) + Min)
End Function
'''
'''choisie un nom au hasard
Function Les_Nom()
    Dim Valeur As String
    Randomize
    Valeur = Valeur & Range("C55").Offset(Hasard(1, 32), 0) & vbCrLf
    Range("G49").Value = Left(Valeur, Len(Valeur) - 2)
    nom = Range("G49").Value
End Function
'''
'''
Private Sub CmdApply_1_Click()
'''je met les noms  dans  les textbox
Do '''nom n°1
    Index_1 = 0
    Call Les_Nom
    Txtb8_1.Value = nom
    liste_Nom(1) = Txtb8_1.Value
    Index_1 = Index_1 + 1
    Call Les_Nom
    ''' if pour nom n°2
 If nom <> liste_Nom(1) And Club <> Liste_Club(1) And poids = Liste_Poid(1) Then
    Txtb8_2.Value = nom
    liste_Nom(2) = Txtb8_2.Value
    Index_1 = Index_1 + 1
    Else
   Index_1 = Index_1 - 2
    End If
    Loop While Index_1 <> 2
End Sub
'''maintenant je voudrais qu'il repete la selection sans les deux premier mot et ainsi de suite
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 févr. 2007 à 17:45
umm...

avec un param?

Public Function Hasard(Min As Integer, Max As Integer) As Integer
    Hasard =  Int((Max * Rnd) + Min)
End Function
'''
'''choisie un nom au hasard
Function Les_Nom(iVal As Integer)
    Dim Valeur As String
    Valeur = Valeur & Range("C55").Offset(Hasard(iVal, 32), 0) & vbCrLf
    Range("G49").Value = Left(Valeur, Len(Valeur) - 2)
    nom = Range("G49").Value
End Function
'''
'''
Private Sub CmdApply_1_Click()
    Randomize
    '''je met les
noms  dans  les textbox
    Do '''nom n°1
        Index_1 = 0
        Call Les_Nom(1)
        Txtb8_1.Value = nom
        liste_Nom(1) = Txtb8_1.Value
        Index_1 = Index_1 + 1
        Call Les_Nom(8)
        ''' if pour nom
n°2
        If nom <> liste_Nom(1) And Club
<> Liste_Club(1)
And poids =
Liste_Poid(1) Then
            Txtb8_2.Value = nom
            liste_Nom(2) = Txtb8_2.Value
            Index_1 = Index_1 + 1
        Else
            Index_1 = Index_1 - 2
        End If
    Loop While Index_1 <> 2
End Sub

<small>Coloration
syntaxique automatique [AFCK] </small>
       

<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008
8 févr. 2007 à 19:15
Salut,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>





Je n’ais pas   très bien compris ce que tu as fait (tu as placer une sorte d’index ou quoi)





Parce que  si je click plusieurs fois les mêmes nom reviennent deux a trois fois avant de





De faire toute la liste





Moi ce que je voudrais faire c’est afficher les 32 noms sans que le même nom reviennent deux fois






 Merci
0

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

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 févr. 2007 à 20:05
ce qui n'a rien à voir avec ta question de départ....

il faut ajouter un test et une boucle. tant que le résultat = entité déja sortie, on recommence.

ou alors utilise une collection (beaucoup pour peu) et vire l'item lorsqu'il est utilisé.

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008
8 févr. 2007 à 20:14
C’est ça le problème le vire une fois utilise: comment le vire de ma liste
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 févr. 2007 à 22:21
re,
umm, j'ai modifié pour le principe
par contre je ne comprends pas :
Valeur = Valeur & Range("C55").Offset(Hasard(1, 32), 0) & vbCrLf

pourquoi valeur reçoit lui-même & ...., alors que lui-même est vide?
et pourquoi suivi d'un retour chariot?

bref, çà donne çà :
Function Les_Nom()
    Dim Valeur As String, iRes As Integer
    Randomize
    Do
        iRes = Hasard(1, 32)
        Valeur = Range("C55").Offset(iRes, 0)
    Loop Until LenB(Valeur) > 0
    Range("C55").Offset(iRes, 0) = vbNullString
    nom = Valeur
End Function

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 févr. 2007 à 22:23
ps : faire une sub, ou renvoyer un résultat (sinon pourquoi faire une fonction...)
0
lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008
8 févr. 2007 à 23:32
Décidément je m’en sortirais pas de ce problème



La correction que tu as faite fonctionne bien pendant 2 a 3 Click puis il bug



Peu être que j’ai fait une connerie en recopiant



Merci



 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>





Ps : désole de te faire perdre ton temps avec mes futilité
'-------------------------
Public Function Hasard(Min As Integer, Max As Integer) As Integer
    Hasard = Int((Max * Rnd) + Min)
End Function
'-------------------------------------
Function Les_Nom()
    Dim Valeur As String, iRes As Integer
    Randomize
    Do
        iRes = Hasard(1, 32)
        Valeur = Range("C55").Offset(iRes, 0)
    Loop Until LenB(Valeur) > 0
    Range("C55").Offset(iRes, 0) = vbNullString
    nom = Valeur
End Function
'------------------------------
Private Sub CmdApply_1_Click()
On Error GoTo Err_1
Call Les_Nom
Txtb8_1.Value = nom
Call Les_Nom
Txtb8_2.Value = nom
Call Les_Nom
Txtb8_3.Value = nom
Exit Sub


Err_1:
MsgBox ("salut")
End Sub
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 févr. 2007 à 23:57
tu peux faire une trace de "valeur" stp?
et "çà bug" veut dire quoi? tu as le msgbox "salut"?
dans ce cas remplace cette ligne par msgbox err.number & " : " & err.description

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
9 févr. 2007 à 00:06
Tu pourrais aussi te créer un tableau de 32 (ou 33...) éléments initialisé à 0.
À chaque fois que tu tires un numéro, tu vérifies si le tableau(numéro) est à 0 ou 1
S'il est à 1, il a déjà été choisi.
S'il est à 0, tu le mets à 1 et tu fais ce que tu veux de cette valeur.

MPi
0
lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008
10 févr. 2007 à 12:06
en Vb.net   pour verifier si il y a un nom dans un  tableaux on fait  (Tableau.Contains(leNom))= false
il y a l'equivalent en Vba ou pas?
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 févr. 2007 à 12:14
Non,
Tu dois faire nécessairement une boucle
0
Rejoignez-nous