Lien tableur / curseur

david49100 shared this question 3 months ago
Answered

Bonjour,

J'aimerais remplir la colonne A avec des nombres aléatoires (lancers de dé par exemple) en fonction d'un curseur.

Je voyais bien un truc aussi "naïf" que ça dans le script du curseur :

Exécute("RemplirCellules(A1:A"+a+", AléaEntreBornes(1, 6))")

Mais :

- ça ne fonctionne pas

- je ne veux pas qu'à chaque actualisation du curseur, il y ait un recalcul global : les valeurs apparaissent en augmentant la valeur du curseur, disparaissent si on diminue. Si on réaugmente, les valeurs aléatoires peuvent être différentes de celles obtenues précédemment.

Par contre, je dois pouvoir continuer de maîtriser le recalcul global (typiquement avec F9).

J'en demande beaucoup.... je galère pas mal.

Merci

David

Comments (14)

photo
1

Bonjour,


la syntaxe avec Exécute est Exécute({"FillCells(A1:A"+n+", RandomBetween(1, 6))"})


après il te faut écrire un script qui compare la valeur actuelle du compteur à la valeur précédente


pour soit effacer des cellules soit en rajouter

photo
1

OK Merci Noël, en farfouillant dans le forum, j'avais lu un post dans lequel, le passage en anglais était obligatoire mais ça n'avait pas fonctionné non plus mais les accolades me manquaient !

Pour le reste, ça va être plus délicat effectivement.

photo
1

Suite : le curseur actualisé recalcule ce qui se passe dans le tableur (sur 500 lignes et 3 colonnes) et trace des points correspondants dans le graphique. De fait, chaque mouvement du curseur engendre tellement de calculs que la machine ne suit plus du tout. Tout fonctionne bien par contre si je pilote la variable par le champ de saisie.

Bref, peut-on n'actualiser les calculs au niveau du curseur qu'au moment du relâcher du bouton de la souris ?

photo
1

Bonjour,

Oui, délicat.

Surtout en combinaison avec F9, parce que F9 exécute les scripts onUpdate des curseurs (pas genial, peut-être un bug).


OnClickRelease n'existe pas. Simulation avec un curseur TimeOut.


Note:

Je pense qu'avec des listes (pas dans un tableur) c'est plus facile.

Et je ne recommande pas de mettre à jour les listes aléatoires avec F9. Au lieu de cela, mettez à jour les listes aléatoires avec des scripts.

  • L_1 = {}
  • dans Bouton: SetValue (L_1, Sequence(RandomBewtween(1,6), n, 1,100))

photo
1

Hi Raymond ! Happy New Year !


Je ne doutais pas que si Raymond passait par là pendant mon soleil il donnerait une solution ce qui me permettait de dormir sur mes 2 oreilles


Comme on discutait sur "Exécute" je soumets ce fichier à vos tests

photo
1

Bonjour Noel, aussi à vous mes meilleurs vœux pour 2018

.

Et merci pour les roses, mais votre solution est meilleure.

photo
1

Merci à vous deux.

J'ai essayé la solution de Raymond mais le problème de ralentissement apparaît tout de même.

Pour ta solution, Noël, je dis simplement : Wahou ! Je n'ai pas encore testé à fond avec ce que je veux faire, mais ta solution semble simple et élégante.

Par contre, j'essaye désespérément de rajouter une deuxième commande au Exécute (cf. ci-après) mais mes tentatives échouent toutes... J'ai même essayer de rajouter un deuxième texte "ajoutB" dans le script du curseur avec Si(va>n,{"ajout","ajoutB"}, etc... mais rien. Je passe à côté de quelque chose ?

Pour info, dans la commande suivante, j'ai essayé avec des { sans succès puis ici avec des ' toujours sans succès.


ajout = "Exécute({'“FillCells(A”+(va+1)+“:A”+n+“, RandomBetween(1, 6))”','“FillCells(B”+(va+1)+“:B”+n+“, RandomBetween(1, 6))”')"

photo
1

ça me crève les yeux dans l'éditeur de script

et toujours ce cirque que si on fait du copier coller à partir de texte on n'a pas les bons guillemets !!!


et bien faire la différence parentjèses/accolades


faut que je mette la taille des caractères max

Exécute({"FillCells(A"+(va+1)+":A"+n+", RandomBetween(1, 6))","FillCells(B"+(va+1)+":B"+n+", RandomBetween(1, 6))"})

photo
1

Merci Noël, quand j'ai vu ton post, j'ai été très surpris, j'étais certain d'avoir testé sans succès cette version.

Je tiens à préciser que je comprends l'expression, le rôle des guillemets et le distingo parenthèses/accolades aussi.

Dans la zone de saisie, j'obtiens l'image ci-après. Soit je suis neuneu (genre l'erreur de saisie est grosse comme mon nez et il faut que je me soigne), soit j'ai un réel souci.610e728caf568633a85b5d0d011df712


Quoiqu'il en soit, merci Noël !

photo
1

Je crois qu'il faudrait améliorer l'éditeur de scripts


ta copie d'écran correspont elle au texte que j'ai posté le message d'avant ?

photo
1

Oui tout à fait.

GeoGebra 5.0.414.0 19 December 2017 Java 1.8.0_121-64bit

photo
1

oui tiens des fois ça bloque


l'essentiel de toute manière n'est pas d'avoir le texte "ajout" mais le script dans ajout (qui peut être n'importe quel objet)

photo
1

...

photo
1

ah oui... fort !

Bravo ! et surtout merci !

© 2018 International GeoGebra Institute