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

Nombres aléatoires sans doublons

29 réponses
Avatar
Emile63
Bonjour Í  tous

En ces temps de confinement j'en profite pour répéter un peu mon anglais :-)
en me basant sur un classeur, qui contient une table de mots anglais (col.2 -> français col.1)
Avec une petite procédure, partiellement copiée ci-après, il m'apparait aléatoirement un mot que je dois identifier et traduire.
Le problème c'est que comme cette proc. fonctionne avec un générateur de nombres aléatoires (Randomize) certains mots reviennent plusieurs fois, alors que d'autres jamais... :(
Comment puis-je modifier ça pour que la variable "VocPosition" de donne pas deux fois le même chiffre et les utiles tous ?

'-----------------------------------------------------------------------------------------
Set VocTbl = ThisWorkbook.Worksheets("Liste des mots")
MaxVoc = (VocTbl.Cells(12, 2).End(xlDown).Row) - 10 'Compte le NB de mots de la colonne 2
Do
Randomize ' Initialise le générateur de nombres aléatoires.
VocPosition = Int((MaxVoc * Rnd) + 1) 'choisir un mot aléatoirement
'Bla, bla, Bla.

Loop While NouvelleEntrée = True
'-----------------------------------------------------------------------------------------

Je vous remercie d'avance pour votre aide et dans cette attente vous souhaite une très bonne journée.

10 réponses

1 2 3
Avatar
MichD
Le 19/11/20 Í  07:21, Emile63 a écrit :
Set VocTbl = ThisWorkbook.Worksheets("Liste des mots")
MaxVoc = (VocTbl.Cells(12, 2).End(xlDown).Row) - 10 'Compte le NB de mots de la colonne 2
Do
Randomize ' Initialise le générateur de nombres aléatoires.
VocPosition = Int((MaxVoc * Rnd) + 1) 'choisir un mot aléatoirement
'Bla, bla, Bla.
Loop While NouvelleEntrée = True

Bonjour,
Je t'ai fait un petit fichier exemple :
https://www.cjoint.com/c/JKtn4mti7uj
MichD
Avatar
MichD
Le 19/11/20 Í  08:58, MichD a écrit :
Le 19/11/20 Í  07:21, Emile63 a écrit :
Set VocTbl = ThisWorkbook.Worksheets("Liste des mots")
MaxVoc = (VocTbl.Cells(12, 2).End(xlDown).Row) - 10 'Compte le NB de
mots de la colonne 2
Do
   Randomize ' Initialise le générateur de nombres aléatoires.
   VocPosition = Int((MaxVoc * Rnd) + 1)   'choisir un mot aléatoirement
     'Bla, bla, Bla.
   Loop While NouvelleEntrée = True

Bonjour,
Je t'ai fait un petit fichier exemple :
https://www.cjoint.com/c/JKtn4mti7uj
MichD

Une version modifiée du même fichier :
https://www.cjoint.com/c/JKtoKmceGnj
MichD
Avatar
MichD
Un ajout Í  la dernière version :
https://www.cjoint.com/c/JKtvIKuZhBj
MichD
Avatar
MichD
Voici la dernière version du fichier, question de m'amuser un peu!
https://www.cjoint.com/c/JKuaHQTvUZj
MichD
Avatar
MichD
Bonjour,
Il se peut que vous observiez une erreur Í  l'ouverture du fichier. Ce
n'est pas une erreur dans le code, mais un message de sécurité d'Excel,
car Í  l'ouverture il y a dans le ThisWorkbook une procédure qui
s'exécute "Private Sub Workbook_Open()" et Excel bloque son exécution Í 
des fins de sécurité. On peut retrouver ces options dans le "Centre de
gestion de la confidentialité". (Fichier / options / Centre de gestion
de la confidentialité...)
Au lieu de modifier la sécurité d'Excel, pour te sortir de cette
impasse, tu fermes le message d'erreur, et tu enregistres le fichier.
Ferme le fichier et Í  l'ouverture du fichier, tu ne devrais plus avoir
ce message d'erreur.
MichD
Avatar
Emile63
Bonjour MichD,
Merci pour ton support et tes idées qui m'ont inspiré pour améliorer mon fichier. ;-)
Sur la base de tes exemples j'ai résolu mon souci des nombres aléatoires sans doublons et c'est cool.
Malheureusement pour moi, et pour je ne sais qu'elle raison, le contrÍ´le de formulaire "zone d'édition" de ma feuille de dialogue ne réagit plus Í  la touche "Entrée" après validation de ma réponse...
Je tourne en rond depuis un moment, ne trouvant pas l'option dans "Format de contrÍ´le" qui s'y réfère.
https://www.cjoint.com/c/JLblF2niC4N
Je précise qu'il n'y a pas de macro sur ce contrÍ´le, puisque précédemment ça fonctionnait. Et qu'il s'agit d'un vieux fichier créer en 1198
Merci encore pour ton aide et éventuelles suggestions.
En te souhaitant une très bonne journée.
Emile
Avatar
Emile63
Le Tuesday, December 1, 2020 Í  12:43:28 PM UTC+1, Emile63 a écrit :
Bonjour MichD,
Merci pour ton support et tes idées qui m'ont inspiré pour améliorer mon fichier. ;-)
Sur la base de tes exemples j'ai résolu mon souci des nombres aléatoires sans doublons et c'est cool.
Malheureusement pour moi, et pour je ne sais qu'elle raison, le contrÍ´le de formulaire "zone d'édition" de ma feuille de dialogue ne réagit plus Í  la touche "Entrée" après validation de ma réponse...
Je tourne en rond depuis un moment, ne trouvant pas l'option dans "Format de contrÍ´le" qui s'y réfère.
https://www.cjoint.com/c/JLblF2niC4N
Je précise qu'il n'y a pas de macro sur ce contrÍ´le, puisque précédemment ça fonctionnait. Et qu'il s'agit d'un vieux fichier créer en 1998
Merci encore pour ton aide et éventuelles suggestions.
En te souhaitant une très bonne journée.
Emile
Avatar
MichD
Le 01/12/20 Í  06:58, Emile63 a écrit :
Le Tuesday, December 1, 2020 Í  12:43:28 PM UTC+1, Emile63 a écrit :
Bonjour MichD,
Merci pour ton support et tes idées qui m'ont inspiré pour améliorer mon fichier. ;-)
Sur la base de tes exemples j'ai résolu mon souci des nombres aléatoires sans doublons et c'est cool.
Malheureusement pour moi, et pour je ne sais qu'elle raison, le contrÍ´le de formulaire "zone d'édition" de ma feuille de dialogue ne réagit plus Í  la touche "Entrée" après validation de ma réponse...
Je tourne en rond depuis un moment, ne trouvant pas l'option dans "Format de contrÍ´le" qui s'y réfère.
https://www.cjoint.com/c/JLblF2niC4N
Je précise qu'il n'y a pas de macro sur ce contrÍ´le, puisque précédemment ça fonctionnait. Et qu'il s'agit d'un vieux fichier créer en 1998
Merci encore pour ton aide et éventuelles suggestions.
En te souhaitant une très bonne journée.
Emile


