XL 2021 Boucles dans une macro. Je ne sais pas faire

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonjour à tous...
Dans le fichier joint (hérité du talent de Job75), je voudrais :
- court-circuiter le chrono lorsque je choisis "Rien" dans le réglage du temps de base du chrono
- dans ce cas, reprendre le programme si un résultat est saisi en H5
- éliminer le zéro (0) dans le choix des valeurs D5 et F5. J'ai essayé avec Randbetween et ça n'a pas collé.
Je ne sais pas où positionner ma boucle dans le code et mes essais ont été vains :mad:
Le chrono stresse ma petite fille (12 ans) qui ne maitrise pas du tout ses tables de multiplication.

Merci d'avance !
Portez-vous bien

Pierre
 

Pièces jointes

  • Multiplication Compteur.xlsm
    31 KB · Affichages: 13
Dernière édition:

Constantin

XLDnaute Occasionnel
Supporter XLD
Je te gâche ton week-end...
En F1, j'ai le choix entre "1,2,3,4,5,6,7,8,9,Toutes". Le choix de F1 incrémente F5 et c'est ce multiplicateur (F5) que je voudrais qu'il soit compris entre 1 et 9 de façon aléatoire pour l'option "toutes"
Par contre, le niveau de difficulté ne concerne que la case D5 (1 pour 1 à 10, 1 pour 1 à 20 et 3 pour 1 à 30).
Concernant le message "Bravo...", le message en rouge ne s'affiche qu'un dixième de seconde et le msgbox qui avait le mérite de temporiser le bazar ne s'affiche plus... C'est ballot ;)

Bon, c'est pas grave mais ce qui m'embête c'est de ne pas comprendre :mad:
Mille mercis pour ta patience !!!
Il va bientôt être l'heure de l'apéro...
Bonne soirée si je n'ai pas d'autres nouvelles

Pierre
 

sousou

XLDnaute Barbatruc
T'es en avance pour l'apéro, j'ai encore quelques minutes;)

C'est bien ce qui se passe, quand tu choisis toutes, et niveau 1,
L'aléatoire à lieu sur d5 et f5! en tout cas c'est ce qu'il me semble?
suis revenu en arrière pour les messages
 

Pièces jointes

  • Multiplication Compteur(1).xlsm
    34 KB · Affichages: 2
Dernière édition:

Constantin

XLDnaute Occasionnel
Supporter XLD
Je sais, ce que je conçois bien s'exprime parfois mal...
Concernant D5 : selon le niveau choisi D5 sera compris entre 1 et 10 (Niveau 1), entre 1 et 20 (Niveau 2) et entre 1 et 30 (Niveau 3).
Par contre pour F5 (le multiplicateur) j'aimerai que, quelque soit le niveau, l'option "toutes" ne pioche que dans les tables de 1 à 9 (voire 10). Ma petite fille, compte tenu de son niveau, aurait beaucoup de mal à effectuer de tête une opération du genre 29*23...
Malheureusement, on n'apprenait pas à programmer VBA dans les études médicales et c'est pour ça que je suis entrain de t'embêter un dimanche.
Rassure toi pour l'apéro, il fallait d'abord que je prépare les petits toasts et c'est long :)
Bien cordialement
 

sousou

XLDnaute Barbatruc
Hello de bon matin.
Pour le bug, Ok modif faite.
Pour le reste je ne te suit pas.
Si tu restes niveau 1 les deux opérandes changent (d5 et f5)
Il suffit de rester en niveau1, on peux supprimer les niveaux.
Les niveaux ne gère que cela
 

Pièces jointes

  • Multiplication Compteur(1).xlsm
    34.1 KB · Affichages: 2

Constantin

XLDnaute Occasionnel
Supporter XLD
Pardonne ma nullité. Je pensais qu'on pouvait :
- d'une part tirer D5 en fonction du niveau choisi
- d'autre part faire en sorte que F5, dans l'option "Toutes", pouvait être sélectionné aléatoirement entre 1 et 9.
Ceci, indépendamment du niveau choisi.

De fait si je choisis :
- Table = "Toutes"
- Niveau = 2
D5 serait compris entre 0 et 20 et je voudrais que F5 soit compris entre 1 et 9.

