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 :

Tirage au sort de plusieurs valeurs issues d'une liste [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2019
    Messages : 50
    Par défaut Tirage au sort de plusieurs valeurs issues d'une liste
    Bonjour à Tous,
    Après une recherche sur Internet, j'ai repris ce code (Cf fichier joint)
    Mais j'ai un petit souci sur mon code pour effectuer un tirage au sort de 10 valeurs à afficher dans la colonne D sur une liste de 26 valeurs en colonne B
    Problème je me retrouve avec une erreur 9 - l'indice n'appartient pas à la sélection
    Blocage sur la ligne de code : TS(1) = TV(LI,2)
    Je pense que l'erreur se situe au niveau de la déclaration des variables mais je ne trouve pas.
    Je mets en pièce jointe le fichier
    Merci à vous pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Remplace donc tous tes TV(LI, 2) par TV(LI, 1)...

  3. #3
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2019
    Messages : 50
    Par défaut
    Bonjour,
    Merci pour ta réponse.
    Pas sûr de saisir. J'ai effectué le remplacement. Mais je n'ai plus qu'un seul tirage et non les 10 désirés. ??

  4. #4
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Il y a 4 remplacements à faire.

    Voici :
    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
    Private Sub CommandButton1_Click()
    Dim O As Worksheet                  'déclare la variable O          (Onglet)
    Dim TV As Variant                   'décalre la variable TV         (Tableau des Valeurs)
    Dim LI As Byte                      'déclare la variable LI         (LIgne)
    Dim TS(1 To 10) As Variant          'déclare le tableau de 10 TS    (Tirage au Sort)
     
    Set O = Worksheets("Data")          'définit l'onglet O
    'tirage de départ
    TV = O.Range("B1").CurrentRegion    'définit le tableau des valeurs TV
    Randomize                           'lance le générateur de nombre aléatoire
    LI = Int((26 * Rnd) + 1)            'définit la ligne LI
    TS(1) = TV(LI, 1)                   'définit le 1er tirage au sort
    TV(LI, 1) = ""                      'vide la donnée ligne I colonne 2 de TV
    For I = 2 To 10                     'boucle sur les 9 autres tirages au sort
        LI = Int((26 * Rnd) + 1)        'définit la ligne LI
        Do Until TV(LI, 1) <> ""        'exécute en boucle jusqu'à ce que la donnée ligne LI colonne 2 de TV ne soit pas vide
            LI = Int((26 * Rnd) + 1)    'définit la ligne LI
        Loop                            'boucle
        TS(I) = O.Cells(LI, 2)          'définit le Ième tirage au sort
        TV(LI, 1) = ""                  'vide la donnée ligne LI colonne 2 de TV
    Next I                              'prochain tirage au sort de la boucle
    O.Range("D1").Resize(10, 1) = Application.Transpose(TS)    'renvoie dans D1 redimensionnée le tableau TS transposé
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2019
    Messages : 50
    Par défaut
    Ok cela fonctionne. J'avais fait un changement de trop
    Si j'ai bien compris, le 1 pour la colonne 1 du tableau "virtuel" (TV) et le 2 pour la colonne du tableau des tirages issus de la colonne B de la feuille

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par TchiotPols Voir le message
    Si je comprends bien, il faudrait que ma liste soit toujours en colonne A pour que ça fonctionne ?
    Tu comprends mal.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TV = O.Range("B1").CurrentRegion
    Indique que ta liste est en colonne B. Qui plus est, sans aucune valeurs, ni en colonne A, ni en colonne C...

  7. #7
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2019
    Messages : 50
    Par défaut
    Merci Pijaku
    Cela fonctionne bien et je comprends mieux.
    Bonnes fêtes de fin d'année à toi et une meilleur année 2021

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

Discussions similaires

  1. Quelle fonction pour faire un tirage au sort de noms
    Par Sofie109 dans le forum VBA Access
    Réponses: 6
    Dernier message: 01/06/2007, 14h52
  2. Tirage au sort
    Par Titeuf82 dans le forum Ada
    Réponses: 5
    Dernier message: 17/04/2007, 11h05
  3. Tirage au sort d'un mot
    Par Dav-D dans le forum C
    Réponses: 39
    Dernier message: 04/01/2007, 17h04
  4. [VBA-E] Tirage au sort avec probabilité
    Par clarisse dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/05/2006, 11h01
  5. Tirage au sort
    Par clampin dans le forum Langage
    Réponses: 2
    Dernier message: 19/12/2005, 16h38

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