Fonction Random selon critères

pingouinal

XLDnaute Occasionnel
Bonjour,

J'ai un fichier qui montre des noms dans une colonne A et des pays dans une colonne B. J'ai besoin de tirer au sort un nom. Avec VBA, j'ai utilisé randomize et ça marche très bien. Par contre lorsque que je veux tirer au sort un nom en fonction d'un pays, je bloque complètement sur la méthode à utiliser.

Est-il possible d'inclure un ou plusieurs critères dans la macro Randomize?
J'ai esssayer en passant par des filtres mais je n'ai pas réussi car la sélection randomize ne tient pas compte de ce filtre, elle choisit dans toute la colonne A.

Je ne sais pas si c'est très clair, je peux fournir un échantillon (vu la taille du fichier original, ça ne passera pas ^^) si besoin est.

D'avance merci pour votre aide.
 

Gruick

XLDnaute Accro
Re : Fonction Random selon critères

Bonjour pingouinal,

As tu essayé de filtrer selon le pays avant de randomizer ?
Ou alors refaire le tirage hasardeux jusqu'à ce qu'il en trouve un correspondant au pays préalablement choisi ?

Effectivement, un fichier est toujours le bienvenu.

A toi, Pingouin (tu dois être heureux ces temps-ci), entre animaux il faut s'entraider.

Gruick
 

job75

XLDnaute Barbatruc
Re : Fonction Random selon critères

Bonjour,

Bien sûr il faudrait voir votre code, mais a priori la solution passe bien par un filtre.

Alors dans votre macro, au lieu d'écrire simplement par exemple Range("A1:A100") essayez en écrivant :

Range("A1:A100").SpecialCells(xlVisible)

Edit : salut Gruick

A+
 
Dernière édition:

pingouinal

XLDnaute Occasionnel
Re : Fonction Random selon critères

Bonjour Gruick et Job75,

Tout d'abord merci pour vos réponses.
En complément, voici un exemple de fichier en pièce jointe.

Le bouton "Hasard" marche très bien, mais le bouton "Hasard selon pays" me donne le même résultat malgré le filtre mis en place. Par exemple quand je choisis France, il peut me proposer un fichier relatif à l'Espagne, et c'est là que je bloque.

Job75: dans la logique le "SpecialCells(xlVisible)" me paraît pouvoir être une bonne solution, mais je n'arrive pas à le placer dans la syntaxe de ma macro.

Encore merci par avance pour votre aide.
 

Pièces jointes

  • Test.xls
    27.5 KB · Affichages: 202
  • Test.xls
    27.5 KB · Affichages: 210
  • Test.xls
    27.5 KB · Affichages: 209

Gruick

XLDnaute Accro
Re : Fonction Random selon critères

re aussi,

J'ai un peu changé la chose :
- Le filtrage semble inutile pour ce problème, je l'ai enlevé.
- j'ai revu la formule de tirage, sinon elle peut tirer soit rien, soit Nom.
- j'ai ajouté une ligne qui compare le pays tiré au pays déterminé.
- j'ai enfin ajouté une ligne pour fermer l'Userform1 sinon, ça tourne indéfiniment, sans bloquer néanmoins, je l'ai laissé en vert et apostrophée.
- La macro concernant le tirage au sort normal est inutile, puisque dans l'USF tu précises avec la case à cocher. Je l'ai laissée.
Voilà.

Espérant que cela te conviennes.

Gruick
 

Pièces jointes

  • Test.xls
    37 KB · Affichages: 152
  • Test.xls
    37 KB · Affichages: 164
  • Test.xls
    37 KB · Affichages: 160
Dernière édition:

pingouinal

XLDnaute Occasionnel
Re : Fonction Random selon critères

Merci beaucoup pour ce fichier Gruick, il m'aide beaucoup.

J'aurais cependant deux questions :

- dans la ligne "MyValue = Int(((Range("B65536").End(xlUp).Row) - 2) * Rnd) + 3" pourrais-tu m'expliquer le 2 et le 3 car je vais avoir besoin d'adapter cette formule sur le fichier original "beaucoup trop gros pour être mis en pièce jointe) et la mise en page (nombre de lignes et première de la liste notamment) risque de changer

- J'aimerais également ajouter d'autres critères possibles (genre, date, etc). Les critères peuvent donc "s'ajouter" avant de faire le tirage au sort. Dois-je simplement ajouter des lignes de codes comme "If CheckBox3.Value = False And Genre <> Range("D" & MyValue).Value Then GoTo re" ou y a-t-il une autre astuce?

D'avance merci pour ton aide.
 

