Tri aléatoire (fichier joint)

Bonjour,

Pour un concours de boules, j'ai fait un tableau avec une colonne de noms et une autre de formule (=ENT(ALEA()*100+1).

J'avais réussi la macro "Tirage" pour un tri aléatoire sans avoir de cellules vides entre les noms.

Aujourd'hui, je ne me rapelle plus quelles sont les opérations au clavier de cette macro.

Quelqu'un peut-il m'aider à décrypter cette macro ?

Salut,

vincent115 a écrit :

Aujourd'hui, je ne me rapelle plus quelles sont les opérations au clavier de cette macro.

Quelqu'un peut-il m'aider à décrypter cette macro ?

Tu indiques ici que tu désires retrouver le raccourci clavier et tu donnes d'autres informations (contradictoires ?) dans ton fichier. Lorsque l'on reçoit des informations de toutes parts, c'est assez repoussant

Lorsque tu as enregistré tes macros et que tu leur as affecté un raccourci clavier, il est inscrit directement dans la macro enregistrée. Est-ce que ça t'aide à le retrouver ?? Un exemple dans l'image ci-jointe.

Cordialement.

24 05

Salut

Merci de ta réponse rapide, ma question n'est peut-être pas assez claire.

En résumé, j'ai une colonne de 10 noms par exemples (sur 50 lignes) et dans la colonne voisine, je mets la formule =ENT(ALEA()*100+1) sur 50 lignes.

Je voudrais trier la première colonne en prenant la deuxième colonne comme base croissant ou décroissant, et tout cela sans avoir de cellules vides entre les noms, mais avec la sélection des 50 lignes des 2 colonnes dans la macro

Dans quelle plage précise as-tu tes 10 noms sur 50 lignes ?

A quel endroit veux-tu le résultat final ? A partir de la première cellule de la plage que tu as indiquée en réponse à la première question ci-dessus ou ailleurs ?

Ca risque de compliquer passablement les choses de laisser le choix à l'utilisateur de lancer un tri croissant ou décroissant et de plus je ne vois pas l'utilité puisqu'il s'agit d'un tri aléatoire. Faut-il donc vraiment tenir compte de ta remarque à ce sujet ?

A te relire.

Bonjour

Colonne A : 10 noms sur 50 lignes

Colonne B : formule aléatoire sur 50 lignes

Résultat désiré : tri de A de la plage A1;B50 sur base de la colonne B ----->les noms de A restent dans A mais sans cellules vides entre les noms.

La macro "Tirage" que j'ait faite l'année dernière fonctionne parfaitement, mais hélas je ne sais plus comment la refaire.

J'en ai besoin pour une autre application.

Salut,

La macro «Tirage» que tu cherches semble être dans le module 13 de ton fichier. C’est une macro enregistrée qui trie successivement les colonnes E:F, H:I et K:L. Comme toutes les macros enregistrées, elle comporte beaucoup de lignes inutiles.

Je te propose alors une autre macro - dans le fichier ci-joint - qui trie une plage de manière aléatoire (et bien entendu, sans espace).

Option Explicit

Sub Tri_aléatoire()
Dim i As Integer

Application.ScreenUpdating = False

    For i = 11 To 60
        If Range("A" & i) <> "" Then Range("B" & i) = Rnd
    Next i

    Range("A11:B60").Sort Key1:=Range("B11"), Order1:=xlAscending, Header:=xlNo
    Range("B11:B60").ClearContents

End Sub

Cordialement.

93vincent-v1.zip (13.41 Ko)

Merci Yvouille

Ta macro est bien plus simple et cela marche super.

Par contre, je ne connais pas le language basic, alors si tu peux me dire les opérations à faire au clavier et souris : par exemple, sélectionner la plage ---->trier ---> etc pour l'aléatoire

Merci et bravo

Au tout début, j’avais compris que tu avais une ancienne macro que tu pouvais déclencher à l’aide d’un raccourci-clavier, raison pour laquelle je t’ai d’abord indiqué comment retrouver éventuellement les raccourcis-claviers inscrits parfois directement dans les macros.

Ensuite j’ai cru que tu voulais simplement la démonstration d’une macro de tri aléatoire pour une plage quelconque que tu allais pouvoir adapter toi-même à ta plage réelle.

Selon ton dernier texte, je comprends maintenant que tu voudrais une macro qui te permettrait de sélectionner une plage quelconque (mais sur une seule colonne) et qu’un tri aléatoire de cette sélection se ferait alors ?

