Liste aléatoire sans doublons

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Koudelkate
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 07 sept. 2011 11:46
Localisation : Paris

Liste aléatoire sans doublons

Message par Koudelkate »

Bonjour à tous ! :)

Problème du jour :

J'ai une colonne contenant une liste d'objets (texte) générée aléatoirement grâce à une autre feuille contenant les dits textes.
Je cherche à faire en sorte que les doublons soient impossibles. C'est-à-dire, que, quand il génère l'exact même texte, il relance le calcul jusqu'à tomber sur un texte qui ne soit pas encore affiché.

J'ai cherché sur le forum et suis tombée sur cet article : http://user.services.openoffice.org/fr/ ... ns+doublon qui n'aboutit à aucune solution. Et comme il est très ancien, peut-être y-a-t-il une solution aujourd'hui ?
Sinon en farfouillant sur le net j'ai également trouvé l'option "sans doublons", mais cela supprime les doublons, et ne génère, en aucun cas, un nouveau calcul...

Auriez-vous une idée ? :oops:


Merci d'avance à tous...!
OpenOffice.org 3.3.0 / Windows XP - Service Pack 3
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: Liste aléatoire sans doublons

Message par Jean-Louis Cadeillan »

Bonjour,
Regarde si tu trouves ton bonheur dans ce message.
Cordialement
Jean-Louis
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
Koudelkate
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 07 sept. 2011 11:46
Localisation : Paris

Re: Liste aléatoire sans doublons

Message par Koudelkate »

Bonjour Jean-Louis !

Merci pour le lien, je n'avais effectivement pas trouvé ce message. :)

Cependant j'avoue que je ne comprends pas bien, je suis désolée. :roll:
Le "dépistage" des doublons se fait via =NB.SI(Dates;$C2). Cela génère des chiffres entre 1 et 10. A quoi cela correspond-t-il ? Et surtout comment cela est-il récupéré pour générer un second "check" aléatoire ?

Désolée d'être aussi bouchée... :lol:

Merci pour ta réponse en tout cas. :D
OpenOffice.org 3.3.0 / Windows XP - Service Pack 3
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: Liste aléatoire sans doublons

Message par alhazred »

Bonjour,

Comme d'habitude, un fichier d'exemple, sans données "sensibles" mais reproduisant les situations où "ça coince", faciliterait le travail de tout le monde.
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
Koudelkate
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 07 sept. 2011 11:46
Localisation : Paris

Re: Liste aléatoire sans doublons

Message par Koudelkate »

Bonjour Alhazred,

Bien sûr, avec plaisir.
Voici ledit document. Il contient deux feuilles. La feuille "clothes" contient la liste de tout ce que je vais chercher dans mes fonctions. La feuille "content" est celle générant cette fameuse liste aléatoire dont les doublons doivent être exclus.

Merci !
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice.org 3.3.0 / Windows XP - Service Pack 3
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: Liste aléatoire sans doublons

Message par Jean-Louis Cadeillan »

Bonjour,
Ci-joint le fichier d'échantillonnage aléatoire du message auquel je te renvoyais, avec toutes les formules commentées. Les zones en violet clair sont celles où s'exerce le hasard. J'ai aussi affiché toutes les colonnes et toutes les feuilles.
Je n'ai pas encore regardé ton fichier...
A+
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: Liste aléatoire sans doublons

Message par alhazred »

Merci, Koudelkate, pour ton fichier, je vais pouvoir travailler sur du concret.

En particulier, je me demandais si les données pouvaient en elles-même contenir des doublons (par exemple même texte avec des casses différentes), ce qui ne paraît pas être le cas.

Le fichier fourni par Jean-Louis Cadeillan (mes respects) m'a complètement dissuadé de chercher une solution côté tableur :marto: donc, je m'oriente vers une macro...

À plus..
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
Koudelkate
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 07 sept. 2011 11:46
Localisation : Paris

Re: Liste aléatoire sans doublons

Message par Koudelkate »

