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 :
[É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)