Vocabulaire List
Bonjour, j'ai téléchargé un fichier Excel sur ce forum permettant de réaliser une liste de vocabulaire (Téléchargements --> utilitaires --> Vocabulaire List) Les codes VBA du fichier sont en libre accès.
Cependant, lorsque je veux réaliser ma propre liste, il est impossible pour moi d'utiliser le quiz sur la droite de l'écran :
J'arrive bien à utiliser les fonctions de recherche dans la partie juste à droite du tableau mais pour le Quiz, impossible de relancer une nouvelle question. Le VBA est codé surement sur le tableau entier et il comporte des lignes vides.
Auriez-vous une idée qui me permettrait de personnaliser ce fichier ?
Cordialement.
Bonjour Loic Lamps,
J'ai tenté le coup ...
Une fois la nouvelle liste de mots saisie ...
Fais un choix dans le combobox "Anglais" et un autre choix dans le combobox "Français" ...
Dès lors ... les quizs quizent bien ici ...
ric
Bonjour
vous pouvez modifier le code Alea_ENFR avec ceci :
Sub Alea_ENFR()
'Désactive le rafraichissement de l'affichage
Application.ScreenUpdating = False
'Ote temporairement la protection de la feuille
ActiveSheet.Unprotect
'Déclaration des variables
Dim id As Integer
Dim nb As Integer
Dim eng As String
Dim fra As String
'Supprime l'indicateur de bonne/mauvaise réponse et la proposition actuelle
Range("K10") = ""
Range("L10") = ""
'Détermine le nombre de mots dans la liste (nb)
' Range("B2").Select
' Selection.End(xlDown).Select
' la liste se trouvant dans un tableau structuré, il suffit de récupérer le nombre de ligne de ce dernier
' il n'y a qu'un seul tableau sur la feuille donc on prend le premier "1"
' sinon on peut inscrire son nom : Table_équivalence
nb = ActiveSheet.ListObjects(1).ListRows.Count ' listobjets(1).Rows.Count 'ActiveCell.Row
'Génère un nombre entier aléatoire
Randomize
' sous VBA il existe une fonction de "tirage au sort"
' RND donne un chiffre entre 0 inclus et 1 non inclu (0 à 0.999999999999)
' donc pour choisir une ligne de vocabulaire au hasard on fait un tirage
' RND multiplié par le nombre de ligne
' donc si 10 lignes dans le tableau alors le RND *10 irra de 0 à 9.99999999
' en prenant l'entier on aura alors 0 à 9
' le +1 permet d'aller de la ligne 1 du tableau à la ligne 10
id = Int(Rnd * nb) + 1 'Application.WorksheetFunction.RandBetween(1, nb - 1)
'Détermine le mot en FRA et en ENG associés à l'ID
' il ne reste plus qu'à récupérer les valeurs de cette ligne en colonne 3 pour le français et en colonne 2 pour l'anglais
fra = ActiveSheet.ListObjects(1).ListRows(id).Range.Cells(3) 'ListRows.CountApplication.WorksheetFunction.VLookup(id, Range("Table_équivalence[['#]:[Français]]"), 3, 1)
eng = ActiveSheet.ListObjects(1).ListRows(id).Range.Cells(3) 'Application.WorksheetFunction.VLookup(id, Range("Table_équivalence[['#]:[Français]]"), 2, 1)
Range("L8") = eng
Range("L3") = fra
'Réactive la protection de la feuille
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingHyperlinks:=True
'Recentre l'affichage
Range("L10").Select
'Réactive la protection de la feuille
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingHyperlinks:=True
'Réactive le rafraichissement de l'affichage
Application.ScreenUpdating = True
End SubLe fichier ainsi modifié :
Je n'ai fais que cette modification ainsi que le fait de supprimer les lignes vides du tableau !
tableau structuré = Tableau ne comportant pas de lignes vides = Tableau qui s'allonge automatiquement dès qu'une nouvelle donnée est inscrite sur la première ligne vide sous le tableau dans une des colonnes !
Donc pour ajouter des données il suffit de renseigner soit la colonne B en anglais soit la colonne C en français, la colonne A est "automatique" par formule mais elle ne sert pas à grand chose, je ne l'ai pas supprimé pour garder une compatibilité avec les autre code du fichier.
@ bientôt
LouReeD