Creation d'un ID unique en fonction du Nom

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.
smadon
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 08 oct. 2008 08:08

Creation d'un ID unique en fonction du Nom

Message par smadon »

Bonjour,

Mon Dernier probleme Calc.

Comment Creer un collonne Identifiant en fonction du nom et de la classe de l'etudiant?

J ai mon tableau avec liste des noms des etudiants et leurs classes.
Je souhaiterais une troisieme collonnes qui creer un ID par odre Alphabetique.
Donc exemple :
si etudiant "Albert" Classes 10, ID = 101
Etudiant "John", Classes 10, Id = 103
Etudiant Bernard, Classes 10 ID = 102

J ai essaye avec fonction DECIMAL(NomEtudiant) mais pas suffissant.

Quel Fonction puis je utiliser pr transformer un text en nombre est les trier ?

Merci pour votre aide
PS : je joins un fichier exemple.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Open Office sur plusieur OS : OoO 2.4.1 sur WinXP et OoO 2.4.0 sur Ubuntu 8.0.4
squenson
PassiOOnné
PassiOOnné
Messages : 563
Inscription : 21 avr. 2007 17:27
Localisation : Lausanne, Suisse

Re: Creation d'un ID unique en fonction du Nom

Message par squenson »

Si A1 contient la classe et B1 le nom, je ferais:
C1 = A1 & "-" & B1
Et ensuite je trierais sur la colonne C. (Si la classe peut avoir un nombre variable de chiffres, utiliser TEXTE(A1;"0000") au lieu de A1 dans la formule ci-dessus)

Cela me semble préférable à vouloir un ID qui dépend de l'ordre alphabétique de l'étudiant. Si un "Aaron" arrive en cours d'année, tous les étudiants verront leur ID changer dans cette classe !
LibreOffice 4.2.3.3. sous Ubuntu 14.04
smadon
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 08 oct. 2008 08:08

Re: Creation d'un ID unique en fonction du Nom

Message par smadon »

Merci squeson pour ton aide.

Desole, j ai oublie de presicer pourquoi je voulais cette ID.
ID n'est pas le numero etudiant, c juste pour pouvoir le calcul.
En faites, mon objectif est de pouvoir refaire un trie dans une deuxieme feuille des etudiants en fonction de la clases.

Exemple, si je choisi la classe 10.
J ai uniquement mes etudiants de la classes 10 et si possible dans l autre alphabetique. (Voir sheet2)

J ai joint le fichier

Enfin ce numero pr le retrie me semble difficile a faire.
Je vais peut etre plutot me tourner vers une macro....
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Open Office sur plusieur OS : OoO 2.4.1 sur WinXP et OoO 2.4.0 sur Ubuntu 8.0.4
Avatar de l’utilisateur
Ethernan
Membre hOOnoraire
Membre hOOnoraire
Messages : 137
Inscription : 28 oct. 2008 14:38

Re: Creation d'un ID unique en fonction du Nom

Message par Ethernan »

Bonjour,

Pourquoi ne pas faire un tableau croisé dynamique (pilote de données) ? C'est plus simple...

Ci-joint l'exemple. Le résultat est dans la feuille 4.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 3.4 sous 7 et Fedora 13
squenson
PassiOOnné
PassiOOnné
Messages : 563
Inscription : 21 avr. 2007 17:27
Localisation : Lausanne, Suisse

Re: Creation d'un ID unique en fonction du Nom

Message par squenson »

Voici une formule générique qui retourne un nombre entre 0 et 1 à partir d'une chaîne de caractères de longueur arbitraire en D5 :

Code : Tout sélectionner

=ABS(SIN(SUMPRODUCT(CODE(MID(D5;1+LEN(D5)/240*{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;80;81;82;83;84;85;86;87;88;89;90;91;92;93;94;95;96;97;98;99;100;101;102;103;104;105;106;107;108;109;110;111;112;113;114;115;116;117;118;119;120;121;122;123;124;125;126;127;128;129;130;131;132;133;134;135;136;137;138;139;140;141;142;143;144;145;146;147;148;149;150;151;152;153;154;155;156;157;158;159;160;161;162;163;164;165;166;167;168;169;170;171;172;173;174;175;176;177;178;179;180;181;182;183;184;185;186;187;188;189;190;191;192;193;194;195;196;197;198;199;200;201;202;203;204;205;206;207;208;209;210;211;212;213;214;215;216;217;218;219;220;221;222;223;224;225;226;227;228;229;230;231;232;233;234;235;236;237;238;239;240};1));LOG({2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;80;81;82;83;84;85;86;87;88;89;90;91;92;93;94;95;96;97;98;99;100;101;102;103;104;105;106;107;108;109;110;111;112;113;114;115;116;117;118;119;120;121;122;123;124;125;126;127;128;129;130;131;132;133;134;135;136;137;138;139;140;141;142;143;144;145;146;147;148;149;150;151;152;153;154;155;156;157;158;159;160;161;162;163;164;165;166;167;168;169;170;171;172;173;174;175;176;177;178;179;180;181;182;183;184;185;186;187;188;189;190;191;192;193;194;195;196;197;198;199;200;201;202;203;204;205;206;207;208;209;210;211;212;213;214;215;216;217;218;219;220;221;222;223;224;225;226;227;228;229;230;231;232;233;234;235;236;237;238;239;240;241}))))
C'est loin d'être parfait comme formule, car je ne prend en compte que 240 caractères de la chaîne pour calculer la valeur (après cela bloque). Donc, pour les chaînes très longues, il y a un risque que le remplacement de caractères "bien" situés génère le même résultat. La solution c'est bien sûr de faire une macro qui prendra en compte tous les caractères. Si j'ai le temps...
LibreOffice 4.2.3.3. sous Ubuntu 14.04
smadon
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 08 oct. 2008 08:08

Re: Creation d'un ID unique en fonction du Nom

Message par smadon »

squenson, Merci pr ta formule.

Pasr contre, je ne vois pas bien comment l'appliquer a mon classement.

Quel Chaine dois je appliquer en D5 pour avoir un classement par ordre alphabetique.
Si Je prends le Nom de l'etudiant ("John Doe") en D5 la formule retourne 1 car il y a un espace.
Et si on utlise la formule sans espace, elle ne retourne qu'un nombre en fonction de la taille du nom.
Quel chaine dois je mettre en D5 ?

Merci pr ton aide
Open Office sur plusieur OS : OoO 2.4.1 sur WinXP et OoO 2.4.0 sur Ubuntu 8.0.4
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: Creation d'un ID unique en fonction du Nom

Message par Pierre-Yves Samyn »

Bonjour

Si je ne m'abuse tu ne commentes pas la proposition de Ethernan... Utiliser un pilote de données te permet exactement (en ajoutant la classe en champ de page) d'obtenir ce que tu souhaites : sélectionner la classe et obtenir dynamiquement la liste des élèves triée :
Capture-1.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.