Microsoft 365 Tirage au sort de 2 numéros sans doublon

  • Initiateur de la discussion Initiateur de la discussion Sissou71
  • Date de début Date de début

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 !

Sissou71

XLDnaute Occasionnel
Bonjour,
Pour un regroupement de communes, ayant des listes papiers d'inscrits, je cherche à leur créer un fichier Excel qui génèrerait une commune puis une page et sur cette page 2 numéros de lignes.De fait j'ai un Excel avec toutes mes communes, un numéro affecter à chaque commune. et ensuite j'utilise la fonction aléatoire entre bornes mais évidement j'ai des doublons et je voudrais ne pas en avoir. J'ai vu plusieurs posts dans ce sens mais je n'ai pas réussi à m'en sortir avec.
Du coup si quelqu'un sait m'aider sur le fichier ci-joint
 

Pièces jointes

Solution
Bonsoir Sissou71,

Pour éviter un doublon en C6 vous pouvez utiliser cette fonction VBA :
VB:
Function AleaSansDoublon&(borne1&, borne2$, v&)
Do
    AleaSansDoublon = Application.RandBetween(borne1, borne2)
    If AleaSansDoublon <> v Then Exit Do
Loop
End Function
A+
Merci Job75, ca marche parfaitement
mais je ne la comprends pas du tout :
comment cette fonction trouve les bornes ?
Je ne vois pas comment sont définis borne1 et borne2 ? j'aurai pense que dans le code VBA on disait que borne1 = 1 et borne2 = recherchev()
Merci en tout cas
Bonsoir Sissou71,

Pour éviter un doublon en C6 vous pouvez utiliser cette fonction VBA :
VB:
Function AleaSansDoublon&(borne1&, borne2&, v&)
Do
    AleaSansDoublon = Application.RandBetween(borne1, borne2)
    If AleaSansDoublon <> v Then Exit Do
Loop
End Function
A+
 

Pièces jointes

Dernière édition:
Bonsoir Sissou71,

Pour éviter un doublon en C6 vous pouvez utiliser cette fonction VBA :
VB:
Function AleaSansDoublon&(borne1&, borne2$, v&)
Do
    AleaSansDoublon = Application.RandBetween(borne1, borne2)
    If AleaSansDoublon <> v Then Exit Do
Loop
End Function
A+
Merci Job75, ca marche parfaitement
mais je ne la comprends pas du tout :
comment cette fonction trouve les bornes ?
Je ne vois pas comment sont définis borne1 et borne2 ? j'aurai pense que dans le code VBA on disait que borne1 = 1 et borne2 = recherchev()
Merci en tout cas
 
Bonjour Sissou71,
Du coup je peux aussi intégrer le tirage de la commune dans le code VBA
Bien sûr avec une seule macro, plus besoin de formules :
Code:
Sub Tirage()
Dim r&, r1&
With [Tableau1] 'tableau structuré
    r = Application.RandBetween(1, .Rows.Count)
    [C2] = r
    [C3] = Application.VLookup(r, .Cells, 2, 0)
    [C4] = Application.RandBetween(1, Application.VLookup(r, .Cells, 4, 0))
    [C5] = Application.RandBetween(1, Application.VLookup(r, .Cells, 5, 0))
    Do
        r1 = Application.RandBetween(1, Application.VLookup(r, .Cells, 5, 0))
        If r1 <> Range("C5") Then [C6] = r1: Exit Do
    Loop
End With
End Sub
A+
 

Pièces jointes

Bonjour Sissou71,

Bien sûr avec une seule macro, plus besoin de formules :
Code:
Sub Tirage()
Dim r&, r1&
With [Tableau1] 'tableau structuré
    r = Application.RandBetween(1, .Rows.Count)
    [C2] = r
    [C3] = Application.VLookup(r, .Cells, 2, 0)
    [C4] = Application.RandBetween(1, Application.VLookup(r, .Cells, 4, 0))
    [C5] = Application.RandBetween(1, Application.VLookup(r, .Cells, 5, 0))
    Do
        r1 = Application.RandBetween(1, Application.VLookup(r, .Cells, 5, 0))
        If r1 <> Range("C5") Then [C6] = r1: Exit Do
    Loop
End With
End Sub
A+
Merci Job75 c'est super
 
- 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

Réponses
1
Affichages
2 K
Retour