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

Résolu/Fermé
sab - 26 juil. 2017 à 15:50
Pier-3d Messages postés 67 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 18 mars 2024 - 31 juil. 2017 à 22:06
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

via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
26 juil. 2017 à 18:16
Re,

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

Cdlmnt
Via
2
Merci beaucoup !!!

Via cela marche ! Henri, je vais regarder !

Merci à tous !!!!! ;-)
0
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
Merci henri, test concluant !
0
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
26 juil. 2017 à 15:57
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
mrjenkins Messages postés 577 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 17 juillet 2018 102
26 juil. 2017 à 16:02
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
Merci beaucoup !!!

Via cela marche ! Henri, je vais regarder !

Merci à tous !!!!! ;-)
0
 
@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
Merci henri, test concluant !
0
Pier-3d Messages postés 67 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 18 mars 2024 1
27 juil. 2017 à 01:16
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
 
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
De mon côté ça marche et ça répond à ma demande,

Sab
0
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
Pier-3d Messages postés 67 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 18 mars 2024 1 > henri
27 juil. 2017 à 17:36
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
henri > Pier-3d Messages postés 67 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 18 mars 2024
27 juil. 2017 à 18:55
 
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