Dans les propriétés du textbox, il y a celle-ci "EnterKeyBehavior". Elle
peut prendre 2 valeurs "True" ou "False".
Si la propriété "Multiligne" est Í  true, le comportement de
"EnterKeyBehavior" Í  "True", l'appuie sur la touche "Enter" crée une
nouvelle ligne dans le Textbox. Si le textbox est vide, il est plutÍ´t
difficile de voir ce qui se passe. Lorsque "EnterKeyBehavior" Í  "False",
l'appui sur la touche "Enter" fait passer la curseur de la souris sur le
textbox suivant, peu importe la valeur de la propriété "Multiligne.
La publication d'une image est très limitative dans l'interprétation de
la problématique que tu éprouves.
Pourquoi ne pas énoncer ce que tu voudrais qui se passe quand tu appuies
sur la touche "Enter" et que tu es dans ce Textbox?
MichD
Avatar
Emile63
Le Tuesday, December 1, 2020 Í  1:59:46 PM UTC+1, MichD a écrit :
Le 01/12/20 Í  06:58, Emile63 a écrit :
Le Tuesday, December 1, 2020 Í  12:43:28 PM UTC+1, Emile63 a écrit :
Bonjour MichD,
Merci pour ton support et tes idées qui m'ont inspiré pour améliorer mon fichier. ;-)
Sur la base de tes exemples j'ai résolu mon souci des nombres aléatoires sans doublons et c'est cool.
Malheureusement pour moi, et pour je ne sais qu'elle raison, le contrÍ´le de formulaire "zone d'édition" de ma feuille de dialogue ne réagit plus Í  la touche "Entrée" après validation de ma réponse...
Je tourne en rond depuis un moment, ne trouvant pas l'option dans "Format de contrÍ´le" qui s'y réfère.
https://www.cjoint.com/c/JLblF2niC4N
Je précise qu'il n'y a pas de macro sur ce contrÍ´le, puisque précédemment ça fonctionnait. Et qu'il s'agit d'un vieux fichier créer en 1998
Merci encore pour ton aide et éventuelles suggestions.
En te souhaitant une très bonne journée.
Emile
Dans les propriétés du textbox, il y a celle-ci "EnterKeyBehavior". Elle
peut prendre 2 valeurs "True" ou "False".
Si la propriété "Multiligne" est Í  true, le comportement de
"EnterKeyBehavior" Í  "True", l'appuie sur la touche "Enter" crée une
nouvelle ligne dans le Textbox. Si le textbox est vide, il est plutÍ´t
difficile de voir ce qui se passe. Lorsque "EnterKeyBehavior" Í  "False",
l'appui sur la touche "Enter" fait passer la curseur de la souris sur le
textbox suivant, peu importe la valeur de la propriété "Multiligne.
La publication d'une image est très limitative dans l'interprétation de
la problématique que tu éprouves.
Pourquoi ne pas énoncer ce que tu voudrais qui se passe quand tu appuies
sur la touche "Enter" et que tu es dans ce Textbox?
MichD

