cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 1 févr. 2007 à 00:33
Une autre piste... en fait, je ne comprends pas vraiment ce que tu cherches à faire mais bon... Tu sembles vouloir récupérer les valeurs des cellules de A5 à A15 de façon aléatoire, donc 11 possibilités ( 1 à 11 - Min à Max)
Sub MaSub()
Dim I As Integer, Valeur As String
Randomize
'On recherche 8 valeurs
For I = 1 To 8
'À chaque valeur aléatoire retournée par la fonction (ici 1 à 11),
'on descend du nombre de lignes de cette valeur à partir de Range(A 4 )
'puis on lit cette valeur qu'on accumule dans une String
Valeur = Valeur & Range("A4").Offset(Hasard(1, 11), 0) & vbCrLf
Next
MsgBox Valeur 'Ici tu fais ce que tu veux avec ces 8 valeurs
End Sub
Function Hasard(Min As Integer, Max As Integer) As Integer
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 29 janv. 2007 à 07:27
ce genre de choses ... :
Function GetRandomCell(ByRef voInRange As Range) As Range
Dim nRow As Long
Dim nCol As Long
Randomize
With voInRange
If (.Column = .SpecialCells(xlCellTypeLastCell).Column) Then
nCol = .Column
nRow = .Row + Rnd * (.SpecialCells(xlCellTypeLastCell).Row - .Row)
Else
nRow = .Row
nRow = .Column + Rnd * (.SpecialCells(xlCellTypeLastCell).Column - .Column)
End If
Set GetRandomCell = .Worksheet.Cells(nRow, nCol)
End With
End Function
Sub test()
MsgBox GetRandomCell(ActiveSheet.Range("A5:A15")).Text
End Sub
Renfield
Admin CodeS-SourceS- MVP Visual Basic
Vous n’avez pas trouvé la réponse que vous recherchez ?
lispo
Messages postés49Date d'inscriptiondimanche 2 octobre 2005StatutMembreDernière intervention 1 septembre 2008 29 janv. 2007 à 09:53
Re-Bonjour,
desoler vous allez un peux vite pour moi,
Voila je voudrez afficher le nom selectionner dans un msgbox
j'ai essayer comme cela mais il y a un hik
ex:
Private Sub lblp_Click()
msgbox = INDEX(A5:A15;ENT(ALEA()*(10-1)+1))
End Sub
merci d'avance
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 30 janv. 2007 à 00:17
Essaie ceci
Dans la colonne A, sur 10 lignes, rentre les lettres a, b, c, d...
En B1, mets cette formule et copie-la sur les 10 lignes (à refaire plusieurs fois pour voir le changement)
=RECHERCHEV( INDEX($A$1:$A$10;ENT(ALEA()*(10-1)+1));$A:$A; 1; FAUX)
lispo
Messages postés49Date d'inscriptiondimanche 2 octobre 2005StatutMembreDernière intervention 1 septembre 2008 30 janv. 2007 à 15:32
Re_salut<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>
Vu que je m’étais mélanger les pinceaux, j’ai refait ça d’une autre manière
J’ai mis mon nombre aléatoire dans un select case(function hasard) et ma select case associer a ma liste (Range " A5 :A15 ")
Et je l’appelle par une boucle
Le hic c’est qu’après deux instructions je bloque, je n’arrive pas a enchaîné les 6 autres instructions (il doit choisir 8 noms au total)
Function hasard()
Dim Nombre As Integer
Nombre = Rnd() * ((10 - 1) + 1)
Select Case Nombre
Case 0
nom = Range("A5").Text
Case 1
nom = Range("A6").Text
Case 2
nom = Range("A7").Text
Case 3
nom = Range("A8").Text
Case 4
nom = Range("A9").Text
Case 5
nom = Range("A10").Text
Case 6
nom = Range("A11").Text
Case 7
nom = Range("A12").Text
Case 8
nom = Range("A13").Text
Case 9
nom = Range("A14").Text
Case 10
nom = Range("A15").Text
End Select
End Function
''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''
Dim liste(1 To 8) As String
Randomize
Do
Call hasard
Txb8_1.Text = nom
liste(1) = Txb8_1.Text
Call hasard
Txb8_2.Text = nom
liste(2) = Txb8_2.Text
Loop While liste(1) = liste(2)