Afficher le contenu d'une case adjacente à une case tirée au hasard

Bonjour à tous,

Je dispose d'un fichier Excel dans lequel j'ai :

- un 1er onglet comportant un tableau avec en colonne A des mots et en colonne B la définition de ces mots

- un 2ème onglet comportant un bouton me permettant de faire un tirage au sort : afficher au hasard un des mots de la colonne A du premier onglet ( formule : =INDEX(Vocabulaire!A2:A1001;ALEA.ENTRE.BORNES(1;1000)) ).

J'ai une première question :

1/ Je voudrais, en plus de tirer au sort un des mots de la colonne A, afficher sa définition juste à côté. Par exemple, quand le tirage au sort fait apparaitre le mot de la case A555, je voudrais faire apparaitre à côté sa définition, c'est à dire la case B555

J'ajoute une deuxième question :

2/ Concernant ma formule de tirage au sort, =INDEX(Vocabulaire!A2:A1001;ALEA.ENTRE.BORNES(1;1000))... elle est bien mais l'inconvénient est que je dois incrémenter les valeurs dans la formule à chaque fois que je rajoute des mots dans mon tableau... quelle formule je pourrais utiliser pour "afficher au hasard une valeur non nulle de la colonne A" ?

Merci pour votre aide,

Cordialement,

Cephalo,

Bonsoir,

Je commence par la fin :

2/ Transformer le tableau des mots / définition en tableau structuré : sélectionner le tableau titre + données, menu "Insertion" / "Tableau" et cocher "Mon tableau comporte des en-têtes", nommer le tableau (pour l'explication ici T_MOTS composé des colonnes Mot et Définition)

Transformer la formule en =INDEX(T_MOTS[Mot];ALEA.ENTRE.BORNES(1;NBVAL(T_MOTS[Mot]))) où T_MOTS[Mot] correspond à la totalité de la colonne "Mot" du tableau nommé T_MOTS.

1/ en imaginant que le résultat du tirage au sort soit en cellule "G2"; la définition = "=INDEX(T_MOTS[Définition];EQUIV(G2;T_MOTS[Mot];0);1)"

Cdlt

Cylfo

Bonjour Cylfo ; avant toute chose :

1/ Merci beaucoup pour la réponse : vos propositions fonctionnent bien, merci !

2/ Permettez-moi de vous tirer mon chapeau pour la rapidité de réponse.

Ensuite :

1/ Certains mots n'ont pas de définition dans mon tableau : comment faire en sorte pour que la formule "=INDEX(T_MOTS[Définition];EQUIV(G2;T_MOTS[Mot];0);1)" ne retourne pas la valeur "0" pour ces cas ?

2/ Je remarque que les retours à la ligne ne sont pas conservés dans le résultat de la formule "=INDEX(T_MOTS[Définition];EQUIV(G2;T_MOTS[Mot];0);1)" (les mots peuvent avoir plusieurs définitions, et pour différencier ces définitions, je fais des retours à la ligne dans la case me permettant d'indiquer la/les définitions)

Bonjour,

Merci

Pour les "ensuite" :

1/ Au choix :

1/a : "Fichier" / "Options" / et voir ci-dessous et décocher l'option surlignée en jaune

image

1/b : Définir un format personnalisé du type "#;#;#"

2/ Dans le ruban de menu "Accueil" / "Alignement", avez-vous sélectionné l'option "Renvoyer à la ligne automatiquement" sur la cellule d'affichage du résultat ? Par contre il faut que cette cellule soit assez grande pour pouvoir afficher la totalité des lignes car son actualisation par la formule ne provoquera pas l'ajustement en hauteur de la ligne.

Cdlt,

Cylfo

Encore merci, vos solutions fonctionnent très bien.

J'ai un ultime problème qui est finalement assez gênant :

J'ai fait un bouton à l'aide d'une macro qui me permet de faire un tirage au hasard à chaque clic sur le bouton.

Mais mon problème est qu'à chaque clic sur le bouton, le curseur se pose sur la case J4... C'est un peu gênant car cela scroll automatiquement sur la gauche de l'écran pour centrer sur la case J4, or mon tableau d'affichage est situé plus à gauche...

Bonjour,

Dans votre macro a la dernière ligne avant "end sub", ajoutez

ActiveSheet.Range("Z4").Select

Avec l'adresse Z4 à adapter suivant la cellule que vous souhaitez selectionner.

Un grand merci ; quel beau forum où pleuvent à vitesse grand V les réponses concises et efficaces :-)

Bonne journée,

Cephalo,

C'est de nouveau moi :-)

Dans mon tableau listant les mots et les définitions, j'ai en fait une colonne supplémentaire qui me permet d'indiquer le type de mot (ex : Adjectif, Verbe, Nom etc...).

J'aimerais améliorer mon tirage au sort pour en faire DES tirages au sort qui me permettent d'afficher au hasard un Adjectif, puis en dessous un Verbe, puis en dessous un Nom etc....

==> J'aimerais donc ajouter une condition à ma formule "=INDEX(T_MOTS[Mot];ALEA.ENTRE.BORNES(1;NBVAL(T_MOTS[Mot])))" ; cette condition serait de vérifier la troisième colonne pour que dans le tirage au sort 1, soit tiré au sort 1 adjectif parmi les X adjectifs ; dans le tirage au sort 2, soit tiré au sort 1 verbe parmi les X verbes etc...

D'avance merci de continuer à m'aider :-)

