Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Fonction Random selon critères

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
Re : Fonction Random selon critères

Bonjour pingouinal,

La propriété Name des CheckBox est le nom du pays mais effectivement les espaces ne sont pas autorisés, il faut écrire pour le Name Corée_du_sud.

Cela ne pose pas de problème véritable, il suffit de modifier un peu le code :

Code:
[COLOR="Red"]Dim Nom$[/COLOR]
'---------
Set Hasard_Pays = ActiveSheet.Range("C" & MyValue)
[COLOR="Red"]Nom = Replace(Hasard_Pays.Value, " ", "_")[/COLOR]
If Controls([COLOR="Red"]Nom[/COLOR]) = False Then GoTo 1
MsgBox "Le fichier tiré au sort est le : " & Hasard_Pays.Offset(0, -1)

A+
 
Re : Fonction Random selon critères

Bonjour,

La nuit porte conseil, j'ai rêvé en italique, ce qui m'a donné une idée.
Sans changer grand chose à ma première macro, j'ai simplement décidé de mettre en italique les pays choisis pour le tirage au sort, et de faire le test là dessus, ensuite de remettre tout "normal".
Cela évite aussi les problèmes de noms composés.

Gruick
 

Pièces jointes

Re : Fonction Random selon critères

Bonsoir le forum,

J'ai réussi à faire mon tirage au sort selon deux critères, mais j'ai encore un problème : si aucune réponse ne peut être trouvée, la macro tourne en boucle à l'infini. Je voudrais avec un message qui me dit qu'aucun résultat ne peut être trouvé et que la macro s'arrête.

Je mets ci-dessous le morceau de code utilisé :

Randomize
1 MyValue = Int(((Range("B65536").End(xlUp).Row) - 11) * Rnd) + 12

Set Hasard_G = Worksheets("Data").Range("E" & MyValue)
If Controls(Hasard_G) = False Then GoTo 1
Set Hasard_P = Worksheets("Data").Range("N" & MyValue)
If Controls(Hasard_P) = False Then GoTo 1

D'avance merci à tous ceux qui pourront m'aider...
 
Re : Fonction Random selon critères

Re bonjour tout le monde,

Tant que j'y suis, j'aimerais faire une autre modification à cette macro.
Le résultat du tirage au sort apparaît dans un userform et j'aimerais ajouter un bouton qui me donne un autre résultat avec les mêmes critères (dans l'optique où le premier résultat ne me convienne pas).
Je bloque sur deux points :

- je n'arrive pas à relancer la fonction random depuis le userform final, je dois le fermer et relancer la fonction depuis le userform où je sélectionne les critères
- quand je relance la fonction random (idéalement sans revenir par le userform de critères), j'aimerais éviter les doublons dans les propositions. Mais comme c'est une fonction random, je ne sais pas si on peut tenir compte des résultats déjà proposés et les enlever de la recherche suivante.

Voilà, j'espère avoir été clair dans mes explication et je vous remercie par avance pour votre aide.
 
Re : Fonction Random selon critères

Bonsoir le forum,

Je bloque toujours sur cette fonction random qui tourne en boucle quand rien ne correspond aux critères choisis.

Est-ce que quelqu'un aurait une idée de comment la stopper si elle ne trouve rien?

D'avance merci.
 
Re : Fonction Random selon critères

Bonsoir pingouinal et les amis du fil,

Si ta macro boucle, c'est qu'il manque un test quelque par.

Ou alors un Do Loop infernal....

Sans voir ta macro et ce qu'elle doit faire, pas facile de te répondre.

Un petit fichier exemple et représentatif de ton souci, en t'assurant qu'il reproduit bien le même problème serait idéal pour te répondre.

Bonne soirée.

Jean-Pierre
 
Re : Fonction Random selon critères

Bonsoir Jean-Pierre,

Voici un exemple de fichier comme celui que j'utilise. L'original faisant 5 Mo, je l'ai beaucoup allégé, mais le problème reste le même, à savoir si je choisis des critères que ne trouvent pas de résultat (type A en France par exemple) la macro va éternellement recommencer.

D'avance merci pour ton aide.
 

Pièces jointes

Re : Fonction Random selon critères

Bonjour Jean-Pierre et le forum,