Re-bonsoir,

Jean-Louis, je ne sais pas si cela correspond à ce que je cherche : apparemment la vérification ne s'effectue que sur la ligne précédent, hors comme j'utilise un random, je pense que j'aurais besoin d'une vérification qui check l'ensemble du document. Du coup j'ai un peu du mal à voir comment je peux appliquer ton exemple à mon problème... :(

Alhazred, je me doutais bien que la solution se trouverait dans les macros... Malheureusement je crois que c'est un peu compliqué pour moi :lol: Enfin je peux toujours m'y mettre !
En particulier, je me demandais si les données pouvaient en elles-même contenir des doublons (par exemple même texte avec des casses différentes), ce qui ne paraît pas être le cas.
Non, c'est impossible. Dans mon document, chaque cellule de la liste comprend un nom unique, même si leur différence est infime (ex: "SHOES_BOOTS # 1" et "SHOES_BOOTS # 1.2").

Merci pour votre aide en tout cas, je continue à chercher de mon côté... :)
OpenOffice.org 3.3.0 / Windows XP - Service Pack 3
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: Liste aléatoire sans doublons

Message par Jean-Louis Cadeillan »

Le fichier précédent était adapté quand il y avait des doublons dans la liste des articles et donc qu'il fallait choisir au hasard des articles et parmi les articles en double un article au hasard... ce qui n'est pas le cas ici... donc c'est plus simple pour ton problème :mrgreen:
Ci-joint une solution commentée sur la feuille Alea, étape par étape (je n'ai pas condensé les formules et évité toute matrice pour faciliter la compréhension). Les 25 articles échantillonnés sont déjà reportés sur la feuille Content.
koudelkate_03.ods
A+
Jean-Louis
 Ajout : J'ai fait une petite modif en colonne E, car j'avais une erreur VALEUR! avec LibO 3.4.2...
En prime, je joins une version encore plus simple (si, si, c'est possible) utilisant NB.SI()
koudelkate_04.ods
Pour les deux versions, il suffit de faire Maj+ Ctrl+F9 pour changer l'échantillonnage au hasard 
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Jean-Louis Cadeillan le 16 sept. 2011 21:09, modifié 1 fois.
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: Liste aléatoire sans doublons

Message par alhazred »

Bonsoir,

Voilà, j'ai réglé le problème par macros (+ un bouton pour déclencher le tirage)
koudelkate-document1.ods
Tu pourras ajouter des boutons pour les autres niveaux, et bien sûr associer à chacun une macro sur le modèle de Sub Draw.

Quant à Sub DoDraw et surtout Function Combinaison, n'y touche pas; je vais d'ailleurs poster cette dernière, qui peut sans doute intéresser pas mal de monde...
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
Koudelkate
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 07 sept. 2011 11:46
Localisation : Paris

Re: Liste aléatoire sans doublons

Message par Koudelkate »

Bonjour !

Waouh, merci à vous deux, je n'en attendais pas tant... Vous avez tout fait à ma place... :oops:

Par contre j'ai plusieurs questions quant à vos techniques différentes :roll:

Jean-Louis,
cette technique a, effectivement, l'air assez simple ! Ce qui est parfait pour mon niveau... :lol: Mais comment faire pour ajouter du contenu...?
Si j'ajoute des lignes dans la feuille "Clothes", me suffit-il d'agrandir la liste de "Alea" en ajoutant mes nouveaux articles ? Par exemple : =SI($clothes.A188="";"";LIGNE(clothes.A188)) je continue en ajoutant =SI($clothes.A189="";"";LIGNE(clothes.A189)) etc ? Ou la manip est plus complexe que cela ?
Et comment faire si je ne veux traiter qu'une partie de ma liste à la fois ? Par exemple, ne faire une génération aléatoire qu'avec les lignes 5 à 89 de la feuille "clothes" sur les 10 premières lignes de la feuille "content", puis pour les 10 lignes suivantes, ne prendre que les lignes 90 à 180 de la feuille "clothes", etc. La technique que j'utilisais avant pour cela semble poser problème maintenant puisque j'ai de temps en temps une erreur 502.

Alhazred,
comment se servir de cette macro ? Je l'ai bien trouvée mais rien ne se passe quand je clique sur "Draw" ou quand je vais le chercher dans Outils-Macros.
Je pense que je m'y prends mal, ne m'étant jamais servi de macro de ma vie... :roll:


En tout cas merci à vous pour votre travail ! Votre m'aide m'a vraiment été très très précieuse...! :super:
OpenOffice.org 3.3.0 / Windows XP - Service Pack 3
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 3952
Inscription : 06 oct. 2008 08:03

Re: Liste aléatoire sans doublons

Message par Oukcha »

Bonjour,

Je rappelle que cette section n'est pas consacrée aux macros (voir le bandeau rouge en haut de la page). Si vous avez à poursuivre dans cette voie, merci de poster au bon endroit. Ceci dans un but de recherche efficace de l'information dans ce forum.

Si vous postez une solution, faites le en section "Macros et API" et ajoutez dans ce fil un lien vers celle-ci.
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: Liste aléatoire sans doublons

Message par alhazred »

Bonjour,
Koudelkate a écrit :rien ne se passe quand je clique sur "Draw" ou quand je vais le chercher dans Outils-Macros.
Je ne vois que deux explications possibles:
  • (improbable) les macros sont bloquées: si tu as un avertissement à ce sujet à l'ouverture du fichier, ferme-le, puis Menu Options et choisis OpenOffice/Sécurité, clique sur "Sécurité des macros" et choisis le niveau moyen, puis ferme les fenêtres par OK et rouvre le fichier;
  • tu es en mode Ébauche (quand tu cliques sur le bouton, une ancre et des poignées apparaissent); pour le désactiver, affiche la barre d'outils Ébauche de formulaire ou Contrôles de formulaire et clique sur le bouton en forme de main; tout devrait fonctionner.
Koudelkate a écrit :comment se servir de cette macro ?
Pour les autres niveaux, copie-colle la macro Draw, donne-lui un nouveau nom par exemple Draw1 et modifie le nom de la zone visée ainsi que la zone de données; par exemple, pour le niveau 2 de ton fichier, ce sera DoDraw("Content","C15:G15","A90:A188"), puis crée un nouveau bouton et associe l'événement action à la macro Draw1.
Tu peux aussi, si tu désires que le bouton Draw s'occupe à la fois de tous les niveaux, ajouter les lignes correspondantes (DoDraw etc.) dans la macro Draw.
Oukcha a écrit :Si vous avez à poursuivre dans cette voie, merci de poster au bon endroit.
Je pense que le sujet actuel est trop particulier pour faire l'objet d'une solution en Macros; par contre, la fonction centrale (Combinaison), plus généralement utilisable, sera publiée, promis.
 Ajout : Voilà qui est fait ici 
Dernière modification par alhazred le 15 sept. 2011 00:06, modifié 1 fois.
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: Liste aléatoire sans doublons

Message par Jean-Louis Cadeillan »

Bonsoir,
Koudelkate a écrit :Si j'ajoute des lignes dans la feuille "Clothes", me suffit-il d'agrandir la liste de "Alea" en ajoutant mes nouveaux articles ?
Avec cette nouvelle version, oui (voir les notes de cellules et autres commentaires).
Koudelkate a écrit :Et comment faire si je ne veux traiter qu'une partie de ma liste à la fois ?
Voir la feuille Ch(comme Choix). L'idée c'est de mettre, sur la feuille clothes, un 1 sur la ligne de l'article qui doit participer au tirage aléatoire, ce qui te permet de constituer n'importe quelle sous-collection.
Maintenant, il t'appartient de voir comment tu vas chercher les n° de lignes qui te conviennent dans les items de Content. Tu peux par exemple faire plusieurs feuilles de type Content, une par type d'échantillonnage.
A+
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1