Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Aléatoire dans une liste

11 réponses
Avatar
Florian
Bonjour

J'ai une liste de A1à A50, nommée liste, qui contient des noms
Je souhaite avoir une proc qui choisit un nom dans la liste, à chaque clic
sur un bouton.
Si ce n'est pas trop complexe, car sinon, j'utiliserai INDEX/EQUIV avec un
numéro, masqué en amont de la liste.
Merci beaucoup
Flo riant

10 réponses

1 2
Avatar
AV
Sur la feuille et retirage par F9 :
=INDEX(A1:A50;ENT(ALEA()*(51-1)+1))

Par macro :
MsgBox [index(A1:A50,int(rand()*(51-1)+1))]

AV
Avatar
docm
Bonjour.
En pur Visual Basic, cela donnerait (à adapter):

Sub Clic()

ligne = Int((6 * Rnd) + 1) ' Renvoie une valeur
' aléatoire comprise entre
' 1 et 6.

MsgBox Cells(ligne, 1).Value

End Sub

"AV" wrote in message
news:#
Sur la feuille et retirage par F9 :
=INDEX(A1:A50;ENT(ALEA()*(51-1)+1))

Par macro :
MsgBox [index(A1:A50,int(rand()*(51-1)+1))]

AV




Avatar
Florian
Merci beaucoup docm
Flo riant

"docm" a écrit dans le message de
news:
Bonjour.
En pur Visual Basic, cela donnerait (à adapter):

Sub Clic()

ligne = Int((6 * Rnd) + 1) ' Renvoie une valeur
' aléatoire comprise entre
' 1 et 6.

MsgBox Cells(ligne, 1).Value

End Sub

"AV" wrote in message
news:#
Sur la feuille et retirage par F9 :
=INDEX(A1:A50;ENT(ALEA()*(51-1)+1))

Par macro :
MsgBox [index(A1:A50,int(rand()*(51-1)+1))]

AV








Avatar
Florian
Merci beaucoup AV
Flo riant

"AV" a écrit dans le message de
news:%
Sur la feuille et retirage par F9 :
=INDEX(A1:A50;ENT(ALEA()*(51-1)+1))

Par macro :
MsgBox [index(A1:A50,int(rand()*(51-1)+1))]

AV




Avatar
AV
En pur Visual Basic, cela donnerait (à adapter):


Ben pourquoi ?
La méthode Evaluate c'est pas du vba ?
;-)

PS : Boff.... la fonction Rnd en Vba !
AV

Avatar
Florian
Euh...
Qu'est ce que la méthode Evaluate ?
Flo riant

"AV" a écrit dans le message de
news:
En pur Visual Basic, cela donnerait (à adapter):


Ben pourquoi ?
La méthode Evaluate c'est pas du vba ?
;-)

PS : Boff.... la fonction Rnd en Vba !
AV





Avatar
docm
Bonsoir Florian.

Sous toutes réserves.
La méthode Evaluate convertit une chaîne de caractères
en un objet ou une valeur.
Exemples:
r = Evaluate("2*3")
trigVariable = Evaluate("SIN(45)")

On peut remplacer le mot Evaluate par des crochets droits []:
r = [2*3] est l'équivalent de r = Evaluate("2*3")

Dans l'exemple suivant, Evaluate ou [] retourne l'objet Range(A1).
Set premièrecelluledansfeuille = Workbooks("1").Sheets(4).[A1]

Evaluate peut interpréter une formule à la condition toutefois qu'elle soit
en anglais US.
r = Evaluate("ALEA()") produira une erreur, mais
r = Evaluate("rand()") donnera la valeur attendue.

Pour obtenir l'équivalent en anglais d'une formule se trouvant en A1, tu
peux utiliser la procédure suivante:

Sub EquivalentAnglaisDuneFormule()
Set reference = Cells(1, 1)
FormuleEquivalenteEnAnglais = LireFormule(reference, 2)
Debug.Print FormuleEquivalenteEnAnglais
MsgBox FormuleEquivalenteEnAnglais
End Sub

Function LireFormule(reference, param)
' Modeste, mpfe