job75

XLDnaute Barbatruc
Re : Fonction Random selon critères

Re,

Désolé du retard, j'ai dû m'absenter.

Voici mon travail. Je n'ai en effet pas utilisé de filtre.

En outre la macro tirage_au_sort est dans un Module.

A+
 

Pièces jointes

  • Test.xls
    35 KB · Affichages: 153
  • Test.xls
    35 KB · Affichages: 156
  • Test.xls
    35 KB · Affichages: 145

pingouinal

XLDnaute Occasionnel
Re : Fonction Random selon critères

Merci beaucoup pour ce fichier job75.

Je viens de le tester et il marche très bien (tout comme celui de Gruick).
Je vais maintenant essayer de l'adapter à mes besoins plus "poussés" sur le fichier d'origine.

Encore merci à tous les deux pour votre aide très précieuse.
 

Gruick

XLDnaute Accro
Re : Fonction Random selon critères

re,

Alors le 3, c'est parce que ta première ligne significative est la troisième, et le -2 c'est parce que le hasard peut tirer zéro, et qu'il n'y a pas de ligne 0 sur excel. Donc, ta dernière ligne étant la 12, je retire 2, ça fait 10, le random étant compris entre 0,001 et 0,999 (j'abrège) on aura pour int(10*0,999), ça fera 9, et j'ajoute 3, ça fait 12 maximum, et pour int(10*0,001) = 0, et j'ajoute 3, ce qui fait 3.
Si ta première ligne était 5, j'aurais fait -4 et +5.

Pour la deuxième question, tu peux bien sûr refaire la même chose que pour le pays, avec un test inspiré de celui du pays. Je ne sais pas où tu veux en venir, car le hasard maîtrisé à ce point, ça risque d'être long, surtout si tu n'a dans ta liste qu'un seul truc correspondant à tes critères, il faudra attendre longtemps avant que le hasard tombe dessus. C'est toi qui vois.

Gruick
 

pingouinal

XLDnaute Occasionnel
Re : Fonction Random selon critères

Merci beaucoup pour cette explication Gruick. Grâce à elle j'ai pu adapter la macro à mon fichier original et cela marche très bien.
J'ai également testé la lenteur en utilisant plusieurs critères pour affiner la sélection et cela reste quasi instantané, même pour des critères qui ne permettent qu'un choix sur 950 lignes.

Par contre je rencontre un nouveau problème : je souhaiterais ajouter un nouveau checkbox pour la colonne pays qui, lorsqu'il est sélectionné, me choisirait un fichier au hasard dans les pays France, USA et Angleterre uniquement (au lieu de un seul ou de tous les pays). Mais je bloque sur la façon d'intégrer cela dans la macro.
Aurais-tu une astuce pour m'aider?

D'avance merci.
 

job75

XLDnaute Barbatruc
Re : Fonction Random selon critères

Bonsoir,

J'ai fait quelque chose, assez différent, qui peut-être vous conviendra. A vous de voir.

A+
 

Pièces jointes

  • Test.xls
    47 KB · Affichages: 166
  • Test.xls
    47 KB · Affichages: 178
  • Test.xls
    47 KB · Affichages: 177

pingouinal

XLDnaute Occasionnel
Re : Fonction Random selon critères

Merci job75,

C'est dans l'idée exactement ce que je recherche.
Cependant mon fichier original contient beaucoup plus de pays et cela risque d'être rebarbatif de tous les cochés un par un.
C'est pour cela que je cherchais à en assigner plusieurs à un même checkbox. Par exemple un checkbox qui regroupe les pays européens, un pour l'Amérique, etc...
J'ai essayé de modifier votre code pour y parvenir, mais malheureusement je n'y suis pas arrivé. Pensez-vous que c'est possible?

D'avance merci.
 

pingouinal

XLDnaute Occasionnel
Re : Fonction Random selon critères

Bonjour job75 et le forum.

J'ai réussi à adapter le code donner par job75 pour mon fichier, mais j'ai de nouveau un problème : lorsque le pays a un nom composé, la macro plante.
Par exemple pour la Corée du Sud, je suis obligé d'écrire dans mon fichier Corée_du_Sud pour que la macro ne plante pas quand la fonction Controls tombe sur ce pays.
Y a-t-il un moyen de la faire marcher sans pour autant changer le nom du pays dans le fichier excel?

D'avance merci.
 

Discussions similaires

Réponses
40
Affichages
1 K
M
Réponses
6
Affichages
508

Statistiques des forums

Discussions
312 613
Messages
2 090 234
Membres
104 463
dernier inscrit
lbo