affectation aléatoire

  • Initiateur de la discussion Initiateur de la discussion Karine971
  • 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 !

K

Karine971

Guest
Bonjour,

un petit probleme a résoudre :

50 bateaux, 50 barreurs 6 jours de régates, comment faire sous excel pour generer un tableau qui va affecter de façon aléatoire un bateau par barreur et par jour.

Par avance merci de votre aide

Karine971
 
Re : affectation aléatoire

Bonjour Karine et bienvenue

voici un fichier (un essai): tu peux ajouter ou sipprimer des bateaux, des jours

Attention, toutes les cellules ont un format d'affichage personalisé
Menu format / cellule
 

Pièces jointes

Re : affectation aléatoire

Bonjour Wilfried

Merci ca fonctionne super bien.

J'aurais bien aimé comprendre ta macro un peu plus car mon but c'est aussi d'apprendre et de pouvoir réapliquer.

Si tu as un peu de temps te serait il possible de me donner qq expliquations.

Merci et merci d'avance

Karine du 971
 
Re : affectation aléatoire

re:

voici la macro expliquée :

Code:
Sub lance()
    Dim i As Integer, j As Integer, ctr As Integer, total As Integer
    Dim nl As Integer, alea As Integer, joueur As Integer, drapeau As Boolean
' Remise à zero des lignes et colonnes
    Range("B2:IV65536").ClearContents
'----------------------------------------------------------------------------
' La macro est faite, pour definir un nombre de bateaux inconnu :           !
' C'est la colonne A qui donne le nombre de bateaux                         !
' Pareil pour les jour, ce qui veut dire que tu peux ajouter des journées   !
' en ajoutant des titres en ligne 1 et des bateaux en ajoutant des titres en!
' colonne A                                                                 !
'----------------------------------------------------------------------------

' Une boucle sur les titre de colonne (ligne 1) ---> jours
' j=1 à nombre total de colonne -1 (la colonne A n'est pas une journée
    For j = 1 To Range("IV1").End(xlToLeft).Column - 1
' Total est un compteur qui va compter le nombre de barreurs pour une journée
' il est remis à zero avant chaque journée
        total = 0
' Recuperation du nombre de bateaux engagés (-1 : la ligne 1 n'est pas un bateau)
        nl = Range("A65536").End(xlUp).Row - 1
' Tant que le nmbre de bateaux et <> du nombre de barreurs
        While total <> nl
' tirage aleatoire d'un bateau :
' rnd(time) donne un nombre aleatoire entre 0 et 0,999999999999999999
' on multiplie par nl (nombre de bateaux) et on ne recupere la partie entiere avec int
' ensuite on ajoute 1, sinon 0 et pas de nl (on veut entre 1 et nl)
            alea = Int(Rnd(Time) * nl) + 1
' if la cellule est vide je peux traiter le bateau
            If Cells(alea + 1, j + 1) = 0 Then
' incrementer 1 à total
                total = total + 1
' mettre un drapeau à faux : le tirage aleatoire du barreur peux selon le resultat donner
' plusieur fois le meme barreur donc on va controler si le barreur est deja en piste et
' s'il n'y est pas on va passer le drapeau à true pour le selectionner
                drapeau = False
' quand que le barreurs est present dans la liste
                While drapeau = False
' tirage aleatoire du barreur (meme principe que pour le bateau)
                    joueur = Int(Rnd(Time) * nl) + 1
' on controle sur toute la colonne si le barreur y est
                    For ctr = 1 To nl
' si je barreur est trouvé je sors de la boucle
                        If Cells(ctr + 1, j + 1) = joueur Then Exit For
' prochaine ligne
                    Next ctr
' si la la sortie de la boucle n'est pas prematurée (Exit For), ctr sera plus grand que nl
' donc le barreur n'a pas ete trouvé, on peut donc le traiter en remettant de drapeau à true
                    If ctr > nl Then drapeau = True
                Wend
' mise en place du barreur en face du bateau selon la journée
                Cells(alea + 1, j + 1) = joueur
            End If
' prochain barreur
        Wend
' prochaine journée
    Next j
End Sub

bonne soirée
 
Re : affectation aléatoire

Salut Wilfried,

C'est très sympa d'expliquer tes macros, contrairement à certain, qui font les macros et qui vérouillent
Par contre, j'ai esayé de trouver le mot Barreur dans ta macro et je n'ai pas vu

Bonjour de Perpignan
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Réponses
5
Affichages
623
Retour