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 :

Faire un double tirage de poules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut Faire un double tirage de poules
    bonjour le forum,

    Voici un code qui me permet de faire un tirage aléatoire de poules qui l'envoie sur la Feuile Série de mon fichier en B7:R13 et ma question est : set-il possible de faire en même temps un autre tirage aléatoire à partir de cette macro qui se place par contre en B17:R23.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub testSMF1()
    Dim deja(200) As Boolean
    Dim tablo(200)
    Randomize       'utilise l'heure system pour Rnd
    nb = Feuil4.[A6].End(xlDown).Row - 6 'nombre joueurs
    For k = 1 To nb 'création tablo de 1 à nb aléatoire
      Do
        n = Int((nb * Rnd) + 1)
        If deja(n) = False Then
         deja(n) = True
         tablo(k) = n
         Exit Do
        End If
      Loop
    Next
    Sheets("Série").Range("B7:R13").ClearContents
    If Range("Q5") <> "" Then
      nombredepoules = Range("Q5")
    Else
      MsgBox ("Donnez le nombre de poules")
      Exit Sub
    End If
    ligne = 7
    col = 2
    pas = 3
    For n = 7 To Range("A65536").End(xlUp).Row
      Sheets("Série").Cells(ligne, col) = Range("A" & tablo(n - 6) + 6)
      col = col + pas
      If col = 2 + 3 * nombredepoules Or col = -1 Then
        ligne = ligne + 1
        col = col - pas
        pas = -pas
      End If
    Next n
    Sheets("Série").Select
    Application.Calculation = xlCalculationAutomatic
    End SubVoici ma question
    merci d'avance
    jacky

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Public Sub testSMF1(ByVal s as byte)  's=0 pour B7:R13 et s=1 pour B17:R23
    Dim deja(200) As Boolean
    Dim tablo(200)
    Randomize       'utilise l'heure system pour Rnd
    nb = Feuil4.[A6].End(xlDown).Row - 6 'nombre joueurs
    For k = 1 To nb 'création tablo de 1 à nb aléatoire
      Do
        n = Int((nb * Rnd) + 1)
        If deja(n) = False Then
         deja(n) = True
         tablo(k) = n
         Exit Do
        End If
      Loop
    Next
    Sheets("Série").Range("B7:R13").ClearContents
    If Range("Q5") <> "" Then
      nombredepoules = Range("Q5")
    Else
      MsgBox ("Donnez le nombre de poules")
      Exit Sub
    End If
    ligne = 7 + 10*s          '>----------ICI CHANGEMENT
    col = 2
    pas = 3
    For n = 7 To Range("A65536").End(xlUp).Row
      Sheets("Série").Cells(ligne, col) = Range("A" & tablo(n - 6) + 6)
      col = col + pas
      If col = 2 + 3 * nombredepoules Or col = -1 Then
        ligne = ligne + 1
        col = col - pas
        pas = -pas
      End If
    Next n
    Sheets("Série").Select
    Application.Calculation = xlCalculationAutomatic
    End Sub
    Pour la première plage tu appelle la procédure: pour la seconde: J'ai pas pu voir à l'intérieur

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    bonsoir,
    je m'explique, j'ai un double tirage mais la par contre ce sont pour les séries mais aléatoirement car actuellement, je fais 2 tirages séparé mais j'aimerais avoir la possibilité avec le même bouton d'activer les 2 codes ou les rassembler mais ceci est peut etre impossible.
    mais impossible n'existe pas sur ce forum, je crois en tous cas , j'ai toujours vu des solutions au post surtout avec celui qui vient d'être résolu grace à jfontaine et surtout mercatog
    D'ailleurs, il faut que j'aille mettre résolu dessus .
    merci
    jacky

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    tu mets le code que j'ai peu modifié dans un module public

    sur ton bouton, tu mets cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub TonBouton_OnClick()
    testSMF1 0
    testSMF1 1
    End Sub

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Par contre, maintenant la procédure dans un module public, il faut donner à chaque Range la feuille où il est placé
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Série").Cells(ligne, col) = Range("A" & tablo(n - 6) + 6)
    de quelle feuille ce Range
    il faut mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Série").Cells(ligne, col) = Sheets("XXXX").Range("A" & tablo(n - 6) + 6)
    "XXXX" le nom de la feuille en question

    La première procédure dans un module public

    à ton bouton, tu applique sur évènement OnClick les 2 lignes

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    re,

    la j'ai un problème car j'ai copié tes 2 codes dans des modules différents comme tu m'as dit(si j'ai bien compris) mais je n'arrive pas à affecter une macro au bouton.
    jacky

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    re,
    si j'ai bien compris, je mets ces codes dans les feuilles concernés??
    merci
    jacky

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Non Non:
    tu mets cela dans un module public
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Public Sub testSMF1(ByVal s as byte)  's=0 pour B7:R13 et s=1 pour B17:R23
    Dim deja(200) As Boolean
    Dim tablo(200)
    Randomize       'utilise l'heure system pour Rnd
    nb = Feuil4.[A6].End(xlDown).Row - 6 'nombre joueurs
    For k = 1 To nb 'création tablo de 1 à nb aléatoire
      Do
        n = Int((nb * Rnd) + 1)
        If deja(n) = False Then
         deja(n) = True
         tablo(k) = n
         Exit Do
        End If
      Loop
    Next
    Sheets("Série").Range("B7:R13").ClearContents
    If Range("Q5") <> "" Then
      nombredepoules = Range("Q5")
    Else
      MsgBox ("Donnez le nombre de poules")
      Exit Sub
    End If
    ligne = 7 + 10*s          '>----------ICI CHANGEMENT
    col = 2
    pas = 3
    For n = 7 To Range("A65536").End(xlUp).Row
      Sheets("Série").Cells(ligne, col) = Range("A" & tablo(n - 6) + 6)
      col = col + pas
      If col = 2 + 3 * nombredepoules Or col = -1 Then
        ligne = ligne + 1
        col = col - pas
        pas = -pas
      End If
    Next n
    Sheets("Série").Select
    Application.Calculation = xlCalculationAutomatic
    End Sub
    Tu dois le corriger en affectant à chaque Range, la feuille: comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("LaFeuilleDuRange").Range(X)
    (facultatif je pense)

    ensuite,
    sur ta feuille tu crée un bouton de commande issu de la boite à outils Contrôles.
    Tu clique droit puis visualiser le code
    tu auras:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub NomDeTonBouton_Click()
    Tu écris cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub NomDeTonBouton_Click()
       testSMF1 0
        testSMF1 1
    End Sub

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    re,

    Qu'appelle tu un module public, moi j'ai inséré un module et mis le code dedans.
    merci
    jacky

  10. #10
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    C'est ça un module public.

    c'est à dire disponible de n'importe quel endroit de ton classeur.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    re,
    la feuille du Range, c'est la feuille ou vont se ranger les poules ou bien la feuille ou l'on prends les données.
    merci
    jacky

    re,
    parce que la, je viens de mettre le code pour le bouton que j'ai appelé SérieSMF mais rien ne se passe .
    Je n'ai pas l'air très duoé et moi qui pensais me débrouiller, je vois tout le travail qui me reste à faire . Ouille ouille;
    merci
    jacky

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire une double INSERTION ?
    Par c-bolo dans le forum Persistance des données
    Réponses: 1
    Dernier message: 04/12/2009, 15h52
  2. tirage par poules
    Par jacfld49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/03/2009, 20h39
  3. faire un double select
    Par rastacouaire dans le forum Débuter
    Réponses: 14
    Dernier message: 09/02/2009, 16h47
  4. [C#] Comment faire un double panel
    Par joujoukinder dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/07/2006, 07h11

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