Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

choisir une cellule au hasard, puis bloquer le résultat

  • Initiateur de la discussion Initiateur de la discussion CISCO
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

CISCO

XLDnaute Barbatruc
Bonsoir à tous

Je continue avec mon petit fichier d'algèbre (cf https://www.excel-downloads.com/threads/compter-le-nombre-de-faux-apparus.131906/).

J'ai mis sur la feuille trois, en colonne IT, 160 équations du 1er degré,et en colonne IT, les solutions correspondantes.

Sur la feuille 1, en colonne A, excel choisi au hasard des équations parmi ces 160 équations. Ensuite, en B7, C7... on propose des équations intermédiaires permettant "d'isoler" progressivement l'inconnue x correspondant à A7, pour finalement finir avec x =...

Le problème ici, c'est que, puisque l'équation en A7 est choisie au hasard sur la feuille 3, à chaque fois qu'on fait "entrer", une nouvelle équation est écrite en A7, en A9, en A11... Résultat, la solution proposée en B7, C7, D7... n'a que peut de "chance" d'être la bonne par rapport à A7.

Que faire ?

Autrement dit, est-il possible de demander à excel de choisir au hasard les équations à mettre dans la colonne A de la feuille 1, à l'ouverture du fichier, puis de bloquer ce choix, au besoin à l'aide d'une macro ?

Merci d'avance.

@ plus
 

Pièces jointes

Dernière édition:
Re : choisir une cellule au hasard, puis bloquer le résultat

Bonjour Cisco,

J'ai lu juste en diagonale ton précédent fil, ton soucis provient de la toute première ligne de ta macro :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

A chaque changement dans ta feuille, la macro va se lancer! Grâce aux If placé plus bas, il ne va exécuter la macro que si ...

Mais étant donné ce que tu cherche à faire, je ne pense pas que ce soit la solution la plus optimum! (comme tu t'en ai rendu compte!)

Solution 1 : Déclencher la macro à l'ouverture de ton fichier -> remplacer ta première ligne par :
Code:
Private Sub Workbook_Open()
à placer dans "ThisWoorkBook" et non pas dans un module!

Mais l'inconvénient, si tu veux relancer la macro, tu sera obligé de fermé puis réouvrir ton fichier

Solution 2 : Déclencher la macro seulement à la demande -> suite à un clic sur un bouton

Solution 3 : Déclencher la macro qu'après que l'utilisateur ai trouvé le bon résultat

Solution 4 : ...

Bonne soirée
 
Re : choisir une cellule au hasard, puis bloquer le résultat

Bonsoir

et merci Excel-lent

Et pour résoudre ce problème de contenu de cellule qui change à chaque fois qu'on écrit dans le fichier, est-ce que tu as une solution ?

@ plus
 
Re : choisir une cellule au hasard, puis bloquer le résultat

Bonsoir Cisco,

???

Ben oui, une des 3 solutions proposées ci-dessus!

Private Sub Worksheet_Change

Signifie que la macro se lance à chaque fois que la feuille est modifié!

A te lire

Cordialement
 
Re : choisir une cellule au hasard, puis bloquer le résultat

Bonjour à tous

Bonjour Excel-lent.

Le fichier correspondant à mon précédent fil tourne correctement.

Maintenant, j'ai construit un autre fichier, dans lequel les 20 équations à résoudre sont tirées au hasard parmi un lot de 160, avec la formule, par exemple en A7 :
Code:
=INDIRECT("Feuil3!IT"&ENT(ALEA()*(166-7)+7))

Cela fonctionne bien, sauf que ces 20 équations sont modifiées à chaque écriture faite sur cette feuille. C'est logique puisque la fonction ALEA() est recalculée à chaque nouvelle entrée sur la feuille.
Dans le doute, et pour savoir si cela pouvait venir de la macro, je l'ai supprimée, mais le recalcul de ALEA() se fait toujours, dans la colonne A. De même, j'ai fait le test sur un autre fichier avec juste =ALEA() dans une cellule. Là aussi, cette fonction est recalculée à chaque entrée faite ailleurs dans la feuille.

Tout cela me semble normal, sauf que ce n'est pas ce dont j'ai besoin ici : excel doit choisir au hasard, à l'ouverture du fichier, les 20 équations à résoudre, puis figer ce choix, quoi que l'on fasse ensuite sur ce fichier.

Pour rappel, toutes les cellules grises sont en fin de compte verrouillées et protégées, pour que l'élève faisant ce travail ne puisse pas effacer des formules par maladresse, ou "imposer" des réponse en sa faveur !

@ plus
 
Dernière édition:
Re : choisir une cellule au hasard, puis bloquer le résultat

Bonjour

J'ai essayé en écrivant la fonction ALEA() dans la feuille 3, et pas dans la feuille 1, mais cela ne change rien au problème... 😀

Une idée, SVP ?

@ plus
 
Re : choisir une cellule au hasard, puis bloquer le résultat

Salut,

à essayer (mieux que rien) :
pas de formule en colonne A, le tirage au sort s'effectue en cliquant sur un bouton de la feuille avec la macro associée :
Code:
Private Sub CommandButton1_Click()
  Application.ScreenUpdating = False
  For li = 7 To 45 Step 2
    Cells(li, "A") = Sheets(3).Cells(Int(Rnd() * 159 + 7), "IT")
    Range("B" & li & ":F" & li).ClearContents 'remise à zéro des lignes des réponses
  Next
  Application.ScreenUpdating = True
End Sub
Remarque : les formules de test ne retourne rien avec certaines saisies.
 
Dernière édition:
Re : choisir une cellule au hasard, puis bloquer le résultat

Re,

un exemple (fichier allégé) de tirages sans répétition :
Code:
Private Sub CommandButton1_Click()
  Unprotect "CISFRAN"
  Application.ScreenUpdating = False
  Dim c As New Collection, nb As Byte, Li As Byte, Col As Byte
  On Error Resume Next
  For N = 1 To 150
    Randomize
    nb = Int(7 + 14 * Rnd)
    c.Add nb, CStr(nb)
  Next
  Application.Calculation = xlCalculationManual
  Application.EnableEvents = False
  For Li = 7 To 15 Step 2
    k = k + 1
    Cells(Li, 1) = Sheets("Feuil3").Cells(c(k), "B")
    Range("B" & Li & ":F" & Li).ClearContents
  Next
  Application.EnableEvents = True
  Application.Calculation = xlCalculationAutomatic
  Application.ScreenUpdating = True
Protect "CISFRAN"
End Sub
 

Pièces jointes

Re : choisir une cellule au hasard, puis bloquer le résultat

Bonjour à toutes et à tous

Merci Fo_rum. Et bien vu aussi la seconde macro pour éviter les répétitions ( je n'avai pas pensé à cette possibilité).

Comment faut il faire pour :

Tirer au hasard des équations que à l'ouverture du fichier ?
Effacer le contenu des cellules uniquement à la fermeture et/ou sur une combinaison de touches ?

Merci d'avance.

@ plus
 
Re : choisir une cellule au hasard, puis bloquer le résultat

Re,

Pour lancer le tirage à l'ouverture du classeur (et seulement à ce moment), déplace la macro ci-dessus dans ThisWorkbook, remplace Private Sub CommandButton1_Click() par Private Sub Workbook_Open() puis supprime le bouton.

Tu n'as aucun message si tu saisis un mot quelconque. Je complèterai la formule, en C7,ainsi :

=SI(B7<>"";SI(ESTLOGIQUE(eval(SUBSTITUE(" "&B7;"x";"("&RECHERCHEV($A7;Feuil3!$B$7:$C$20;2;FAUX)&")")));ARRONDI(eval(SUBSTITUE(SUBSTITUE(" "&B7&")";"x";"("&RECHERCHEV($A7;Feuil3!$B$7:$C$20;2;FAUX)&")");"=";"-("));5)=0;FAUX);"")

On pourrait implanter cette formule par macro mais le nombre de " compliquerait la chose.

On peut créer une petite macro lancée par une combinaison de touches pour effacer les cellules à remplir, mais faut-il le faire par ligne ou pour toutes les lignes à la fois ?
 

Pièces jointes

Dernière édition:
Re : choisir une cellule au hasard, puis bloquer le résultat

Bonsoir

Merci Fo rum. Ca fait vraiment plaisir de voir mon petit fichier évoluer. Merci pour ton aide.

Ceci dit, j'ai déplacé et modifié la première ligne de ta macro. Ca fonctionne bien, sauf quand la feuille 1 est protégée. Etonnant, puisqu'il y a un unprotect en ligne 2. Que faut il faire pour résoudre ce problème ?

Merci pour l'exemple. Je vais adapter ça à mon fichier.

Merci.

@ plus
 
Dernière édition:
Re : choisir une cellule au hasard, puis bloquer le résultat

Bonsoir

Personne n'a une petite idée pour résoudre mon problème (à savoir qu'excel choisi bien au hasard les équations à écrire dans la colonne A, lorsque la feuille 1 n'est pas protégée, mais ne le fait plus lorsque la feuille est protégée...) ?

@ plus
 

Pièces jointes

Re : choisir une cellule au hasard, puis bloquer le résultat

Bonsoir CISCO, le fil,

Dés que la feuille est protégée on ne peut plus faire grand-chose sauf la déprotéger par une petite macro évenementielle mais qui risque de devenir très rapidement la PORTE ouverte et les jeunes sont malins....

La reprotéger ensuite..... Vois pas trop comment faire sur ton fichier.

Bonne soirée tout de même.

Jean-Pierre
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
751
C
Réponses
4
Affichages
1 K
cecenico
C
F
Réponses
9
Affichages
2 K
M
Réponses
6
Affichages
1 K
Michel J.
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…