VBA Excel : remplir un tableau aléatoirement [Résolu/Fermé]

Signaler
Messages postés
11
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
10 juin 2011
-
Messages postés
11
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
10 juin 2011
-
Bonjour,

J'essaye depuis une semaine de trouver un moyen de remplir 2 colonnes d'un tableau Excel de manière aléatoire mais, étant débutant, je ne vois pas comment m'en sortir.

L'objectif n'est pas compliqué. J'aimerai :

- pour la première colonne du tableau, un script permettant d'aller chercher aléatoirement une valeur dans une liste (préalablement écrite sous forme d'un tableau dans une des feuille d'excel) pour la placer successivement dans chaque cellule de de cette première colonne. Les doublons sont permis.

- pour la deuxième colonne, un script permettant de choisir une valeur entière comprise entre 1 et N afin de la placer successivement dans chaque cellule de de cette seconde colonne. Les donblons sont permis sauf pour 2 valeurs successives.

Merci d'avance pour votre aide. Il s'agit d'un travail qui s'insère dans le cadre de mon travail de fin d'étude.

10 réponses

Messages postés
9761
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
8 mai 2021
2 106
bonjour

Q1
- pour la première colonne du tableau, un script permettant d'aller chercher aléatoirement une valeur dans une liste (préalablement écrite sous forme d'un tableau dans une des feuille d'excel) pour la placer successivement dans chaque cellule de de cette première colonne. Les doublons sont permis.
est ce que ça veut dire que deux lignes successives peuvent etre identiques? que deux lignes quelconques peuvent être identiques?

Q2
- pour la deuxième colonne, un script permettant de choisir une valeur entière comprise entre 1 et N afin de la placer successivement dans chaque cellule de de cette seconde colonne. Les donblons sont permis sauf pour 2 valeurs successives.
est ce que ça veut dire que deux lignes peuvent etre identiques mais que deux lignes succesives ne peuvent pas l'être ?

Q3. tu parles de script, est ce que tu veux parler de VBA?

bonne suite
Messages postés
11
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
10 juin 2011
1
Bonjour ccm81,

Q1
- pour la première colonne du tableau, un script permettant d'aller chercher aléatoirement une valeur dans une liste (préalablement écrite sous forme d'un tableau dans une des feuille d'excel) pour la placer successivement dans chaque cellule de de cette première colonne. Les doublons sont permis.
est ce que ça veut dire que deux lignes successives peuvent etre identiques? et trois, et ...?


oui cela veut dire que 2, 3, 4, ... cellules successives ou différentes cellules (par exemple la 5ème et la 16éme) peuvent contenir la même valeur.

Q2
- pour la deuxième colonne, un script permettant de choisir une valeur entière comprise entre 1 et N afin de la placer successivement dans chaque cellule de de cette seconde colonne. Les donblons sont permis sauf pour 2 valeurs successives.
que veux tu dire exactement?


Je veux dire par là que des cellules différentes peuvent contenir la même valeur Sauf 2 cellules successives : la 3ème cellule et la 5ème cellule peuvent contenir la même valeur mais pas le 3ème et la 4ème.
En fait cette seconde colonne correspond aux étages dans un bâtiment et mon travail consite en l'étude du déplacement d'un ascenseur. Si je met la même valeurs dans 2 cellules successives, mon ascenseurs est resté au même étage, or je désire qu'il se déplace à chaque ligne successive.

J'espère que c'est plus clair.
Merci pour votre aide.
Messages postés
9761
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
8 mai 2021
2 106
re

OK pour les précisions sur Q1 et Q2
tu n'as par contre pas répondu à Q3.

en fait
- pour Q1 le pb est simple (voir https://www.cjoint.com/?0FiqsN3Wkct )
- pour Q2, sans VBA (macro) je ne vois pas, mais ça ne veut pas dire qu'il n'y a pas de solution

tu dis

bonne suite
Messages postés
11
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
10 juin 2011
1
Desolé je n'ai pas vu Q3,

Oui je veux parler de VBA. Je ne connais pas quelle syntaxe utiliser en VBA pour des selections aléatoires.

Donc oui, j'aimerai réaliser les 2 questions à l'aide de VBA.

J'ai déja un fichier excel conséquent avec des macros mais je reste bloqué sur ce problème de selection aléatoire.
Messages postés
9761
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
8 mai 2021
2 106
re

OK, on s'y met
Messages postés
9761
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
8 mai 2021
2 106
re

un essai avec ce que j'ai compris

https://www.cjoint.com/?0Firh2sM1wI

pour exécuter
- modifier les valeurs de N et du nombre de lignes en B1 et B2
- OK

si tu veux des explications n'hésites pas

bonne suite
Messages postés
11
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
10 juin 2011
1
Super ça marche, merci !!!!

Maintenant je vais décortiquer ton code VBA (qui contient déja pas mal de commentaires utiles pour la compréhension).

Une fois que je l'aurai compris je pourrai m'en inspirer pour mon travail.

j'aurai surement des questions.

Je m'y met.

A bientot.
Messages postés
11
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
10 juin 2011
1
re

Alors j'ai décortiqué ton code et je comprend comment tu résoud le problème.

Mais pourrais-tu s'il te plait m'expliquer comment tu choisi aléatoirement l'indice h grâce à la fonction Int( ). Comment cette dernière fonctionne?Quels sont les arguments que tu lui donne ? Je vois que tu multiplie la taille de la liste ou le nombre N par Rnd :

h = Int(nbliL * Rnd) + 1 ou h = Int(n * Rnd) + 1

Et pourquoi tu ajoute 1 ?

Encore merci pour ton aide.
Messages postés
9761
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
8 mai 2021
2 106
re

on veut par exemple obtenir un entier aléatoire de 1 à 10 compris

- rnd en vba est une fonction (sans argument) qui renvoie un nombre aléatoire qui va de 0 compris à 1 non compris (ex 0.58974)
donc 10*rnd renvoie un nombre de 0 compris a 10 non compris
- int est la fonction partie entière , int(x) renvoie le plus grand entier inférieur ou égal à x (ex int(2.36) = 2)
donc int(10*rnd) renvoie un entier de 0 compris à 10 non compris, donc de 0 à 9 compris
et 1+int(10*rnd) renvoie un entier de 1 à 10 compriss

donc pour obtenir un entier aléatoire h de 1 à n compriss
h = int(n*rnd)+1 ou h = int(1+n*rnd)


RQ. Excel possède des fonctions équivalentes

ALEA() pour rnd
ENT pour int

j'espère avoir été clair.

bonne suite
Messages postés
11
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
10 juin 2011
1
re

Je te remercie sincèrement pour ton aide.

Ta dernière intervention résume la syntaxe à utiliser pour réaliser une sélection aléatoire en VBA. Les autres utilisateurs du forum pourront aussi s'en inspirer s'ils se posaient la même question que moi car après tout dépend de ce qu'on désire réaliser.

On peut donc dire que le problème est résolu :-)

Encore merci ccm81