Choix dans Tableau selon critere

Bonjour,

je souhaiterai sélectionner une valeur dans un tableau parmi d'autres en fonction de mon choix de critère...

Pour être plus clair j'ai joint un fichier...merci d'avance pour votre aide :)

11classeur1.xlsx (10.25 Ko)

Bonjour Oly80

Avec un tableau structuré dont les entêtes sont les lettres et la fonction INDIRECT()

@+

Bonjour le fil, bonjour le forum,

Une proposition VBA avec l'événementielle Change ci-dessous :

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim OT As Worksheet 'déclare la variable OT (Onglet Tab)
Dim COL As String 'déclare la variable COL (COLonne)
Dim NA As Byte 'déclare la variable NA (Nombre Aléatoire)

If Target.Address <> "$A$4" Then Exit Sub 'si le changement a lieu ailleurs qu'en A4, sort de la procédure
If Target.Value = "" Then Target.Offset(0, 1).ClearContents: Exit Sub 'si A4 est effacée, efface aussi B4
Set OT = Worksheets("TAB") 'définit l'onglet OT
COL = Range("A4").Value 'définit la colonne COL (valeur entrée en A4")
Randomize 'lance le générateur de nombres aléatoires
NA = Int((12 - 3) * Rnd + 2) 'définit le nombre aléatoire NA (une ligne entre 2 et 12)
Range("B4").Value = OT.Cells(NA, COL).Value 'renvoie dans B4 la valeur de la cellule ligne NA colonne COL de l'onglet OT
End Sub

Tape une valeur dans A4 de l'onglet CRIT...

Le fichier :

4oly-ep-v01.xlsm (17.41 Ko)


[Édition]

Je navet pas vu que la ligne 1 était vide... remplacer NA par :

NA = Int((12 - 4) * Rnd + 3) 'définit le nombre aléatoire NA (une ligne entre 3 et 12)


Merci à tous les deux pour vos réponses rapides !

Je privilégie la solution utilisant le VB par contre je n'arrive pas à adapter le code à mon fichier réel qui utilise plutôt

2classeur2.xlsm (10.23 Ko)

les cellules suivantes (voir classeur2.xlsm)

Merci

Re,

Le fichier modifié avec le code ci-dessous :

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim OT As Worksheet 'déclare la variable OT (Onglet Tab)
Dim R As Range 'déclare la variable R (Recherche)
Dim COL As Byte 'déclare la variable COL (COLonne)
Dim NA As Byte 'déclare la variable NA (Nombre Aléatoire)

If Target.Address <> "$A$7" Then Exit Sub 'si le changement a lieu ailleurs qu'en A4, sort de la procédure
If Target.Value = "" Then Target.Offset(0, 4).ClearContents: Exit Sub 'si A4 est effacée, efface aussi B4
Set OT = Worksheets("TAB") 'définit l'onglet OT
Set R = OT.Rows(1).Find(Range("A7").Value, , xlValues, xlWhole) 'défimnit la recherche R (recherche dans la ligne 1 de l'onglet OT la valeur entière de la cellule A7 de l'onglet OC)
If Not R Is Nothing Then 'condition : s'il existe au moins une occurrence trouvée
    COL = R.Column 'définit la colonne COL (valeur entrée en A4")
    Randomize 'lance le générateur de nombres aléatoires
    NA = Int((11 - 1) * Rnd + 2) 'définit le nombre aléatoire NA (une ligne entre 2 et 11)
    Range("E7").Value = OT.Cells(NA, COL).Value 'renvoie dans E7 la valeur de la cellule ligne NA colonne COL de l'onglet OT
Else 'sinon
    MsgBox "Critère non valide !" 'message
    Range("A7").ClearContents 'efface E7
End If 'fin de la condition
Range("A7").Select 'sélectionne A7
End Sub
2oly-ep-v02.xlsm (18.19 Ko)

Pour répondre à Bruno, j'ai l'impression que la formule ne fonctionne pas si les données à "remonter" sont des lettres....j’obtiens "0"...normal ?

Re,

Désolé, mais j'ai juste envie de

Vous nous donnez un tableau avec des nombres et vous demandez une valeur aléatoire de la colonne déterminée

Dans ma formule, j'ai donc utilisé la fonction ALEA.ENTRE.BORNES() qui ne fonctionne donc qu'avec des chiffres

Soyez plus explicite la prochaine fois

Oui oui je sais ! le fichier en question était uniquement pour simplifier mes explications...mais en effet j'ai besoin d'appliquer cela à des listes de NOMS...du coup votre formule initiale est elle modifiable ou adaptable ?

J'ai besoin de repérer une colonne grâce a l’entête et ensuite tirer au hasard 20 noms dans la colonne désignée et "cerise sur le gâteau"...si possible... sans doublon !

Bonjour le fil, bonjour le forum,

Je rejoins Bruno. Quelle perte de temps et d'énergie ! Cela a peut-être facilité tes explications mais le résultat est que ça ne fonctionne pas comme tu le désires.
54 messages au compteur, il est temps que tu comprennes que la pièce jointe doit être un exemple concret de ta requête. Je n'en vois toujours pas d'ailleurs de nouvelle...

Je ne pense pas que cela soit une perte de temps..cela m'a malgré tout servi et pourra servir à d'autres...

Bref si j'ai encore droit à votre aide je vous joins un fichier 100% en rapport avec mon cas.

Vous remerciant par avance

1exemple.xlsm (14.76 Ko)

Bonjour,
Une proposition avec formule !...

=INDEX(INDIRECT("Table1["&A4&"]");ALEA.ENTRE.BORNES(1;LIGNES(Table1)))
5exemple.xlsm (27.51 Ko)

Super ! Merci

Et si je veux sélectionner 5 cellules (sans doublon) ?

Re,
Une nouvelle perte de temps ?
Clos ce sujet et crée en un nouveau en expliquant clairement ce que tu souhaites.
Cdlt.

Bon Oly80, Jean-Eric

Jean-Eric à raison, exprimez clairement vos besoins SVP

Je clôture le sujet

Rechercher des sujets similaires à "choix tableau critere"