Pour régler mon problème (le premier au moins ^_^') j'ai penser dire à la macro que si au bout de X tentatives elle n'a rien trouvé qui correspondait aux critères sélectionnés, elle m'affiche un message disant qu'il n'y a pas de solution possible.
Mais je ne sais pas comment écrire cela dans VBA. Est-ce au moins réalisable?

D'avance merci à ceux qui prendront le temps de m'aider.
 
Re : Fonction Random selon critères

Bonsoir le forum,

Vu que ma première tentative n'avait pas l'air réalisable, j'ai pensé à autre chose, mais j'aurais besoin de votre aide.

Je voudrais que sur le userform qui s'ouvre (celui dans lequel j'ai les choix de critères) une textbox m'affiche le nombre de résultats possibles en fonction des critères sélectionnés (par exemple dans le fichier que j'ai attaché un peu plus haut si je choisis type B et pays Japon, il m'affiche 3).
L'idéal serait bien sûr que l'affichage de cette textbox s'actualise directement à chaque changement de critères.
Et si le nombre de résultat possible est 0, bloquer le bouton choisir.

D'avance merci à tous ceux qui pourront m'aider.
 
Re : Fonction Random selon critères

Bonsoir pingouinal, le fil,

Je suis tout à fait désolé pingouinal, mais je n'ai jamais vu passer vos derniers messages, sinon bien sûr j'aurais répondu ! Dans ce cas il aurait fallu me prévenir par message privé...

Quand on clique sur le bouton "Tirer au sort "de l'USF (CommandButton1), la macro boucle quand aucune CheckBox n'est cochée.

J'ai remédié à cette situation en étudiant au préalable les valeurs de toutes les CheckBoxes.

Fichier joint.

Bonne nuit.
 

Pièces jointes

Dernière édition:
Re : Fonction Random selon critères

Bonjour pingouinal, le fil, le forum,

En rédigeant mon précédent messages, je n'avais pas vu pingouinal que vous aviez envoyé un nouveau fichier et j'utilisais l'ancien...

Voici donc le nouveau complété, en tenant compte de vos demandes.

1) Les tirages au sort se font dans la macro tirage_au_sort du Module1, car elle est est appelée en cliquant sur un bouton dans chaque USF.

Si un résultat, c'est à dire une ligne de la feuille, n'est pas trouvée au bout de 2000 tirages (c'est rapide), la macro s'arrête avec un message. La variable Public erreur est mémorisée pour servir dans l'USF1.

2) Le code de l'USF2 est un peu plus difficile à comprendre. En effet en cliquant sur le bouton Autre nom, on crée une collection (déclarée Static pour être mémorisée) des noms trouvés sans doublons.

La macro tirage_au-sort est appelée au maximum 100 fois à chaque clic sur le bouton Autre nom.

A+
 

Pièces jointes

Dernière édition:
Re : Fonction Random selon critères

Bonjour Job75,

Ce n'est pas la peine de s'excuser pour le retard dans la réponse. C'est un forum, pas un service payant. 😀
En tous cas, merci pour le fichier, je viens de le tester rapidement (je vérifierai plus en profondeur après le boulot) et ça a l'air de fonctionner très très bien à la fois si les critères ne trouvent pas de résultat et aussi si je veux un autre résultat sans revenir au premier userform avec en plus le message disant quand tous les choix ont été proposés.

Merci beaucoup pour cela. 🙂

Par contre il me reste une petite question vis à vis de mon message d'hier soir.
C'est maintenant optionnel mais je me demandais si il était possible d'ajouter cette fameuse textbox (ou autre chose) dans mon premier userform me disant le nombre de résultats possibles en fonction des critères sélectionnés.
Je pense que ça doit être réalisable, mais je ne vois pas du tout par où commencer. Donc je serais preneur d'un début de piste.

Encore merci pour cette aide précieuse.
 
Re : Fonction Random selon critères

Re pingouinal,

Effectivement j'avais oublié cette demande performante et facile à satisfaire : il suffit de parcourir la colonne B et sa voisine C en testant les contrôles correspondants.

La macro NombreResu est dans l'USF1, elle est déclanchée par tout clic sur une CheckBox, ainsi qu'à l'ouverture de l'USF1.

Le bouton Résultats est activé ou désactivé suivant le résultat affiché en TextBox1.

Du coup, dans l'USF2 c'est bien plus simple pour arrêter la recherche des nouveaux noms.

J'en ai profité pour apporter une autre amélioration : si on clique sur la croix pour fermer l'USF2, l'USF1 est unloadé, ce qui n'était pas le cas avant (il restait masqué).

Edit : compte tenu de la désactivation du bouton Résultats, j'ai supprimé le test des 2000 tirages et la variable erreur...

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
40
Affichages
4 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…