Bonjour MichD,
Merci pour ta sollicitude.
J'ai envoyé une image écran, mais je me rends bien compte que ce n'est pas très explicite. :(
Je crois que cette feuille a commencé Í  vivre avec Office 95, et donc les textbox et feuille de dialogue n'étaient pas ce qu'ils sont aujourd'hui, l'idée générale étant de ne pas devoir refaire un nouvel Userform et sauver la feuille de dialogue existante ;)
Du coup je me permet de t'envoyer un fichier exemple:
https://www.cjoint.com/c/JLbqCNl0HjN
Donc depuis l'onglet : "Vocabulaire" il faut cliquer sur le bouton : "Entraͮnement"
Ceci fait apparaÍ®tre une boÍ®te de dialogue avec un mot en français (par défaut) qu'il faut écrire en anglais dans le contrÍ´le "traduction" puis valider avec "Enter" (C'est ça qui ne fonctionne plus)
La procédure compare les deux mots et valide ou invalide le mot écrit en faisant évoluer les résultats.
Puis la boucle recommence jusqu'Í  ce qu'elle ait parcouru l'ensemble de la BDD sans doublons ;)
Un clic sur le bouton "Fin" de la boͮte de dialogue met fin ͠ "l'entraͮnement"
VoilÍ , j'espère que c'est plus clair maintenant.
Merci pour ton aide et bonne fin de journée,
Emile
Avatar
MichD
Merci pour ta sollicitude.
J'ai envoyé une image écran, mais je me rends bien compte que ce n'est pas très explicite. :(
Je crois que cette feuille a commencé Í  vivre avec Office 95, et donc les textbox et feuille de dialogue n'étaient pas ce qu'ils sont aujourd'hui, l'idée générale étant de ne pas devoir refaire un nouvel Userform et sauver la feuille de dialogue existante ;)
Du coup je me permet de t'envoyer un fichier exemple:
https://www.cjoint.com/c/JLbqCNl0HjN
Donc depuis l'onglet : "Vocabulaire" il faut cliquer sur le bouton : "Entraͮnement"
Ceci fait apparaÍ®tre une boÍ®te de dialogue avec un mot en français (par défaut) qu'il faut écrire en anglais dans le contrÍ´le "traduction" puis valider avec "Enter" (C'est ça qui ne fonctionne plus)
La procédure compare les deux mots et valide ou invalide le mot écrit en faisant évoluer les résultats.
Puis la boucle recommence jusqu'Í  ce qu'elle ait parcouru l'ensemble de la BDD sans doublons ;)
Un clic sur le bouton "Fin" de la boͮte de dialogue met fin ͠ "l'entraͮnement"
VoilÍ , j'espère que c'est plus clair maintenant.
Merci pour ton aide et bonne fin de journée,
Emile

J'ai pris le temps de regarder la procédure. Le textbox dans la feuille
DLG peut afficher du texte, mais je ne crois pas qu'il soit possible que
ce contrÍ´le réagisse au simple fait d'appuyer sur la touche "Enter".
Cette technologie n'existe pas Í  l'époque! Tu vas devoir ajouter un
bouton et lui affecter une macro qui va faire ce que tu veux.
Personnellement, je te suggère l'utilisation d'un formulaire (userform).
Les possibilités de programmation sont beaucoup plus grandes et plus
flexibles.
MichD
1 2 3