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.
C'est la version Í retenir. https://www.cjoint.com/c/KDfvgIx6BAj Tout fonctionne bien... mais je n'ai pas testé les 100 expressions. MichD
Emile63
Le Monday, April 5, 2021 Í 11:07:57 PM UTC+2, MichD a écrit :
C'est la version Í retenir. https://www.cjoint.com/c/KDfvgIx6BAj Tout fonctionne bien... mais je n'ai pas testé les 100 expressions. MichD
Bonjour MichD, Merci pour ton implication et pour ton aide. Cette version est meilleure et stable (a cause de la mémoire), merci. J'ai une question complémentaire: Vois -tu ma version compte (actuellement) env. 1000 mots et pour faire des leçons courtes (30 mn), j'aimerais me servir des thèmes [Leçon], en sélectionnant un thème générique de [Vocabulaire] par leçon. Pour gérer la position (aléatoire) je pourrais substituer, MaxVoc = VocTbl.Cells.Count par MAxVoc=WorksheetFunction.Subtotal(103, Range("B4:B" & Rows(Rows.Count).End(xlUp).Row)) - 1 Ce qui me donnerait le nombre de lignes filtrés " Í étudier" Mais je ne vois pas comment appliquer ce nombre Í la sélection visible de la plage filtrée.. Je brode autour de ceci afin de déterminer un "VocPosition" des lignes visibles uniquement: Dim Plage As Range Set Plage = Range("A1:A" & Range("A65536").End(xlUp).Row).SpecialCells(xlVisible) Mais je ne trouve pas de solutions, et me demande si c'est possible... Aurait-tu une idée ou une solution? Encore merci pour ton aide et ton support, Très bonne journée, Emile
Le Monday, April 5, 2021 Í 11:07:57 PM UTC+2, MichD a écrit :
C'est la version Í retenir. https://www.cjoint.com/c/KDfvgIx6BAj
Tout fonctionne bien... mais je n'ai pas testé les 100 expressions.
MichD
Bonjour MichD,
Merci pour ton implication et pour ton aide. Cette version est meilleure et stable (a cause de la mémoire), merci.
J'ai une question complémentaire:
Vois -tu ma version compte (actuellement) env. 1000 mots et pour faire des leçons courtes (30 mn), j'aimerais me servir des thèmes [Leçon], en sélectionnant un thème générique de [Vocabulaire] par leçon.
Pour gérer la position (aléatoire) je pourrais substituer,
MaxVoc = VocTbl.Cells.Count
par
MAxVoc=WorksheetFunction.Subtotal(103, Range("B4:B" & Rows(Rows.Count).End(xlUp).Row)) - 1
Ce qui me donnerait le nombre de lignes filtrés " Í étudier"
Mais je ne vois pas comment appliquer ce nombre Í la sélection visible de la plage filtrée..
Je brode autour de ceci afin de déterminer un "VocPosition" des lignes visibles uniquement:
Dim Plage As Range
Set Plage = Range("A1:A" & Range("A65536").End(xlUp).Row).SpecialCells(xlVisible)
Mais je ne trouve pas de solutions, et me demande si c'est possible...
Aurait-tu une idée ou une solution?
Encore merci pour ton aide et ton support,
Très bonne journée,
Emile
Le Monday, April 5, 2021 Í 11:07:57 PM UTC+2, MichD a écrit :
C'est la version Í retenir. https://www.cjoint.com/c/KDfvgIx6BAj Tout fonctionne bien... mais je n'ai pas testé les 100 expressions. MichD
Bonjour MichD, Merci pour ton implication et pour ton aide. Cette version est meilleure et stable (a cause de la mémoire), merci. J'ai une question complémentaire: Vois -tu ma version compte (actuellement) env. 1000 mots et pour faire des leçons courtes (30 mn), j'aimerais me servir des thèmes [Leçon], en sélectionnant un thème générique de [Vocabulaire] par leçon. Pour gérer la position (aléatoire) je pourrais substituer, MaxVoc = VocTbl.Cells.Count par MAxVoc=WorksheetFunction.Subtotal(103, Range("B4:B" & Rows(Rows.Count).End(xlUp).Row)) - 1 Ce qui me donnerait le nombre de lignes filtrés " Í étudier" Mais je ne vois pas comment appliquer ce nombre Í la sélection visible de la plage filtrée.. Je brode autour de ceci afin de déterminer un "VocPosition" des lignes visibles uniquement: Dim Plage As Range Set Plage = Range("A1:A" & Range("A65536").End(xlUp).Row).SpecialCells(xlVisible) Mais je ne trouve pas de solutions, et me demande si c'est possible... Aurait-tu une idée ou une solution? Encore merci pour ton aide et ton support, Très bonne journée, Emile
Emile63
Le Tuesday, April 6, 2021 Í 9:28:28 AM UTC+2, Emile63 a écrit :
Le Monday, April 5, 2021 Í 11:07:57 PM UTC+2, MichD a écrit :
C'est la version Í retenir. https://www.cjoint.com/c/KDfvgIx6BAj Tout fonctionne bien... mais je n'ai pas testé les 100 expressions. MichD
Bonjour MichD, Merci pour ton implication et pour ton aide. Cette version est meilleure et stable (a cause de la mémoire), merci. J'ai une question complémentaire: Vois -tu ma version compte (actuellement) env. 1000 mots et pour faire des leçons courtes (30 mn), j'aimerais me servir des thèmes [Leçon], en sélectionnant un thème générique de [Vocabulaire] par leçon. Pour gérer la position (aléatoire) je pourrais substituer, MaxVoc = VocTbl.Cells.Count par MAxVoc=WorksheetFunction.Subtotal(103, Range("B4:B" & Rows(Rows.Count).End(xlUp).Row)) - 1 Ce qui me donnerait le nombre de lignes filtrés " Í étudier" Mais je ne vois pas comment appliquer ce nombre Í la sélection visible de la plage filtrée.. Je brode autour de ceci afin de déterminer un "VocPosition" des lignes visibles uniquement: Dim Plage As Range Set Plage = Range("A1:A" & Range("A65536").End(xlUp).Row).SpecialCells(xlVisible) Mais je ne trouve pas de solutions, et me demande si c'est possible... Aurait-tu une idée ou une solution? Encore merci pour ton aide et ton support, Très bonne journée, Emile
Rebonjour MicheD, Revenant sur mon message précédent, j'ai trouvé 2-3 choses par-ci par-lÍ , que voici, mais je n'arrive toujours pas Í sélectionner la ligne visible qui est proposée dans "VocAléa" ... :-( '--------------------------------------------------------------------------------- Sub ChercheLigne() Dim rg As Range Dim PasTrouve As Boolean Set ws = Feuil3 PasTrouve = True Application.EnableEvents = False VocTotal = ws.Range("TableauMots").Rows.Count VocFilter = WorksheetFunction.Subtotal(103, ws.Range("B4:B" & Rows(Rows.Count).End(xlUp).Row)) - 1 Do While PasTrouve Randomize VocAléa = Int((VocFilter * Rnd) + 1) 'choisi aléatoirement PasTrouve = False Loop If VocTotal <> VocFilter Then Set rg = ws.Rows("5:" & Application.Rows.Count) Set rg = rg.SpecialCells(xlCellTypeVisible) Set rg = rg.Cells(VocAléa) ' Ici, j'essaie de relever le n° de ligne correspondant, sans succès VocPos = rg.Row MsgBox "la " & VocAléa & " cellule visible se trouve Í la ligne : " & VocPos Else: VocPos = VocTotal End If Application.EnableEvents = False End Sub Quelle est mon erreur ?? Merci d'avance pour ton aide et (éventuelle) solution. Très bonne fin de journée, Emile
Le Tuesday, April 6, 2021 Í 9:28:28 AM UTC+2, Emile63 a écrit :
Le Monday, April 5, 2021 Í 11:07:57 PM UTC+2, MichD a écrit :
> C'est la version Í retenir. https://www.cjoint.com/c/KDfvgIx6BAj
> Tout fonctionne bien... mais je n'ai pas testé les 100 expressions.
>
> MichD
Bonjour MichD,
Merci pour ton implication et pour ton aide. Cette version est meilleure et stable (a cause de la mémoire), merci.
J'ai une question complémentaire:
Vois -tu ma version compte (actuellement) env. 1000 mots et pour faire des leçons courtes (30 mn), j'aimerais me servir des thèmes [Leçon], en sélectionnant un thème générique de [Vocabulaire] par leçon.
Pour gérer la position (aléatoire) je pourrais substituer,
MaxVoc = VocTbl.Cells.Count
par
MAxVoc=WorksheetFunction.Subtotal(103, Range("B4:B" & Rows(Rows.Count).End(xlUp).Row)) - 1
Ce qui me donnerait le nombre de lignes filtrés " Í étudier"
Mais je ne vois pas comment appliquer ce nombre Í la sélection visible de la plage filtrée..
Je brode autour de ceci afin de déterminer un "VocPosition" des lignes visibles uniquement:
Dim Plage As Range
Set Plage = Range("A1:A" & Range("A65536").End(xlUp).Row).SpecialCells(xlVisible)
Mais je ne trouve pas de solutions, et me demande si c'est possible...
Aurait-tu une idée ou une solution?
Encore merci pour ton aide et ton support,
Très bonne journée,
Emile
Rebonjour MicheD,
Revenant sur mon message précédent, j'ai trouvé 2-3 choses par-ci par-lÍ , que voici, mais je n'arrive toujours pas Í sélectionner la ligne visible qui est proposée dans "VocAléa" ... :-(
'---------------------------------------------------------------------------------
Sub ChercheLigne()
Dim rg As Range
Dim PasTrouve As Boolean
Set ws = Feuil3
PasTrouve = True
Application.EnableEvents = False
Do While PasTrouve
Randomize
VocAléa = Int((VocFilter * Rnd) + 1) 'choisi aléatoirement
PasTrouve = False
Loop
If VocTotal <> VocFilter Then
Set rg = ws.Rows("5:" & Application.Rows.Count)
Set rg = rg.SpecialCells(xlCellTypeVisible)
Set rg = rg.Cells(VocAléa) ' Ici, j'essaie de relever le n° de ligne correspondant, sans succès
VocPos = rg.Row
MsgBox "la " & VocAléa & " cellule visible se trouve Í la ligne : " & VocPos
Else: VocPos = VocTotal
End If
Application.EnableEvents = False
End Sub
Quelle est mon erreur ??
Merci d'avance pour ton aide et (éventuelle) solution.
Très bonne fin de journée,
Emile
Le Tuesday, April 6, 2021 Í 9:28:28 AM UTC+2, Emile63 a écrit :
Le Monday, April 5, 2021 Í 11:07:57 PM UTC+2, MichD a écrit :
C'est la version Í retenir. https://www.cjoint.com/c/KDfvgIx6BAj Tout fonctionne bien... mais je n'ai pas testé les 100 expressions. MichD
Bonjour MichD, Merci pour ton implication et pour ton aide. Cette version est meilleure et stable (a cause de la mémoire), merci. J'ai une question complémentaire: Vois -tu ma version compte (actuellement) env. 1000 mots et pour faire des leçons courtes (30 mn), j'aimerais me servir des thèmes [Leçon], en sélectionnant un thème générique de [Vocabulaire] par leçon. Pour gérer la position (aléatoire) je pourrais substituer, MaxVoc = VocTbl.Cells.Count par MAxVoc=WorksheetFunction.Subtotal(103, Range("B4:B" & Rows(Rows.Count).End(xlUp).Row)) - 1 Ce qui me donnerait le nombre de lignes filtrés " Í étudier" Mais je ne vois pas comment appliquer ce nombre Í la sélection visible de la plage filtrée.. Je brode autour de ceci afin de déterminer un "VocPosition" des lignes visibles uniquement: Dim Plage As Range Set Plage = Range("A1:A" & Range("A65536").End(xlUp).Row).SpecialCells(xlVisible) Mais je ne trouve pas de solutions, et me demande si c'est possible... Aurait-tu une idée ou une solution? Encore merci pour ton aide et ton support, Très bonne journée, Emile
Rebonjour MicheD, Revenant sur mon message précédent, j'ai trouvé 2-3 choses par-ci par-lÍ , que voici, mais je n'arrive toujours pas Í sélectionner la ligne visible qui est proposée dans "VocAléa" ... :-( '--------------------------------------------------------------------------------- Sub ChercheLigne() Dim rg As Range Dim PasTrouve As Boolean Set ws = Feuil3 PasTrouve = True Application.EnableEvents = False VocTotal = ws.Range("TableauMots").Rows.Count VocFilter = WorksheetFunction.Subtotal(103, ws.Range("B4:B" & Rows(Rows.Count).End(xlUp).Row)) - 1 Do While PasTrouve Randomize VocAléa = Int((VocFilter * Rnd) + 1) 'choisi aléatoirement PasTrouve = False Loop If VocTotal <> VocFilter Then Set rg = ws.Rows("5:" & Application.Rows.Count) Set rg = rg.SpecialCells(xlCellTypeVisible) Set rg = rg.Cells(VocAléa) ' Ici, j'essaie de relever le n° de ligne correspondant, sans succès VocPos = rg.Row MsgBox "la " & VocAléa & " cellule visible se trouve Í la ligne : " & VocPos Else: VocPos = VocTotal End If Application.EnableEvents = False End Sub Quelle est mon erreur ?? Merci d'avance pour ton aide et (éventuelle) solution. Très bonne fin de journée, Emile
MichD
Ton fichier : https://www.cjoint.com/c/KDgxTRu3vHj MichD
Ton fichier : https://www.cjoint.com/c/KDgxTRu3vHj
Ton fichier : https://www.cjoint.com/c/KDgxTRu3vHj MichD
Un dernier détail : https://www.cjoint.com/c/KDhaRPo8nRj MichD
Formatage uniforme du "tableau" : ttps://www.cjoint.com/c/KDhliYSUc2j MichD
MichD
Le 07/04/21 Í 07:10, MichD a écrit :
Le 06/04/21 Í 20:44, MichD a écrit :
Le 06/04/21 Í 19:46, MichD a écrit :
Ton fichier : https://www.cjoint.com/c/KDgxTRu3vHj MichD
Un dernier détail : https://www.cjoint.com/c/KDhaRPo8nRj MichD
Formatage uniforme du "tableau" : ttps://www.cjoint.com/c/KDhliYSUc2j MichD
Une toute dernière version avec Tableau de bord. Évidemment, tu vas améliorer cette présentation. Seulement un petit exemple! https://www.cjoint.com/c/KDhnkVRPmlj À toi de voir comment ouvrir la fenêtre VBA... ;-)) Seulement pour le plaisir! MichD
Le 07/04/21 Í 07:10, MichD a écrit :
Le 06/04/21 Í 20:44, MichD a écrit :
Le 06/04/21 Í 19:46, MichD a écrit :
Ton fichier : https://www.cjoint.com/c/KDgxTRu3vHj
MichD
Un dernier détail : https://www.cjoint.com/c/KDhaRPo8nRj
MichD
Formatage uniforme du "tableau" : ttps://www.cjoint.com/c/KDhliYSUc2j
MichD
Une toute dernière version avec Tableau de bord. Évidemment, tu vas
améliorer cette présentation. Seulement un petit exemple!
https://www.cjoint.com/c/KDhnkVRPmlj
À toi de voir comment ouvrir la fenêtre VBA... ;-))
Ton fichier : https://www.cjoint.com/c/KDgxTRu3vHj MichD
Un dernier détail : https://www.cjoint.com/c/KDhaRPo8nRj MichD
Formatage uniforme du "tableau" : ttps://www.cjoint.com/c/KDhliYSUc2j MichD
Une toute dernière version avec Tableau de bord. Évidemment, tu vas améliorer cette présentation. Seulement un petit exemple! https://www.cjoint.com/c/KDhnkVRPmlj À toi de voir comment ouvrir la fenêtre VBA... ;-)) Seulement pour le plaisir! MichD
Emile63
Le Wednesday, April 7, 2021 Í 3:17:52 PM UTC+2, MichD a écrit :
Le 07/04/21 Í 07:10, MichD a écrit :
Le 06/04/21 Í 20:44, MichD a écrit :
Le 06/04/21 Í 19:46, MichD a écrit :
Ton fichier : https://www.cjoint.com/c/KDgxTRu3vHj MichD
Un dernier détail : https://www.cjoint.com/c/KDhaRPo8nRj MichD
Formatage uniforme du "tableau" : ttps://www.cjoint.com/c/KDhliYSUc2j MichD
Une toute dernière version avec Tableau de bord. Évidemment, tu vas améliorer cette présentation. Seulement un petit exemple! https://www.cjoint.com/c/KDhnkVRPmlj À toi de voir comment ouvrir la fenêtre VBA... ;-)) Seulement pour le plaisir! MichD
Bonjour MichD Merci pour toutes ces bonnes idées ;-) Tu va trop vite pour moi, je n'ai pas le temps d'adapter ces super idées dans mon fichier original.... Intégrer le choix de la leçon dans l'userform :))))) Et le tableau de bord également... Par ailleurs j'ai constaté que quand j'ajoute un mot dans l'userform (vers. précédente), la bdd originale s'efface et il ne reste que la leçon en cours .. Je te tiens au courant dès que j'aurai digéré tout ça. ;-) Merci encore et très bonne journée! Emile
Le Wednesday, April 7, 2021 Í 3:17:52 PM UTC+2, MichD a écrit :
Le 07/04/21 Í 07:10, MichD a écrit :
> Le 06/04/21 Í 20:44, MichD a écrit :
>> Le 06/04/21 Í 19:46, MichD a écrit :
>>>
>>> Ton fichier : https://www.cjoint.com/c/KDgxTRu3vHj
>>>
>>> MichD
>>>
>>
>> Un dernier détail : https://www.cjoint.com/c/KDhaRPo8nRj
>>
>> MichD
>
> Formatage uniforme du "tableau" : ttps://www.cjoint.com/c/KDhliYSUc2j
>
> MichD
Une toute dernière version avec Tableau de bord. Évidemment, tu vas
améliorer cette présentation. Seulement un petit exemple!
https://www.cjoint.com/c/KDhnkVRPmlj
À toi de voir comment ouvrir la fenêtre VBA... ;-))
Seulement pour le plaisir!
MichD
Bonjour MichD
Merci pour toutes ces bonnes idées ;-)
Tu va trop vite pour moi, je n'ai pas le temps d'adapter ces super idées dans mon fichier original....
Intégrer le choix de la leçon dans l'userform :)))))
Et le tableau de bord également...
Par ailleurs j'ai constaté que quand j'ajoute un mot dans l'userform (vers. précédente), la bdd originale s'efface et il ne reste que la leçon en cours ..
Je te tiens au courant dès que j'aurai digéré tout ça. ;-)
Le Wednesday, April 7, 2021 Í 3:17:52 PM UTC+2, MichD a écrit :
Le 07/04/21 Í 07:10, MichD a écrit :
Le 06/04/21 Í 20:44, MichD a écrit :
Le 06/04/21 Í 19:46, MichD a écrit :
Ton fichier : https://www.cjoint.com/c/KDgxTRu3vHj MichD
Un dernier détail : https://www.cjoint.com/c/KDhaRPo8nRj MichD
Formatage uniforme du "tableau" : ttps://www.cjoint.com/c/KDhliYSUc2j MichD
Une toute dernière version avec Tableau de bord. Évidemment, tu vas améliorer cette présentation. Seulement un petit exemple! https://www.cjoint.com/c/KDhnkVRPmlj À toi de voir comment ouvrir la fenêtre VBA... ;-)) Seulement pour le plaisir! MichD
Bonjour MichD Merci pour toutes ces bonnes idées ;-) Tu va trop vite pour moi, je n'ai pas le temps d'adapter ces super idées dans mon fichier original.... Intégrer le choix de la leçon dans l'userform :))))) Et le tableau de bord également... Par ailleurs j'ai constaté que quand j'ajoute un mot dans l'userform (vers. précédente), la bdd originale s'efface et il ne reste que la leçon en cours .. Je te tiens au courant dès que j'aurai digéré tout ça. ;-) Merci encore et très bonne journée! Emile
MichD
Tu va trop vite pour moi, je n'ai pas le temps d'adapter ces super idées dans mon fichier original.... Intégrer le choix de la leçon dans l'userform :))))) Et le tableau de bord également...
**** Comme j'ai terminé, tu as tout le temps voulu, il ne devrait pas y avoir une nouvelle version!
Par ailleurs j'ai constaté que quand j'ajoute un mot dans l'userform (vers. précédente), la bdd originale s'efface et il ne reste que la leçon en cours ..
***** Tu as utilisé une version trop ancienne! Cela fut corrigé depuis lors. MichD
Tu va trop vite pour moi, je n'ai pas le temps d'adapter ces super idées dans mon fichier original....
Intégrer le choix de la leçon dans l'userform :)))))
Et le tableau de bord également...
**** Comme j'ai terminé, tu as tout le temps voulu, il ne devrait pas y
avoir une nouvelle version!
Par ailleurs j'ai constaté que quand j'ajoute un mot dans l'userform (vers. précédente), la bdd originale s'efface et il ne reste que la leçon en cours ..
***** Tu as utilisé une version trop ancienne! Cela fut corrigé depuis lors.
Tu va trop vite pour moi, je n'ai pas le temps d'adapter ces super idées dans mon fichier original.... Intégrer le choix de la leçon dans l'userform :))))) Et le tableau de bord également...
**** Comme j'ai terminé, tu as tout le temps voulu, il ne devrait pas y avoir une nouvelle version!
Par ailleurs j'ai constaté que quand j'ajoute un mot dans l'userform (vers. précédente), la bdd originale s'efface et il ne reste que la leçon en cours ..
***** Tu as utilisé une version trop ancienne! Cela fut corrigé depuis lors. MichD