tirage aléatoire

Crespo

XLDnaute Nouveau
Bonjour,

Je souhaiterais effectuer un tirage sans double avec des critères.

Ci-joint le fichier avec un exemple.

La colonne A peut être "flexible" avec moins ou plus d'éléments

Merci pour votre aide
 

Pièces jointes

  • Test tirage crespo.xlsx
    10.5 KB · Affichages: 9

job75

XLDnaute Barbatruc
Bonjour Crespo, le forum,
Il faut d'abbord qu'il y'ai tous les A dans chaque poule puis tous les B et enfin les C (onglet liste equipe avec le random)
Alors voyez le fichier joint et cette macro dans le code de la feuille "TIRAGE" :
VB:
Private Sub Worksheet_Activate()
Dim tablo, e, n&, source$(), ub&, c As Range, P As Range, i%
tablo = Sheets("Feuil1").[C1].CurrentRegion.Offset(1)
For Each e In tablo 'balayage d'abord par colonne puis par ligne
    If e <> "" Then
        n = n + 1
        ReDim Preserve source(1 To n)
        source(n) = e
    End If
Next e
ub = n
n = 0
Application.ScreenUpdating = False
For Each c In UsedRange
    If c = "N° Equipe" Then
        c(2).Resize(4, 2) = "" 'RAZ sur 2 colonnes
        Set P = Union(IIf(P Is Nothing, c(2), P), c(2))
    End If
Next c
For i = 1 To 4
    For Each c In P
        n = n + 1
        If n > ub Then Exit Sub
        c(i) = source(n)
Next c, i
End Sub
Elle se déclenche quand on active la feuille.

A+
 

Pièces jointes

  • Tirages VBA 2 full.xlsm
    132.8 KB · Affichages: 10

Crespo

XLDnaute Nouveau
Bonsoir,

voici mon fichier "final", ma macro ne marche plus , que pensez vous des formules et design de l'ensemble des onglets ?

je trouve pas ca très sympa visuellement.

Merci
 

Pièces jointes

  • Tirages VBA 1 full MC.xlsm
    163.9 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour Crespo, le forum,

1) Vous n'avez pas daigné dire ce que vous pensez du fichier du post #32.

2) Sur votre feuille "RANDOM EQUIPES" la macro du bouton "Tirages" ne fonctionne pas parce que vous avez mis un renvoi à la ligne à la fin de chaque cellule C1 D1 E1, il suffit de l'enlever.

3) Dans la feuille "TIRAGE 1ER TOUR" vos formules n'ont pas de sens.

A+
 

Crespo

XLDnaute Nouveau
Bonjour,

j'ai une demande complémentaire a effectuer le sur le fichier

onglet random equipes :
changer le A par RDM
change le B par FR
supprimer le C

onglet tirage 1er tour :
il faut placer les équipes qui commence par RDM sur la ligne 1 et 3 puis les équipes FR qui complète les tableaux (afin que chaque équipe RDM rencontre une FR)

Merci
 

Pièces jointes

  • Tirages V19042023.xlsm
    156.7 KB · Affichages: 1

job75

XLDnaute Barbatruc
Bonjour Crespo,

Voyez le fichier joint et les macros adaptées, celle de la feuille TIRAGE 1ER TOUR :
VB:
Private Sub Worksheet_Activate()
Dim tablo, n&, c As Range
tablo = Sheets("RANDOM EQUIPES").[C1].CurrentRegion.Resize(, 2)
Application.ScreenUpdating = False
On Error Resume Next
For Each c In UsedRange
    If c = "N° Equipe" Then
        c(2).Resize(4, 2) = "" 'RAZ sur 2 colonnes
        n = n + 2
        c(2) = tablo(n, 1)
        c(3) = tablo(n, 2)
        c(4) = tablo(n + 1, 1)
        c(5) = tablo(n + 1, 2)
    End If
Next c
End Sub
A+
 

Pièces jointes

  • Tirages V19042023.xlsm
    158.5 KB · Affichages: 2

Crespo

XLDnaute Nouveau
Bonjour Crespo,

Voyez le fichier joint et les macros adaptées, celle de la feuille TIRAGE 1ER TOUR :
VB:
Private Sub Worksheet_Activate()
Dim tablo, n&, c As Range
tablo = Sheets("RANDOM EQUIPES").[C1].CurrentRegion.Resize(, 2)
Application.ScreenUpdating = False
On Error Resume Next
For Each c In UsedRange
    If c = "N° Equipe" Then
        c(2).Resize(4, 2) = "" 'RAZ sur 2 colonnes
        n = n + 2
        c(2) = tablo(n, 1)
        c(3) = tablo(n, 2)
        c(4) = tablo(n + 1, 1)
        c(5) = tablo(n + 1, 2)
    End If
Next c
End Sub
A+
merci, juste une remaque, il faudrait que tu fasses des poules complets par les FR si on a plus d'equipes RDM

1682688465806.png
 

job75

XLDnaute Barbatruc
Bon je reprends le principe de la macro du post #32, voyez si ça vous convient :
VB:
Private Sub Worksheet_Activate()
Dim tablo, e, n&, source$(), ub&, c As Range, P As Range
tablo = Sheets("RANDOM EQUIPES").[C1].CurrentRegion.Offset(1)
For Each e In tablo 'balayage d'abord par colonne puis par ligne
    If e <> "" Then
        n = n + 1
        ReDim Preserve source(1 To n)
        source(n) = e
    End If
Next e
ub = n
n = 0
Application.ScreenUpdating = False
For Each c In UsedRange
    If c = "N° Equipe" Then
        c(2).Resize(4, 2) = "" 'RAZ sur 2 colonnes
        Set P = Union(IIf(P Is Nothing, c(2), P), c(2))
    End If
Next c
For Each e In Array(1, 3, 2, 4) 'ordre des lignes
    For Each c In P
        n = n + 1
        If n > ub Then Exit Sub
        c(e) = source(n)
Next c, e
End Sub
 

Pièces jointes

  • Tirages V19042023(1).xlsm
    159.6 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 322
Membres
111 102
dernier inscrit
driss touzi