Placer un range aléatoirement dans un tableau

Raja - 23 nov. 2014 à 22:39
 Raja - 27 nov. 2014 à 07:29
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 23/11/2014 à 23:03
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
0
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 nov. 2014 à 20:29
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 nov. 2014 à 20:42
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é.

0

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

Posez votre question
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 26/11/2014 à 23:03
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
0
Je suis encore en mode apprentissage. Je lis et je lis, ce n'est pas pour rien que je consulte les forums.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 27/11/2014 à 06:12
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
0
si je suis cette logique, pour un range de 5 cellules, j'obtiendrais dans mon tableau le rectangle M2:R11
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2014 à 07:27
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
0
Oups, c'est plutôt B2:G11
0
Rejoignez-nous