Select Case param
Case 1 ' --------formule en langue locale
If reference.HasArray Then
LireFormule = "{" & reference.FormulaLocal & "}"
Else
LireFormule = " " & reference.FormulaLocal
End If
Case 2 ' --------formule en langue US
If reference.HasArray Then
LireFormule = "{" & reference.Formula & "}"
Else
LireFormule = " " & reference.Formula
End If
Case 3 '-formule en langue locale notation ligne-colonne
If reference.HasArray Then
LireFormule = "{" & reference.FormulaR1C1Local & "}"
Else
LireFormule = " " & reference.FormulaR1C1Local
End If
Case 4 ' --formule en langue US notation ligne-colonne
If reference.HasArray Then
LireFormule = "{" & reference.FormulaR1C1 & "}"
Else
LireFormule = " " & reference.FormulaR1C1
End If
Case Else
End Select
End Function



"Florian" wrote in message
news:#
Euh...
Qu'est ce que la méthode Evaluate ?
Flo riant

"AV" a écrit dans le message de
news:
En pur Visual Basic, cela donnerait (à adapter):


Ben pourquoi ?
La méthode Evaluate c'est pas du vba ?
;-)

PS : Boff.... la fonction Rnd en Vba !
AV









Avatar
Florian
Merci beaucoup pour toutes ses explications.
Bonne soirée
Flo riant

"docm" a écrit dans le message de
news:
Bonsoir Florian.

Sous toutes réserves.
La méthode Evaluate convertit une chaîne de caractères
en un objet ou une valeur.
Exemples:
r = Evaluate("2*3")
trigVariable = Evaluate("SIN(45)")

On peut remplacer le mot Evaluate par des crochets droits []:
r = [2*3] est l'équivalent de r = Evaluate("2*3")

Dans l'exemple suivant, Evaluate ou [] retourne l'objet Range(A1).
Set premièrecelluledansfeuille = Workbooks("1").Sheets(4).[A1]

Evaluate peut interpréter une formule à la condition toutefois qu'elle
soit

en anglais US.
r = Evaluate("ALEA()") produira une erreur, mais
r = Evaluate("rand()") donnera la valeur attendue.

Pour obtenir l'équivalent en anglais d'une formule se trouvant en A1, tu
peux utiliser la procédure suivante:

Sub EquivalentAnglaisDuneFormule()
Set reference = Cells(1, 1)
FormuleEquivalenteEnAnglais = LireFormule(reference, 2)
Debug.Print FormuleEquivalenteEnAnglais
MsgBox FormuleEquivalenteEnAnglais
End Sub

Function LireFormule(reference, param)
' Modeste, mpfe

Select Case param
Case 1 ' --------formule en langue locale
If reference.HasArray Then
LireFormule = "{" & reference.FormulaLocal & "}"
Else
LireFormule = " " & reference.FormulaLocal
End If
Case 2 ' --------formule en langue US
If reference.HasArray Then
LireFormule = "{" & reference.Formula & "}"
Else
LireFormule = " " & reference.Formula
End If
Case 3 '-formule en langue locale notation ligne-colonne
If reference.HasArray Then
LireFormule = "{" & reference.FormulaR1C1Local & "}"
Else
LireFormule = " " & reference.FormulaR1C1Local
End If
Case 4 ' --formule en langue US notation ligne-colonne
If reference.HasArray Then
LireFormule = "{" & reference.FormulaR1C1 & "}"
Else
LireFormule = " " & reference.FormulaR1C1
End If
Case Else
End Select
End Function



"Florian" wrote in message
news:#
Euh...
Qu'est ce que la méthode Evaluate ?
Flo riant

"AV" a écrit dans le message de
news:
En pur Visual Basic, cela donnerait (à adapter):


Ben pourquoi ?
La méthode Evaluate c'est pas du vba ?
;-)

PS : Boff.... la fonction Rnd en Vba !
AV













Avatar
docm
"AV" wrote in message
news:
En pur Visual Basic, cela donnerait (à adapter):


Ben pourquoi ?
La méthode Evaluate c'est pas du vba ?
;-)


"Evaluate", oui, c'est une fonction VBA, mais
"index(A1:A50,int(rand()*(51-1)+1))", non.
;-)


PS : Boff.... la fonction Rnd en Vba !
Pourquoi ce Boff... envers ce valeureux Rnd?



Avatar
AV
"Evaluate", oui, c'est une fonction VBA, mais
"index(A1:A50,int(rand()*(51-1)+1))", non.


Pffff......évidemment !
A quoi servirait Evaluate s'il n'y avait pas de chaîne ?
RePfff...

Pourquoi ce Boff... envers ce valeureux Rnd?


Pas si aléatoire que ça le tirage avec la fonction vba...
Voir archives

AV

1 2