Remplir un tableau de manière aléatoire à partir d'une liste

Résolu
sab -  
Pier-3d Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaite remplir un tableau de manière aléatoire à partir d'une liste de caractères.

J'ai une liste de 8 caractères et je souhaite obtenir un tableau de 10x15 caractères.

Pourriez-vous m'aider à construire une macro pour parvenir à cela ?

Merci à l'avance,

Sab

8 réponses

  1. via55 Messages postés 14396 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Re,

    Exemple 2 versions , l'une avec macro, l'autre par formules
    https://mon-partage.fr/f/DSwt5QeE/

    Cdlmnt
    Via
    2
    1. sab
       
      Merci beaucoup !!!

      Via cela marche ! Henri, je vais regarder !

      Merci à tous !!!!! ;-)
      0
  2. henri
     
    Bonjour sab,

    Pour ton 1er exercice :

    
    Option Explicit
    
    Sub Test()
      Dim Liste, i As Byte, j As Byte
      Liste = Array("a", "b", "c", "d", "e", "f", "g", "h")
      Application.ScreenUpdating = False: Randomize
      For i = 1 To 10
        For j = 1 To 15
          Cells(i, j) = Liste(Int(8 * Rnd))
        Next j
      Next i
    End Sub
    
    

    Pour ton 2ème exercice :

    
    Option Explicit
    
    Sub Test()
      Dim Liste1, Liste2, i As Byte, j As Byte
      Liste1 = Array("a", "b", "c", "d", "e", "f", "g", "h")
      Liste2 = Array("i", "j", "k", "l", "m", "n", "o", "p")
      Application.ScreenUpdating = False: Randomize
      For i = 1 To 10
        For j = 1 To 15
          If i Mod 2 = 1 Then
            Cells(i, j) = Liste1(Int(8 * Rnd))
          Else
            Cells(i, j) = Liste2(Int(8 * Rnd))
          End If
        Next j
      Next i
    End Sub
    
    

    Merci de me donner ton avis.

    Cordialement
     
    2
    1. sab
       
      Merci henri, test concluant !
      0
  3. via55 Messages postés 14396 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour sab

    Sois plus précise, je pense que tu veux parler d'une liste de 8 valeurs dans 8 cellules et d'un tableau de 10 x 15 cellules et non caractères !

    Cela ferait donc un tableau de 150 cellules et tu voudrais le remplir aléatoirement avec les 8 valeurs, de manière à ce que les 150 cellules aient une valeur ?

    Le mieux, poste un exemple de ton fichier avec sa liste et son tableau sur cjoint.com, fais créer un lien, copies le et reviens le coller ici

    Cdlmnt
    Via
    1
  4. mrjenkins Messages postés 611 Statut Membre 103
     
    Salut

    petite macro pour te donner une idée. A retravailler selon tes besoins.

    Sub test()
    Dim a(8)
    a(0) = "a"
    a(1) = "b"
    a(2) = "c"
    a(3) = "d"
    a(4) = "e"
    a(5) = "f"
    a(6) = "g"
    a(7) = "h"

    For i = 1 To 10
    For j = 1 To 15
    r = Rnd * 8
    Cells(i, j) = a(Int(r))
    Next j
    Next i
    End Sub


    --
    1
    1. sab
       
      Super !

      Pourrais-tu également me dire comment je pourrais avoir une ligne sur 2 provenant d'une liste 1 : a, b, c, d, e, f, g, h et 1 ligne sur 2 provenant d'une liste 2 : i, j, k, l, m, n, o, p.

      Merci à l'avance de ton aide,

      Sab
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sab
     
    Super !

    Pourrais-tu également me dire comment je pourrais avoir une ligne sur 2 provenant d'une liste 1 : a, b, c, d, e, f, g, h et 1 ligne sur 2 provenant d'une liste 2 : i, j, k, l, m, n, o, p.

    Merci à l'avance de ton aide,

    Sab
    0
  7. sab
     
    Merci beaucoup !!!

    Via cela marche ! Henri, je vais regarder !

    Merci à tous !!!!! ;-)
    0
    1. henri
       
       
      @sab

      Voici le fichier Excel : https://mon-partage.fr/f/13l3uDb8/

      Ctrl e : pour changer les données selon Liste1
      Ctrl f : pour changer les données selon Liste2

      Alt F11 pour voir les 2 macros, puis revenir sur Excel

      Les listes sont dans le code (à adapter).
       
      0
  8. Pier-3d Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   1
     
    Bonjour,

    Quelqu'un a testé ce lien ? https://mon-partage.fr/f/13l3uDb8/

    Et celui-ci : https://mon-partage.fr/f/DSwt5QeE/

    Je me méfie, ai-je raison de le faire ?

    Pierre
    0
    1. henri
       
       
      Bonjour Pierre,

      Le 1er lien est le mien, de henri ; je ne peux donc pas te donner une réponse
      objective, mais regarde plus haut la réponse du demandeur sab, du 26 juillet
      à 22:04 : « Merci henri, test concluant ! » ; s'il y avait eu le moindre problème,
      la réponse aurait été toute autre, sab aurait signalé mon message, et elle
      aurait eu tout à fait raison de le faire !

      Le nom que j'ai choisi pour mon fichier est : « tbl 10×15 aléa.xlsm » ; le « tbl »
      est mon abréviation pour tableau ; il est de taille 10 lignes × 15 colonnes, et
      le "but du jeu" est de le remplir avec des caractères aléatoires provenant
      d'une ou deux listes ; dans mon fichier, ces listes sont dans le code VBA.

      ---------------------------------------------------

      Le 2ème lien est celui de via55, et je peux te garantir que tu peux lui faire
      toute confiance : c'est un de ceux qui aident régulièrement sur le site CCM.

      ---------------------------------------------------

      Bien sûr, « errare humanum est » : personne n'est infaillible ; donc il peut arriver
      qu'un code ne soit pas parfait du 1er coup, notamment si l'énoncé de l'exercice
      n'était pas suffisamment clair, et donc il faudra apporter une adaptation au code
      VBA, ou une amélioration.

      Si mon code VBA te convient, et que tu as besoin d'une adaptation,
      tu peux me le demander.

      Cordialement
       
      0
    2. sab > henri
       
      De mon côté ça marche et ça répond à ma demande,

      Sab
      0
    3. sab
       
      Pier, après la réponse de mrjenkins qui fonctionnait pour une liste, j'ai fait une demande pour 2 listes. Via et henri m'ont alors proposé les 2 liens dont tu parles.
      0
    4. Pier-3d Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   1 > henri
       
      Bonjour Henri,

      Et merci d'avoir répondu. Ce qui m'a rendu inquiet en partant c'est que je n'arrive pas à imaginer à quoi servent ces manipulations. En plus, la demande était loin d'être claire : doit-on remplir toutes les cases du tableau ou seulement 8 sur les 150 mais de façon aléatoire ? Et toujours sans savoir à quoi cela peut bien servir. :)

      Mais là j'ai compris que CCM me donne de l'info sur les usagers qui proposent des fichiers à télécharger. J'ai vu que MrJenkins est là depuis 2007, Via55 depuis 2013 et que Sab a des messages dans le forum Excel depuis aussi loin que 2004.

      Alors voilà qui m'enlève tout inquiétude et je vais télécharger vos macros.

      Pierre
      0
    5. henri > Pier-3d Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
       
       
      Bonjour Pierre,

      Des fois, l'exercice à faire est déjà bien indiqué par le titre du sujet,
      ici : « Remplir un tableau de manière aléatoire à partir d'une liste » ;
      et aléatoire = au hasard (=> instructions Randomize et Random).

      Comme te l'as dit sab, elle a ensuite fait une demande pour 2 listes ;
      et ces 2 listes sont alternées d'une ligne à l'autre ; relis son message
      du 26 juillet à 16:33.

      Tu as écris : « ... à quoi servent ces manipulations » et plus loin :
      « à quoi cela peut bien servir » ; cela, seule sab le sait vraiment,
      mais on peut imaginer des applications ; voici 2 exemples :

      1) Suppose que sab est professeur dans une école mixte, donc avec
      des garçons et des filles ; dans sa Liste1, elle remplace "a" à "h" par
      8 prénoms de garçons ; dans sa Liste2, elle remplace "i" à "p" par
      8 prénoms de filles ; le tirage aléatoire lui permettra de "disposer"
      ses élèves en rangées alternées de 8 garçons et de 8 filles.

      2) Suppose que sab utilise une machine qui doit ranger dans une
      boîte 8 sortes de chocolats et 8 sortes de pâtes de fruit ; cela en
      rangées alternées ; même principe : remplacer "a" à "h" par les
      8 sortes de chocolats et "i" à "p" par les 8 sortes de pâtes de fruit.

      À toi d'imaginer d'autres exemples ; quand tu as posté ton message
      de 01:16, j'avais pensé que tu avais une idée d'application pratique,
      avec peut-être un nombre différent d'éléments et / ou un tableau
      de taille différente, c'est pourquoi j'avais mis dans ma réponse :
      «
      Si mon code VBA te convient, et que tu as besoin d'une adaptation,
      tu peux me le demander.
      »

      Au cas où, cette offre tient toujours.  ;)

      Cordialement


      @sab : pour mon 2ème exemple, si j'ai deviné juste, inutile de m'envoyer
      des pâtes de fruit : je les trouve trop sucrées ; par contre, je veux bien
      des chocolats, si t'en as en trop.  ;P
       
      0