Ou tu me demande simplement comment affecter un raccourci-clavier à ma macro à la place du bouton proposé dans mon dernier fichier ?

A te relire.

Salut

"Selon ton dernier texte, je comprends maintenant que tu voudrais une macro qui te permettrait de sélectionner une plage quelconque (mais sur une seule colonne) et qu’un tri aléatoire de cette sélection se ferait alors ?"

C'est bien çà, mais je voudrais savoir quelle formule à utiliser pour le tri aléatoire.

Faire une macro, je sais le faire, mais je ne sais pas où aller dans les onglets d'Excel pour faire le tri aléatoire.

A+ Vincent

Re,

Je te comprends de moins en moins. Tu dis savoir faire une macro, mais tu ne vois apparemment pas comment j’ai prévu mon tri aléatoire dans ma macro.

Tout d’abord, je place des chiffres aléatoires dans la colonne B (qui seront effacés juste avant la fin de la macro) dans la colonne B par ces lignes

For i = 11 To 60

If Range("A" & i) <> "" Then Range("B" & i) = Rnd

Next i

puis je trie les colonnes A et B par cette ligne

Range("A11:B60").Sort Key1:=Range("B11"), Order1:=xlAscending, Header:=xlNo

Je ne sais trop que t’expliquer de plus.

Sinon, si ma réponse ne correspond pas du tout à ton attente, tu peux indiquer ce fil comme résolu et en recommencer un nouveau, mais alors tâche d’être plus clair.

A te relire.

NB : Si tu veux reprendre une partie du texte d'un autre membre, utilise l'option "Citer", autrement c'est très difficile à savoir que ce n'est pas ton texte.

Salut

Je vais être plus clair, je ne connais pas du tout le visual basic, je fais des macros par enregistrements des actions manuels d'excel : par exemple : Outils ---> Macro ---> Nouvelle maco --->Enregister ---> ...etc... --->Arrêté macro

Sur ta dernière réponse, je comprend un peu mieux quand tu me parles de la colonne aléatoire qui est effacé ensuite, alors ma question est la suivante, ta ligne :

If Range("A" & i) <> "" Then Range("B" & i) = Rnd

correspond à quels actions à faire dans Excel ?

Merci pour ta patience

Salut,

vincent115 a écrit :

alors ma question est la suivante, ta ligne :

If Range("A" & i) <> "" Then Range("B" & i) = Rnd

correspond à quels actions à faire dans Excel ?

Cette ligne de code place un chiffre aléatoire [Rnd] dans la colonne B [Range("B" & i)] si la cellule correspondante de la colonne A n’est pas vide [If Range("A" & i) <> "" Then].

Mais si tu ne désires pas travailler avec des macros – comme ça semble être le cas – tu dois placer une formule dans la colonne B avant d’effectuer ton tri sur deux colonnes (A et B ) en prenant comme base de tri la colonne B.

Voici une formule à placer en B11 et à incrémenter vers le bas

=SI(A11<>"";ALEA();"")

Comme tes nouveaux souhaits n'ont plus grand-chose à voir avec ta demande initiale, je te prierais d’indiquer ce fil comme résolu (tu cliques sur le petit V vert dans l’un de tes messages) et tu recommences un nouveau fil avec tes nouvelles questions.

Bonne continuation.

NB : Si tu reçois de l'aide gratuite sur le Forum, ne te gêne pas de remercier celui qui te l'a donnée ; j'ai vu que tu n'avais pas remercié Tulipe pour sa réponse

Salut

En fin de compte, j'ai essayé bêtement ton exemple sur mon fichier (macro Tirage) et cela m'indique une erreur de compilation

Re,

Tu en es vraiment au tout début avec les macros

Il est indiqué sur le message d’erreur que tu nous fournis qu'un « End Sub » est attendu ; c’est parce que tu as une macro qui commence [ Sub tirage() ] mais elle n’a pas de fin.

Tu dois donc placer un « End Sub » avant ta prochaine macro « Sub Tri_aléatoire () ».

Merci d’indiquer ce fil comme résolu et d’ouvrir de nouveaux fils pour tes prochaines questions.

Yvouille a écrit :

NB : Si tu reçois de l'aide gratuite sur le Forum, ne te gêne pas de remercier celui qui te l'a donnée ; j'ai vu que tu n'avais pas remercié Tulipe pour sa réponse

Rechercher des sujets similaires à "tri aleatoire fichier joint"