J'ai bien essayé de comprendre les "while" et autre "loop" mais je bloque...
Je me demandais aussi comment le Sub Controle (r) était appelé dans le programme et que signifiait le "r" entre parenthèses.
Mais ne gâche pas ton dimanche.
A +++
 

sousou

XLDnaute Barbatruc
En fait, le programme que tu as récupéré,n'est pas fait ainsi.
choix d'une table: fixe f5, d5 aléatoire
toutes: aléatoire pour d5 et f5
c'est modifiable, mais ce n'était pas l'esprit (à avoir si tu souhaites changer, mai il y a pas mal de chose à modifier)
Les niveaux vont choisir les valeur de 1 à 10 ,1 à 20, 1 à 30 pour les aléatoire calculés



Dans la dernière version, sub controle(r) est devenue function controle(r)
Pourquoi?
Sub () est une procédure elle peux modifier des variables publics entre autres, mais ne renvoie rien à la procédure appelante.

Function() est une fonction, elle peux renvoyer une ou plusieurs informations directement à la procédure qui l'a appelée.

r est une variable que la procédure appelante passe

Dans notre cas.
Procédure change dans le code de la feuille calcul
si h5 et d5 et f5 ne sont pas nul, c'est qu'un résultat a été inscrit.
je lance la fonction controe(r) r étant le résultat
Si la fonction renvoie True alors le résultat est bon , et on relance aléatoire
sinon on attend la nouvelle saisie
 

Constantin

XLDnaute Occasionnel
Supporter XLD
Oups... J'ai beaucoup à apprendre dirait-on ?
J'ai cherché dans tous mes bouquins VBA (dont VBA pour les nuls ) ;)
j'ai rien trouvé (pas plus que pour While et Loop, c'est te dire le niveau de ma littérature).
Pour en revenir à ma bidouille, j'ai pensé que contraindre F5 entre 1 et 9 serait plus abordable pour ma fillote que d'appendre la table de 17 ou de 13...
Mais si cela te prend trop de temps, laisse tomber. Tu as déjà beaucoup œuvré pour faire un outil plus sympa et adaptable.
Si je suis à la retraite, tu ne l'es peut-être pas.
A bientôt !
 

sousou

XLDnaute Barbatruc
Bonsoir
Afin que ce soit peut_être plus facile pour toi à comprendre,
J'ai tout repris différemment
Page protégé sans mots passe ("")
Si chrono=0 pas de chrono, si non nombre de secondes
le niveau est remplacé par un nombre donnant soit le nombre maxi quand tu fonctionnes avec une table, soit le nombre de table utilisée.
Ex si tu mets 12 tu utiliseras les tables de 1 à 12 dans "toutes"
le les opérateurs de 1 à 12 dans la table de 3 par exemple
pour le reste même fonctionnement sauf les messages, et pas de musique
J'espère que cela t'aidera à avancer dans ton apprentissage
N'hésite pas à demander des infos
;)
 

Pièces jointes

  • Multiplication.xlsm
    33.1 KB · Affichages: 1
Dernière édition:

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonjour sousou,
Les musiques sont effectivement inutiles d'autant que je ne retrouve plus l'endroit où j'avais stocké ces Wav (changement de disque dur).
As-tu finalisé ce fichier où as-tu simplement oublié de la mettre en PJ ?
Ma petite fille vient déjeuner et apportera son ordinateur portable pour que lui installe ce programme de multiplication. En attendant, nous allons utiliser ton programme "free" qui répond bien à mes attentes. Le problème pour Leila, c'est que sa mère ne veut pas installer internet sur son portable de peur qu'elle ait tendance à s'éparpiller. Elle ne peut donc pas accéder à ton bel outil sauf chez moi avec ma bécane.
Bien à toi
Pierre
 

Constantin

XLDnaute Occasionnel
Supporter XLD
Alors là, c'est exactement ce que je souhaitais 😀
Juste un détail... "Règle le temps de base du chronomètre" ne sert plus à rien ? (remplacé par délai de réponse ?)
A défaut de le supprimer dans le code (au risque de faire encore des bêtises) je peux supprimer ce paramétrage de la feuille de calcul ?
Avant de compromettre ton travail, peux-tu me confirmer cette proposition ?
Promis, après cela, j'arrête de t'embêter...
Encore merci !
Pierre
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 125
Membres
112 666
dernier inscrit
Coco0505