XL 2019 Classement list aléatoire -USF

gg13

XLDnaute Occasionnel
Bonsoir,
Je reprends cette discussion suivant les conseil de Job 75 en précisant que je cherche à intégrer cette macro dans un USF.
Sur le fichier joint crée par Job 75 la macro de classement est lancée par un bouton sur la feuille lié à une cellule
Je voudrai que cette macro soit en fait déclenchée par un bouton sur un USF et pas par un bouton sur la feuille.
J'ai utilisé la,méthode enregistrement de macro pour voir comment l'écrire mais le classement est déclenché sans enregistrer quoi que ce soit donc je ne sais pas lancer la macro par USF sans utiliser les boutons sur la feuille1

Le but de la macro est de faire un classement de trois listes différentes avec chacune un nombre de lignes différent récuperé dans trois cellules.
J'ai ajouté un USF au fichier fourni par Job75.
Merci.
GG13
 

Pièces jointes

  • xld - Classement Liste aléatoire.xlsm
    19.1 KB · Affichages: 3

job75

XLDnaute Barbatruc
Je n'avais pas vraiment compris a quoi devaient servir les nombres en C1 F1 I1.

Et maintenant vous ne voulez plus d'UserForm.

Donc voyez le fichier joint et cette macro :
VB:
Sub Tirages()
Dim Target As Range, nlig&, tablo
Application.ScreenUpdating = False
For Each Target In [B1,E1,H1]
    nlig = Int(Val(Target(1, 2)))
    With Range(Target(2, 0), Cells(Rows.Count, Target.Column - 1).End(xlUp))
        If .Row > Target.Row Then
            .Columns(2).ClearContents 'RAZ
            If nlig > 0 Then
                tablo = .Value 'mémorise
                .Formula = "=RAND()"
                .Columns(2) = tablo
                .Resize(, 2).Sort .Cells, Header:=xlNo 'tri
                .Value = tablo 'restitution
                tablo = .Columns(2).Resize(nlig) 'mémorise
                .Columns(2).ClearContents 'RAZ
                .Columns(2).Resize(nlig) = tablo 'restitution
            End If
        End If
    End With
Next
End Sub
 

Pièces jointes

  • xld - Classement Liste aléatoire(3).xlsm
    39.1 KB · Affichages: 9

gg13

XLDnaute Occasionnel
Re bonsoir à tous.
La dernière version de Job75 renvoie bien le nombre de noms voulu (12) mais pas les 12 noms à classer car elle renvoie aussi des cellules vides.

exemple avec tirage 2 pour 12 noms.
Les noms sous tirage 2 doivent être les mêmes que les 12 noms de gauche mais dans un ordre aléatoire.
( donc tous ceux > B12 ne doivent pas apparaitre) dans cet exemple aucun nom voulu apparait.
GG13
NomsTirage 2
b1b547
b2b574
b3b457
b4b386
b5b145
b6b97
b7b162
b8b230
b9b71
b10b438
b11b370
b12b69
b13
b14
 

gg13

XLDnaute Occasionnel
Dranreb,
Pour le post #5 même résultat que Job75.
Les noms classés aléatoirement ne sont pas ceux voulus.
Voici le résultat pour 8 noms, le premier est A60>A8

NomsTirage 18
a1a60
a2a165
a3a194
a4a142
a5a71
a6a460
a7a396
a8a466
a9
a10
a11
a12
a13
a14
 

job75

XLDnaute Barbatruc
Bon si je comprends bien c'est très simple :
VB:
Sub Tirages()
Dim Target As Range, nlig&, tablo
Application.ScreenUpdating = False
For Each Target In [B1,E1,H1]
    Target(2).Resize(Rows.Count - Target.Row).ClearContents 'RAZ
    nlig = Int(Val(Target(1, 2)))
    If nlig > 1 Then
        With Target(2, 0).Resize(nlig)
            tablo = .Value 'mémorise
            .Formula = "=RAND()"
            .Columns(2) = tablo
            .Resize(, 2).Sort .Cells, Header:=xlNo 'tri
            .Value = tablo 'restitution
        End With
    End If
Next
End Sub
 

Pièces jointes

  • xld - Classement Liste aléatoire(4).xlsm
    38.9 KB · Affichages: 1
Dernière édition:

Dranreb

XLDnaute Barbatruc
Non, ça c'est le résultat non du #5 mais du #9 où j'avais cru que vous ne vouliez tirer qu'un certain nombres de noms, vu que s'il fallait les sortir tous il n'y avait nul besoin de préciser combien on en voulait.
 
Dernière édition:

gg13

XLDnaute Occasionnel
job75
Macro super courte et efficace, le résultat est celui attendu.
Je vais voir si je trouve sur internet des sites de cours qui expliquent ces fonctions.
Merci encore à ceux qui m'ont aidé.
Je vais pouvoir continuer mon prog mais j'aurai certainement encore besoin de votre aide.
bonne soirée.
GG13
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 312
Membres
102 860
dernier inscrit
fredo67