Re : Création des codes alphanumériques à partir des noms et dates de naissance
Bonjour
Pour t'aider, une petite explication :
J'ai défini le nom dixpremiers dans -->Formules-->gestionnaire de noms comme suit :
dixpremiers=GAUCHE(A16;3)&GAUCHE(B16;1)&TEXTE(JOUR (C16);"jj")&TEXTE(SI(D16="F";MOIS(C16)+50;MOIS(C16 ));"00")&DROITE(ANNEE(C16);2)
parce que je l'utilise deux fois dans la formule finale, histoire de ne pas avoir à écrire une formule longue. Ainsi, Excel, avec dixpremiers, va chercher les 3 premiers caractères de A16 avec GAUCHE(A16;3), auquel il ajoute le premier caractère de B16 avec &GAUCHE(B16;1) et ainsi de suite. Le & remplace la fonction CONCATENER.
Si tu as du mal à comprendre cette formule, écris là dans une cellule précédée du signe égale, puis :
* soit clique dans la barre de formule sur chacune des fonctions. Une fenêtre s'ouvrira, te détaillant les paramètres utilisés et les résultats obtenus
* soit surligne chaque partie de la formule dans la barre de formule, puis F9. Le résultat de la partie surlignée apparaîtra dans la barre de formule. Echap pour revenir à l'affichage normal.
* soit --> Formules --> Evaluation d'une formule (la petite loupe avec fx). Tu verras le détail des calculs dans la nouvelle fenêtre.
Avec dixpremiers, j'ai les dix premiers caractères du code que tu désires, par exemple GARS150590. Manque plus qu'à compléter la formule pour avoir les deux derniers. Si c'est la première fois qu'on obtiens ce code dans la colonne G, GARS150590, il faut lui rajouter 01, si c'est la seconde fois, 02, la troisième, 03 et ainsi de suite.
En G16, la formule dixpremiers&TEXTE(SOMMEPROD((dixpremiers=GAUCHE(G$15:G15;10))*1)+1;"00") compare dixpremiers au 10 premiers caractères de G15 avec dixpremiers=GAUCHE(G$15:G15;10), donc à "", et renvoie FAUX (dixpremiers n'est pas égal à ""). (dixpremiers=GAUCHE(G$15:G15;10))*1 donne 0 (=FAUX*1) et SOMMEPROD((dixpremiers=GAUCHE(G$15:G15;10))*1)+1 renvoie 0+1, donc 1. TEXTE(0;"00") donne 01.
Et on recommence presque la même chose en dessous.
En G21, la formule dixpremiers&TEXTE(SOMMEPROD((dixpremiers=GAUCHE(G$15:G20;10))*1)+1;"00") compare, avec la partie dixpremiers=GAUCHE(G$15:G20;10), le nom dixpremiers, c-à-d BOUJ180994, non plus seulement à G15, mais à G15, G16, G17, G18, G19 et G20, ce qui donne {FAUX;FAUX;FAUX;FAUX;VRAI;FAUX}, qui, une fois *1, donne {0;0;0;0;1;0}. Cela donne avec SOMMEPROD(....)+1 le nombre 2, et avec TEXTE, les caractères 02.
La formule fonctionne grâce au SOMMEPROD, car, si on avait écrit seulement SOMME, la comparaison ne porterait que sur G15, pas sur la série G15, G16, G17... même si c'est écrit GAUCHE(G$15:G20.
@ plus