Cephalo,

Bonsoir Cephalo,

Je m'y perds un peu , le tirage aléatoire est fait par une formule Excel ou par une procédure VBA, (si oui, peux-tu communiquer le code utilisé ?) car en fonction de l'un ou l'autre les réponses peuvent différer.

Cdlt,

Cylfo

Le tirage au sort est fait par la formule Excel : =INDEX(T_MOTS[[#Tout];[Liste]];ALEA.ENTRE.BORNES(1;NBVAL(T_MOTS[[#Tout];[Liste]]))).

C'est juste que j'ai mis un bouton qui permet à chaque clic de faire un tirage au sort dans la même case.

Ce bouton est associé à la macro :

Sub Tirage()
'
' Tirage Macro
'

'
Range("J3").Select
ActiveCell.FormulaR1C1 = ""
Range("A4").Select
End Sub

Bonsoir Cephalo,

Je vois au moins 2 pistes de solution :

  1. Utiliser PowerQuery pour créer 3 sous-tableaux (les noms, les adjectifs, les verbe) distincts à partit du tableau principal et baser chaque formule de tirage sur le tableau adéquat. La réactualisation des sous-tableaux se fait via "Données" / "Actualiser tout". Si tu veux utiliser cette solution et que tu n'es pas à l'aise avec PowerQuery, il faudrait que tu communiques le fichier (au moins l'onglet contenant le tableau des mots avec quelques lignes de chaque famille de mot). L'avantage de cette solution est qu'elle n'implique pas de trier le tableau des mots comme ci-dessous.
  2. Trier le tableau d'origine par famille de mot et définir 3 plages nommées à l'aide de la fonction "DECALER" qui permettra d'avoir des sous-ensembles du tableau d'origine. L'impératif est que le tableau soit toujours trié par famille de mot. La formule nommée (par exemple ST_ADJECTIFS) à définir dans "Formule" / "Gestionnaire de noms" pour les adjectifs serait "=DECALER(T_MOTS[Mot];EQUIV("Adjectif";T_MOTS[Famille de mot];0)-1;0;NB.SI(T_MOTS[Famille de mot];"Adjectif");3)". La formule de recherche aléatoire d'un adjectif "=INDEX(ST_ADJECTIFS;ALEA.ENTRE.BORNES(1;LIGNES(ST_ADJECTIFS));1)". La formule de recherche de la définition "=RECHERCHEV(G2;ST_ADJECTIFS;3;FAUX)".

Cdlt,

Cylfo

Rechercher des sujets similaires à "afficher contenu case adjacente tiree hasard"