Récupérer des entrées dans une liste pour créer des équipes de 3

Fermé
Lili - 3 janv. 2015 à 00:39
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 - 6 janv. 2015 à 13:32
Bonjour,

Je voudrais récupérer 3 noms parmi une liste de 50 noms ( créée sous Excel ) pour les afficher dans un autre tableau Excel sans qu'il n'y ait redondance.
Ceci afin de créer des équipes de 3 personnes sans qu'elles n'apparaissent plusieurs fois.
Pouvez vous m'aider ?

Lili


A voir également:

4 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
3 janv. 2015 à 01:12
Bonsoir Lili, bonsoir le forum,

Pas vraiment compris... On pourrait couper aléatoirement trois nom de l'onglet Feuil1 et les coller dans l'onglet Feuil2. Puis recommencer, couper 3 noms aléatoirement de Feuil1 et les coller dans l'onglet Feuil3, etc.

C'est ça que tu voudrais ?
0
Lili31h Messages postés 4 Date d'inscription samedi 3 janvier 2015 Statut Membre Dernière intervention 6 janvier 2015
3 janv. 2015 à 15:45
Exactement et sans doublon !
0
Lili31h Messages postés 4 Date d'inscription samedi 3 janvier 2015 Statut Membre Dernière intervention 6 janvier 2015
3 janv. 2015 à 15:56
J'ai oublié de vous dire que j'essaie de le faire avec VBA (ça m'est imposé).
Merci
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 3/01/2015 à 10:53
Bonjour à tous

Un essai (sans VBA)
https://www.cjoint.com/?3Adla1VJ0nj

Cdlmnt
0
Lili31h Messages postés 4 Date d'inscription samedi 3 janvier 2015 Statut Membre Dernière intervention 6 janvier 2015
3 janv. 2015 à 15:57
C'est exactement ce que je veux mais il m'est imposé de le faire avec VBA.
Et donc c'est beaucoup plus compliqué pour moi...
Merci pour ta réponse
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
3 janv. 2015 à 18:18
C'est un peu le même principe, un exemple

https://www.cjoint.com/?3AdszDmeevX

RQ. donner la taille des équipes en D1

Cdlmnt
0
Lili31h Messages postés 4 Date d'inscription samedi 3 janvier 2015 Statut Membre Dernière intervention 6 janvier 2015
6 janv. 2015 à 01:37
Merci à toi. Tu me sors une épine du pied.
Cordialement
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
6 janv. 2015 à 13:32
De rien,

Peux tu mettre le sujet à Résolu (en haut à droite de ton premier message)

Bon après midi
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
3 janv. 2015 à 22:18
Bonsoir le fil, bonsoir le forum,

Lili, en pièce jointe une autre proposition avec le code commenté ci-dessous :

Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim OS As Object 'déclare la variable OS (Onglet Source)
Dim NL As Byte 'déclare la variable NL (Nombre de Lignes)
Dim LI As Byte 'déclare la variable LI (LIgne)
Dim NE As Byte 'déclare la variable NE (Numéro de l'Équipe)
Dim NB As Byte 'déclare la variable NB (NomBre de joueurs)
Dim OD As Object 'déclare la variable OD (Onglet Destination)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran

'****************************
'efface les anciennes équipes
'****************************

Application.DisplayAlerts = False 'masque les messages d'Excel
For Each O In Sheets 'boucle sur tous les onglets du classeur
    If Not O.Name = "Feuil1" Then O.Delete 'si le nom du classeur est différent de "Feuil1", efface l'onglet
Next O 'prochain onglets de la liste
Application.DisplayAlerts = True 'affiche les messages d'Excel

'********************
'création des équipes
'********************

Set OS = Sheets("Feuil1") 'définit l'onglet OS
NE = 1 'initialise le numéro d'équipe NE
NL = OS.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit le nombre de lignes éditées NL dans la colonne 1 (=A) de l'onglet OS
Do Until NL < 4 'éxécute jusqu'à ce que NL soit inférieur à 4
    If NB = 0 Then 'condition : si le nombre NB est égal à zéro
        Sheets.Add after:=Sheets(Sheets.Count) 'ajoute un onglet en dernière position
        ActiveSheet.Name = "Équipe " & NE 'renomme l'onglet avec le numéro de l'équipe NE
        Set OD = ActiveSheet 'définit l'onglet OD
    End If 'fin de la condition
    Randomize 'lance le générateur de nombre aléatoires
    LI = Int((NL - 1) * Rnd + 2) 'génère une nombre aléatoire LI entre 2 et DL
    'copie la cellule ligne LI, colonne 1 (=A) de l'onglet OS dans la cellule ligne NB+1, colonne 1 (=A) de l'onglet OD
    OS.Cells(LI, 1).Copy OD.Cells(NB + 1, 1)
    OS.Cells(LI, 1).Delete xlShiftUp 'supprime la cellule copiée en décalant vers le haut
    'incrémente le nombre NB, mais quand NB vaut trois alors, NB vaut zéro et NE vaut NE+1
    NB = NB + 1: If NB = 3 Then NB = 0: NE = NE + 1
    NL = NL - 1 'décrémente le nombre de lignes NL
Loop 'boucle
OS.Select 'sélectionne l'onglet OS
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub


Le fichier :
https://www.cjoint.com/c/EAdwyVqgRuA
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
3 janv. 2015 à 23:26
Il y a une erreur dans le code à la ligne 29. Il faut la remplacer par :

Do Until NB = 0 And NL < 4 'éxécute jusqu'à ce que NB soit nul et NL soit inférieur à 4
0