Placer un range aléatoirement dans un tableau

Signaler
-
 Raja -
Bonjour,
Je souhaite placer un range de 5 cellules collées dans le tableau B2:K11 aléatoirement.

Quelqu'un sait comment?


Bonne soirée!

11 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,
Quelle est ta difficulté exacte ?
- tirer aléatoirement une cellule/emplacement ? Regarde dans l'aide VBA aux mots Rnd et Randomize
Reviens (si encore en difficulté) avec ce que tu as au moins tenté d'écrire.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
J'aimerais placé comme dans le tableau B2:K11, un range de 5 cellules, il est écrit dans chaque cellule le chiffre 1. Pour le moment, j'ai placé mon range manuellement soit par:

Set F1 = Application.ThisWorkbook.Worksheets(1)


With F1


.Cells.Clear
.Range("A:XFD").ColumnWidth = 5
.Range("A:XFD").RowHeight = 25
.Range("B2:K11").Borders.LineStyle = xlContinuous

End with

Dim porte_avion_IA As Range

Set porte_avion_IA = Range("Q6:U6")
porte_avion_IA.Value = 1

C'est la partie aléatoire qui me bug, la fonction Rnd donne un chiffre aléatoire. Il faut que mon range soit Rnd soit entre B2 et K11.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
C'est la partie aléatoire qui me bug, la fonction Rnd donne un chiffre aléatoire. Il faut que mon range soit Rnd soit entre B2 et K11.

Peut-être !
Mais pour le savoir, encore faudrait-il que l'on sache ce que tu as écrit pour y parvenir !
Ton code ne montre absolument rien de ce choix aléatoire.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Je note au passage que ton "porte-avion" est constitué de cellules sur une seule ligne, ce qui rend inutile un calcul plus complexe de "débordement" vertical, seuls les débordements horizontaux étant alors concernés.
Il te faut donc tirer aléatoirement une ligne comprise entre 2 et 11 et une colonne comprise entre 2 (la colonne B) et 11 (la colonne K) - le nombre de cellules du porte-avion (puisque de 5 cellules).
Tout cela est d'une très grande simplicité.

Cependant rien n'empêche que mon range soit placé dans le sens vertical. C'est juste que je l'avais placé manuellement. Il peut être placé selon l'axe des x ou l'axe des y.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Hé bien ! Qu'il soit placé dans un sens ou dans l'autre, voire non linéaire (composé de plusieurs cellules jointes et non alignées), le principe est toujours le même (tenir compte de sa hauteur la plus grande et de sa largeur la plus grande dans le calcul).

Nous ne voyons toujours pas ton code utilisant Rnd et Randomize.
Il est vraiment enfantin, pourtant.

PS : il est maintenant clair que si tu ne sais pas le faire manuellement (délimiter la surface "limite" accueillant le point de départ possible), ce ne sera pas l'informatique qui palliera cette carence en arithmétique. L'informatique est là pour "traduire" un raisonnement et non l'inverse.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Je suis encore en mode apprentissage. Je lis et je lis, ce n'est pas pour rien que je consulte les forums.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
C'est très bien, mais commence par résoudre ce problème par l'arithmétique (hors informatique), donc .

Pense à une grille vide de mots croisés, de 10 cases par 10 cases, par exemple :
Imagine maintenant que tu veuilles y caser (horizontalement ou verticalement, selon ton choix) un mot de 6 lettres. Calcule maintenant (arithmétique pure) dans quelles seules cases ce mot peut commencer et tenir en entier dans la grille. Ces cases formeront nécessairement un rectangle. Détermine-le donc. Sans informatique (une autre fois). Commence par ce petit exercice MANUEL.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
si je suis cette logique, pour un range de 5 cellules, j'obtiendrais dans mon tableau le rectangle M2:R11
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Ah ? Euh ...
Rappel de ton premier message ;
Je souhaite placer un range de 5 cellules collées dans le tableau B2:K11

C'est pas tout cela. Le jour se lève et j'ai des choses plus sérieuses à faire.
Bonne chance
Oups, c'est plutôt B2:G11