Remplir un tableau de manière aléatoire à partir d'une liste [Résolu/Fermé]

Signaler
-
Messages postés
67
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
1 juillet 2020
-
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

Messages postés
12461
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
5 août 2020
1 955
Re,

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

Cdlmnt
Via
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 56934 internautes nous ont dit merci ce mois-ci

Merci beaucoup !!!

Via cela marche ! Henri, je vais regarder !

Merci à tous !!!!! ;-)
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 56934 internautes nous ont dit merci ce mois-ci

Merci henri, test concluant !
Messages postés
12461
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
5 août 2020
1 955
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
Messages postés
577
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2018
79
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


--
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
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
Merci beaucoup !!!

Via cela marche ! Henri, je vais regarder !

Merci à tous !!!!! ;-)
 
@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).
 
Merci henri, test concluant !
Messages postés
67
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
1 juillet 2020
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
De mon côté ça marche et ça répond à ma demande,

Sab
Messages postés
67
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
1 juillet 2020
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
>
Messages postés
67
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
1 juillet 2020

 
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
 
Messages postés
67
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
1 juillet 2020
1 > henri
Bonjour Henri,

C'est trop gentil de votre part de me répondre comme ça. Je regrette presque de m'être arrêté sur ce sujet et vous déranger comme ça, ce n'était que de la curiosité.

Je fais moi-même de la programmation en Vba pour mes besoins personnels et je suis toujours curieux de découvrir de nouvelles astuces.

Pour le moment je n'ai pas de questions en particulier mais ça arrive. La prochaine fois que je serai bloqué je viendrai sur ce forum pour exposer mon problème.

Merci encore et bonne programmation à Sab.

Cordialement,

Pierre


---
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.