Microsoft 365 Nombre aléatoire ordre croissant dans une zone sélectionnée

wiwi520

XLDnaute Nouveau
Bonjour,

Je cherche un code en VBA pour générer des nombres dans un ordre croissant sur une colonne (A par exemple) de manière aléatoire et que cette macro s'applique sur une sélection que je ferais manuellement. En d'autres mots je veux que cette macro ne s'applique que sur les cellules que je sélectionne.
Par exemple:
Si je sélectionne les cellules (A1:A10) et j'active la commande macro, seules ces cellules afficheront des nombres croissants de manière aléatoire. Je pourrais aussi sélectionner les cellules (A3:A7), ou (A8 : A25) pour avoir le même résultat.

Alors j'ai jamais fait des macros.

Merci pour votre aide précieuse.
 

Staple1600

XLDnaute Barbatruc
Re

Si, j'étais moi, mon oeil droit (le gauche écoute la radio) s’arrêterait sur ceci:
Order1:=xlAscending
Et alors, j'aurais l'idée d'utiliser l'enregistreur de macros quand je fais un tri décroissant (afin d'obtenir le code VBA correspondant)
Ce faisant, la réponse a ta question est donc à deux pas d'une caresse à ta souris* (celle qui à un fil) ;)

*: c-a-d faire le tri manuellement avec le dit mulot.
 

Staple1600

XLDnaute Barbatruc
Re

Puisque je suis moi, et en confinement dominical, une adaptation "paramétrée" de la proposition précédente.
VB:
Sub test_Croissant()
Nombre_Alea_III
End Sub
Sub test_Décroissant()
Nombre_Alea_III xlDescending
End Sub

Private Sub Nombre_Alea_III(Optional Sens_Tri As XlSortOrder = 1)
'souce:Sub aleatoire [08/2015] - ROGER2327 / Magic_Doctor / job75
Dim dk As Object, NbLgn&: Set dk = CreateObject("Scripting.Dictionary")
Randomize
With Selection
    NbLgn = .Rows.Count
    While dk.Count < NbLgn
        dk(Round((35 - 1) * Rnd() + 1, 0)) = ""
    Wend
    .Value = Application.Transpose(dk.keys): .Sort .Item(1), Sens_Tri
End With
End Sub
 

jmfmarques

XLDnaute Accro
Re bonjour staple,
Rien ne t'interdit de t'amuser à profiter plus à fond du confinement.
Deux pensées !
-pensée 1 : si mes 35 nombres sont au départ dans l'ordre et que je dois en garder par exemple 20 : à en éliminer aléatoirement 15, les 20 autres sont restés dans l'ordre.

- pensée 2 : ... et puis non ... pas encore . :cool:
 

Staple1600

XLDnaute Barbatruc
Re

Je suis parti du principe que la sélection est vide.
Du coup, mes tests se déroulent sans accroc.
Mais j'ai fini de m'amuser, c'est l'heure de quitter l'Option Explicit pour l'Option Casseroles et cuisine. ;)
Je cherche un code en VBA pour générer des nombres dans un ordre croissant sur une colonne (A par exemple) de manière aléatoire et que cette macro s'applique sur une sélection que je ferais manuellement.
Chacun peut voir le verre plein ou vide.
Chez moi, il est toujours vide ;)
 

CISCO

XLDnaute Barbatruc
Bonjour
Bonjour

....
Ce qui a pour moi la conséquence suivante: si (par exemple et entre autres) 35 est le premier nombre tiré aléatoirement entre 1 et 35, seule sera remplie la celle A1
Aurais-je mal lu ? Te serais-tu mal ou incomplètement exprimé ?

Je pense qu'il faut voir la présente demande autrement. Si par exemple, on sélectionne 5 cellules. Excel tire au hasard 5 nombres différents entre 1 et 35, puis les classe dans l'ordre désiré dans les 5 cellules choisies. Il ni a pas d'impossibilité...

@ plus
 

jmfmarques

XLDnaute Accro
Salut CISCO
Cela n'enlève rien à ce que j'ai exposé.
(c'est comme quand on égrène les petits pois).

Illustrons donc avec un exemple volontairement "écru" :
ici, je veux mettre en ordre croissant en A1:A25 25 nombres aléatoires tirés sans doublons entre 1 et 35
VB:
Dim toto As New Collection, K As Integer
For K = 1 To 35
  toto.Add K
Next
Randomize
For K = 1 To 10
  toto.Remove Int((toto.Count * Rnd) + 1)
Next
For K = 1 To Range("A1:A25").Count
  Range("A1:A25")(K) = toto(K)
Next
 

mapomme

XLDnaute Barbatruc
Supporter XLD
PS/ Bon je retourne en cuisine.
Et qu'est ce que tu nous prépares de bon pour ce soir ?

Une petite salade de 1 + int(rnd * 35) accompagnée de sa vinaigrette au Randomize, le tout relevé d'une pointe de RandBetween() cueilli à la rosée de ce matin sur les landes sauvages du bord de mer ?
Ah non, confinement oblige, c'est doute du RandBetween() lyophilisé :(.

Bon appétit...:D
 

jmfmarques

XLDnaute Accro
Bonjour mapomme

Je te conseille (recette facile) l'Ober Gin genre Moult à Balai
- 1 Ober (gin, hein) coupée longitudinalement et piquée plusieurs fois à la fourchette -->> Au four sous MSHGRID à 275 ° pendant 20 minutes - retourner à 10 puis 15 minutes
- fourrer d'un peu de crême refresh et de from (âge rapé)
- saler - poivrer -->> remettre au four pour 900 secondes.
 

Staple1600

XLDnaute Barbatruc
Re, Bonsoir mapomme


Une tasse d'un bon vieux Viandox (bien chaud)
(comme ceux qu'on servait dans les troquets d'antan)
1 tranche de Vollkornbrot sur laquelle je dépose deux trois tranches de saucisson du marin (que je recouvre de fines lamelles de vieux cheddar, sans oublier un petit saupoudrage de levure de bière) que je grille sur mon grille-grain de gazinière.
Une part de vermicelles de riz cuite avec quelques champignons.
Une bière.
Une part de gâteau maison (sans beurre, sans oeufs -> lait de soja et autres "bobozeries"
Un café.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @Staple1600,
Une tasse d'un bon vieux Viandox (bien chaud)
(comme ceux qu'on servait dans les troquets d'antan)
1 tranche de Vollkornbrot sur laquelle je dépose deux trois tranches de saucisson du marin (que je recouvre de fines lamelles de vieux cheddar, sans oublier un petit saupoudrage de levure de bière) que je grille sur mon grille-grain de gazinière.
Une part de vermicelles de riz cuite avec quelques champignons.
Une bière.
Une part de gâteau maison (sans beurre, sans oeufs -> lait de soja et autres "bobozeries"
Un café.
A part la bière, tu es sur la mauvaise pente. Je vois qu'il est grand temps de mettre un terme, non pas au confinement général mais, à ton enfermement. Sinon jamais tu ne tiendras le coup. Courage!
 

Staple1600

XLDnaute Barbatruc
Re

•>mapomme
Avec un soupçon de pépin d'orthorexie¸ mapomme à dit:
A part la bière, tu es sur la mauvaise pente
Ce n'est pas possible.
Il n'est point dans ma bibliothèque ;)
 

Discussions similaires

Réponses
1
Affichages
609

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal