Selection aléatoire de cellule visible

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

etpisculrien

XLDnaute Occasionnel
Bjr à tous,

Je ne sais pas cela est possible, mais je cherche une macro qui me permettrait de selectionner de façon aléatoire une cellule dans une plage filtrée par filtre automatique.
En clair, j'ai fait un filtre pour les cellules comprises entre 5 et 20 (colonne B). Ma colonne A contient les noms.
Le but est que parmis mes lignes visibles, une selection aléatoire soit faite et me renvoie le nom dans un textbox.

Si un petit geni a une idée, je suis preneur ;-)

Merci d'avance
 
Re : Selection aléatoire de cellule visible

Bonjour,

Sans me réclamer de plus d'un des deux qualificatifs du premier post, une solution à lancer depuis la feuille contenant la liste filtrée :

Dans un module standard:
VB:
Option Explicit

Public v As Variant

Sub AleaFiltre()
Dim x As Long, cpt1 As Long, i As Long, cpt2 As Long
    x = Cells(Rows.Count, 2).End(xlUp).Row
    cpt1 = 0
    For i = 2 To x
        If Not Intersect(Cells(i, 2), Columns(2).SpecialCells(xlCellTypeVisible)) Is Nothing Then cpt1 = cpt1 + 1
    Next i
    Randomize
    x = Int(cpt1 * Rnd()) + 1
    i = 2
    cpt2 = 0
    Do While cpt2 <> x
        If Not Intersect(Cells(i, 2), Columns(2).SpecialCells(xlCellTypeVisible)) Is Nothing Then cpt2 = cpt2 + 1
        i = i + 1
    Loop
    v = Cells(i - 1, 1)
    Load UserForm1
    UserForm1.Show
End Sub


Dans Userform1 contenant textbox1:
VB:
Option Explicit

Private Sub UserForm_Initialize()
    TextBox1.Value = v
End Sub

Cordialement

KD

ps: pourrait etre assez long si la liste est très longue.
 

Pièces jointes

Re : Selection aléatoire de cellule visible

Bonjour à tous,

une autre approche, si j'ai bien compris, suppose que la ligne 1 comporte des titres de colonnes...
Code:
Option Explicit
Sub test()
Dim p As Range
Randomize
Set p = Range("A2", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
MsgBox p(Int(p.Count * Rnd) + 1).Value
End Sub

bonne journée
@+
 
Re : Selection aléatoire de cellule visible

Re,

Bon, avec une ligne supplémentaire ....
Code:
Option Explicit
Sub test()
Dim p As Range, x As Integer
Randomize
Set p = Range("A2", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
x = Int(p.Areas.Count * Rnd) + 1
MsgBox p.Areas(x).Item(Int(p.Areas(x).Count * Rnd) + 1)
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

M
Réponses
1
Affichages
1 K
C
Réponses
4
Affichages
2 K
C
P
  • Question Question
Réponses
1
Affichages
3 K
Patrosso
P
F
Réponses
10
Affichages
1 K
F
V
Réponses
2
Affichages
2 K
vynmarius
V
M
Réponses
14
Affichages
2 K
S
  • Question Question
Réponses
2
Affichages
2 K
sardaucar
S
N
Réponses
22
Affichages
4 K
N
Retour