OVH Cloud OVH Cloud

Nbre aléatoire

4 réponses
Avatar
JP
Bonjour,

J'ai construit une petite page excel jointe destinée à des élèves.
Je voudrais que lorsque l'élève clique sur la case "cliquer ici pour
initialiser",
le nombre de la première ligne (Prix d'achat brute) change aléatoirement.
L'élève peut alors commencer l'exercice avec un nombre différent de celui de
son voisin (sauf pas de chance !!!).
Mais après, lorsque les élèves complète les autres cases, je ne veux plus
que le chiffre du début soit modifié. Avez vous une tite idée pour réaliser
cela ?
En résume :
si je clique sur "initialiser" : le nombre alétoire est modifié
Si je fais des autres calculs : le nombre aléatoire ne doit pas changer


Merci d'avance

4 réponses

Avatar
Philippe.R
Bonsoir,

En supposant que la cellule visée soit A2 et le nombre aléatoire variant entre 21 et 987, à coller dans
le module de la feuille concernée :

Private Sub Worksheet_Activate()
[a2] = ["=ALEA.ENTRE.BORNES(21,987)"]
[a2] = [a2]
End Sub
--
Amicales Salutations
XL 97 / 2000 / 2002
Retirer A_S_ pour répondre en privé.
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"JP" a écrit dans le message de news: cmjj28$hc7$
Bonjour,

J'ai construit une petite page excel jointe destinée à des élèves.
Je voudrais que lorsque l'élève clique sur la case "cliquer ici pour
initialiser",
le nombre de la première ligne (Prix d'achat brute) change aléatoirement.
L'élève peut alors commencer l'exercice avec un nombre différent de celui de
son voisin (sauf pas de chance !!!).
Mais après, lorsque les élèves complète les autres cases, je ne veux plus
que le chiffre du début soit modifié. Avez vous une tite idée pour réaliser
cela ?
En résume :
si je clique sur "initialiser" : le nombre alétoire est modifié
Si je fais des autres calculs : le nombre aléatoire ne doit pas changer


Merci d'avance




Avatar
Claude Trouet
Bonjour à toutes et tous,

Si le classeur contient plusieurs feuilles, rien n'empêche l'utilisateur
d'en changer.
S'il revient sur la feuille où est généré le nombre aléatoire, celui-ci sera
changé.
Pour éviter cela, une solution :
1) créer un module standard ey coller l'instruction suivante
Public NbAlea As Boolean
2) Dans le module Thisworkbook, évènement Open copier

Private Sub Workbook_Open()
NbAlea = False
End Sub

3) Dans le module VBA de la feuille, copier

Private Sub Worksheet_Activate()
If NbAlea = False Then
[a2] = ["=ALEA.ENTRE.BORNES(21,987)"]
[a2] = [a2]
NbAlea = True
End If
End Sub

Bon dimanche
Claude

"Philippe.R" a écrit dans le message de news:

Bonsoir,

En supposant que la cellule visée soit A2 et le nombre aléatoire variant
entre 21 et 987, à coller dans le module de la feuille concernée :

Private Sub Worksheet_Activate()
[a2] = ["=ALEA.ENTRE.BORNES(21,987)"]
[a2] = [a2]
End Sub
--
Amicales Salutations
XL 97 / 2000 / 2002
Retirer A_S_ pour répondre en privé.
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"JP" a écrit dans le message de news:
cmjj28$hc7$
Bonjour,

J'ai construit une petite page excel jointe destinée à des élèves.
Je voudrais que lorsque l'élève clique sur la case "cliquer ici pour
initialiser",
le nombre de la première ligne (Prix d'achat brute) change aléatoirement.
L'élève peut alors commencer l'exercice avec un nombre différent de celui
de
son voisin (sauf pas de chance !!!).
Mais après, lorsque les élèves complète les autres cases, je ne veux plus
que le chiffre du début soit modifié. Avez vous une tite idée pour
réaliser
cela ?
En résume :
si je clique sur "initialiser" : le nombre alétoire est modifié
Si je fais des autres calculs : le nombre aléatoire ne doit pas changer


Merci d'avance








Avatar
Philippe.R
Bonjour Claude,
Ou bien ne laisser qu'une feuille visible (la bonne) et protéger le classeur (structure notamment)
--
Amicales Salutations
XL 97 / 2000 / 2002
Retirer A_S_ pour répondre en privé.

"Claude Trouet" a écrit dans le message de news:

Bonjour à toutes et tous,

Si le classeur contient plusieurs feuilles, rien n'empêche l'utilisateur d'en changer.
S'il revient sur la feuille où est généré le nombre aléatoire, celui-ci sera changé.
Pour éviter cela, une solution :
1) créer un module standard ey coller l'instruction suivante
Public NbAlea As Boolean
2) Dans le module Thisworkbook, évènement Open copier

Private Sub Workbook_Open()
NbAlea = False
End Sub

3) Dans le module VBA de la feuille, copier

Private Sub Worksheet_Activate()
If NbAlea = False Then
[a2] = ["=ALEA.ENTRE.BORNES(21,987)"]
[a2] = [a2]
NbAlea = True
End If
End Sub

Bon dimanche
Claude

"Philippe.R" a écrit dans le message de news:

Bonsoir,

En supposant que la cellule visée soit A2 et le nombre aléatoire variant entre 21 et 987, à coller
dans le module de la feuille concernée :

Private Sub Worksheet_Activate()
[a2] = ["=ALEA.ENTRE.BORNES(21,987)"]
[a2] = [a2]
End Sub
--
Amicales Salutations
XL 97 / 2000 / 2002
Retirer A_S_ pour répondre en privé.
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"JP" a écrit dans le message de news: cmjj28$hc7$
Bonjour,

J'ai construit une petite page excel jointe destinée à des élèves.
Je voudrais que lorsque l'élève clique sur la case "cliquer ici pour
initialiser",
le nombre de la première ligne (Prix d'achat brute) change aléatoirement.
L'élève peut alors commencer l'exercice avec un nombre différent de celui de
son voisin (sauf pas de chance !!!).
Mais après, lorsque les élèves complète les autres cases, je ne veux plus
que le chiffre du début soit modifié. Avez vous une tite idée pour réaliser
cela ?
En résume :
si je clique sur "initialiser" : le nombre alétoire est modifié
Si je fais des autres calculs : le nombre aléatoire ne doit pas changer


Merci d'avance












Avatar
AV
[A2] = [randbetween(21, 987)]
devrait suffire .....
(sous réserve de l'installation de la macro complémentaire Utilitaire d'analyse)

Sans macro complémentaire :
[A2] = [int(rand()*(988-21)+21)]

AV