IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème de macro aléatoire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Retraité actif
    Inscrit en
    Octobre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité actif
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Par défaut Problème de macro aléatoire
    Bonjour à tous,
    Je me suis inscrit aujourd’hui pour essayer de m’améliorer sur Excel et les macros.
    Je me considère comme un débutant bien que j’utilise beaucoup Excel et Word pour mes activités annexes (Sport, Enseignement, Association, Soutien Scolaire,). En fait, je suis autodidacte avec toutes les mauvaises habitudes que cela implique.
    Je suis sur un Excel intégré à un office pro plus 2019 ; je réalise des classeurs et, quand vient la nécessité d’une macro, les problèmes arrivent très vite surtout quand je veux en modifier le code.
    Voici mon premier problème :
    Je réalise un Excel permettant de créer 40 équipes de deux pour un tournois de pétanque.
    J’ai donc en colonne B, une liste de 80 noms que je saisis puis, en colonne A, 1 à 80.
    J’ai utilisé une macro aléatoire et je l’ai adaptée pour 80 participants et pour positionner de façon aléatoire les numéros en face de chaque nom.
    Avec un RECHERCHEV, je constitue mes équipes de deux ; pour le déroulement du tournoi et le classement à l’issue, j’ai réussi à me débrouiller.
    La macro utilisée est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
    Sub Aleatoire()
    Dim plage As Range, cel As Range, alea As Double
    Set plage = Range("A1:A80")
    plage.Value = ""
    If plage.Count > 80 Then Exit Sub
    Randomize
    For Each cel In plage
    1     alea = WorksheetFunction.RandBetween(1, 80)
    If Application.CountIf(plage, alea) Then GoTo 1 Else cel = alea
    Next
    End Sub
    Le Problème:
    Si je n’ai que 40 participants, il est fastidieux de rentrer à chaque fois dans la macro pour changer les données de plage.
    Ma question :
    Comment puis-je faire pour modifier la macro à partir de ma feuille Excel si je rentre un nombre donné de participants ?
    Je vous remercie de m’accueillir dans le Forum et, d’avance, un grand merci pour votre aide.
    Gegepel

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,
    Comment puis-je faire pour modifier la macro à partir de ma feuille Excel si je rentre un nombre donné de participants ?
    En détectant la dernière ligne occupé par les noms en colonne B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
    Sub Aleatoire()
        Dim plage As Range, cel As Range, alea As Double
        Dim DerLig As Long
        DerLig = Range("B" & Rows.Count).End(xlUp).Row
        Set plage = Range("A1:A" & DerLig)
        plage.Value = ""
        Randomize
        For Each cel In plage
    1:
            alea = WorksheetFunction.RandBetween(1, 80)
            If Application.CountIf(plage, alea) Then GoTo 1 Else cel = alea
        Next
    End Sub
    Cdlt

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Retraité actif
    Inscrit en
    Octobre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité actif
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Par défaut Comment puis-je faire pour modifier la macro à partir de ma feuille Excel si je rentre un nombre donné de par
    Bonjour,

    Un Grand Merci pour l'aide que tu m'apportes.

    La macro fonctionne : les 40 participants sont sélectionnés. je n'aurais pas trouvé la solution tout seul car je maîtrise peu le code.

    Pour la constitution des équipes de deux, les 40 participants se répartissent de façon anarchique dans les 40 équipes disponibles au lieu des 20 premières.

    je pense pouvoir résoudre ça moi-même !!??

    Merci encore ; c'est super d'avoir quelqu'un qui prend de son temps pour vous aider.

    A +, Peut-être

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Retraité actif
    Inscrit en
    Octobre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité actif
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Par défaut Comment puis-je faire pour modifier la macro à partir de ma feuille Excel si je rentre un nombre donné de par
    Bonjour,

    Une petite chose :

    J'ai placé la variable Derlig dans la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            alea = WorksheetFunction.RandBetween(1, Derlig)
    car, lors du tirage au sort, la macro allait me chercher des numéros compris entre 41 et 80 ; cela expliquait la répartition anarchique sur les 40 équipes disponibles

    Maintenant, cela fonctionne parfaitement : les 40 participants se répartissent sur les 20 premières équipes.

    C'est parfait ! merci, pour m'avoir aiguillé.

    CRDT

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/06/2006, 13h52
  2. [VBA] Excel + macro + aléatoire
    Par spopo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/01/2006, 15h42
  3. Réponses: 5
    Dernier message: 11/04/2005, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo