Bonjour,
Je propose une piste simpliste, en supposant que :
- le vocabulaire se trouve en colonne 1 d'une feuille appelée Liste, sans titre et sans trous
- que le tirage au sort se pratique dans une feuille appelée Tirage
Dans le code VBA de la feuille Tirage, mettre le code suivant :
Private Sub Worksheet_Activate()
Dim Nombre As Long
Nombre = Sheets("Liste").Cells(1, 1).CurrentRegion.Rows.Count
Sheets("Liste").Cells(1, 10).Value = Nombre
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call Tirage
End Sub
Dans un module VBA, mettre le code suivant :
Sub Tirage()
Dim Nombre As Long
Dim Hasard As Long
Dim FL As Worksheet
Dim FT As Worksheet
Set FL = Sheets("Liste")
Set FT = Sheets("Tirage")
Randomize
Nombre = FL.Cells(1, 10).Value
Hasard = Int(Rnd() * Nombre) + 1
FT.Cells(10, 3).Value = FL.Cells(Hasard, 1)
End Sub
Quand on active la feuille Tirage, une macro de feuille calcule automatiquement le nombre de mots, et le stocke en cellule (1, 10) de la feuille Liste. De cette façon, quand on vient de mettre à jour la liste, ce nombre est recalculé.
Pour déclencher la macro de tirage, j'adopte la solution simpliste : déplacer la sélection dans la feuille Tirage (cliquer au hasard, déplacer les flèches...)
Plus élégamment, on peut mettre un bouton pour appeler la macro.
On peut soigner encore en faisant un petit formulaire qui monte automatiquement à l'ouverture du classeur, etc.
C'est juste une proposition...
Armojax.