Fonction pour convertir une chaine en un numerique unique.

yml

XLDnaute Nouveau
Bonjour,

Auriez-vous une méthode pour convertir du texte en un nombre unique ?

Mon problème est le suivant : J’ai un listing de références produits qui ont des noms sous forme de texte (exemple : Nike Air, Robe Verte, etc…). J’aimerais pouvoir calculer/créer une référence numérique pour chaque produit (Exemple 01, 02, 324654) .

Il y a-t-il une fonction qui convertir par exemple « Robe verte » en un nombre par exemple « 41684165 » ?

Merci d’avance pour votre aide.

Yann
 

CISCO

XLDnaute Barbatruc
Re : Fonction pour convertir une chaine en un numerique unique.

Bonjour

Deux possibilités en pièce jointe (en colonne C, un classement alphabétique, tout simplement, mais cela n'est utilisable que si tu utilises une liste définitive).

@ plus
 

Pièces jointes

  • yml.xlsx
    9.3 KB · Affichages: 59
  • yml.xlsx
    9.3 KB · Affichages: 63
  • yml.xlsx
    9.3 KB · Affichages: 66

yml

XLDnaute Nouveau
Re : Fonction pour convertir une chaine en un numerique unique.

Bonjour Cisco,

Le problème c'est justement que le listing d'origine peut changer tous les jours et que les "références numérique" doivent toujours correspondre aux mêmes "références texte".
 

Victor21

XLDnaute Barbatruc
Re : Fonction pour convertir une chaine en un numerique unique.

Bonsoir, yml, CISCO :)

Une proposition un peu "bourrin" en pj à adapter en fonction des "références texte" réelles.
Limites (à adapter):
- minimum 4 caractères,
- maximum de caractères communs : les 9 premiers.
 

Pièces jointes

  • ym1.xlsx
    9.9 KB · Affichages: 71

R@chid

XLDnaute Barbatruc
Re : Fonction pour convertir une chaine en un numerique unique.

Bonsoir @ tous,
Salut CISCO, salut Patrick,
sur le fichier de l'ami Patrick,
Code:
=SOMMEPROD(CODE(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))^NBCAR(A1))
@ + +
 

Victor21

XLDnaute Barbatruc
Re : Fonction pour convertir une chaine en un numerique unique.

Bonsoir, l'ami R@chid.

Ah ! y'avait longtemps que tu ne nous avais pas sorti une de tes matricielles ;)
Jolie solution un peu moins i"bourrin" que ma proposition, mais bien plus indigeste : Je n'ai pas encore pigé l'élévation à la puissance :confused:
 

R@chid

XLDnaute Barbatruc
Re : Fonction pour convertir une chaine en un numerique unique.

Re,
Je suis très occupé dans mon nouveau boulot mon ami, j'ai beaucoup de taches à faire, comme il faut tout informatiser, je dois faire beaucoup de travail sur Excel, c'est très fatigant.. :mad:

@ + +
 

CISCO

XLDnaute Barbatruc
Re : Fonction pour convertir une chaine en un numerique unique.

Bonjour à tous, bonjour Victor21, bonjour R@chid

@R@chid : Et voui, est-ce que tu pourrais nous expliquer l'utilité de la puissance, quand tu auras un peu plus de temps ? Merci d'avance.

@ plus
 

david84

XLDnaute Barbatruc
Re : Fonction pour convertir une chaine en un numerique unique.

Bonjour à tous,
sous réserve d'avoir compris la demande, à tester :
Code:
=SOMMEPROD(CODE(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))*LIGNE(INDIRECT("1:"&NBCAR(A1))))
A+
 

CISCO

XLDnaute Barbatruc
Re : Fonction pour convertir une chaine en un numerique unique.

Bonjour à tous, bonjour David84.

Je pense que tu as bien compris la demande de yml. Malheureusement, ta proposition donne le même résultat pour des produits différents. Ex : Albinoni et Vzginona qui donne 3821. Bien sûr, c'est un exemple "tiré par les cheveux", mais bon... Est-ce assez rigoureux pour résoudre le problème de yml ?

Dommage que la fonction CONCATENER ne fonctionne pas en matricielle. Autrement, on aurait pu rendre la proposition de Victor21 un peu plus "simple". Peut être en utilisant une des macros complémentaires sur Morefunc (qui, malheureusement, ne passent pas bien avec Excel 2010 ou Excel 2014)?

@ plus
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Fonction pour convertir une chaine en un numerique unique.

Je pense que tu as bien compris la demande de yml. Malheureusement, ta proposition donne le même résultat pour des produits différents. Ex : Albinoni et Vzginona qui donne 3821. Bien sûr, c'est un exemple "tiré par les cheveux", mais bon...
Effectivement...alors peut-être comme cela :
Code:
=SOMMEPROD(CODE(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))^LIGNE(INDIRECT("1:"&NBCAR(A1))))
A+
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Fonction pour convertir une chaine en un numerique unique.

Bonjour yml, le forum

Pour le fun un essai sans VBA, via une formule itérative.

Attention! Il faut activer dans le menu "Fichier / Options / Formules", le calcul itératif (voir image jointe) et ne pas oublier d'inhiber le calcul itératif à la fermeture du fichier.

Le tableau de la Feuil1 est sous forme (Référence-ID) est de type "Tableau Excel". Une MFC colore la cellule en rouge si on saisit une référence déjà existante.


Pour ceux qui ne veulent pas activer/désactiver le calcul itératif "à la main", j'ai joint une version VBA qui active l'option à l'ouverture du classeur et qui la désactive à la fermeture du classeur.





 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Fonction pour convertir une chaine en un numerique unique.

re-Bonsoir à tous,

La formule du précédent message convenait à une saisie manuelle mais ne résistait pas à un coller en masse de valeurs dans la colonne "Référence"; la formule donnait alors le même résultat pour toutes les références collées.

J'ai donc changé la formule pour une formule plus simple basée sur alea(). En en prenant les 15 premiers chiffres après la virgule, la probabilité d'avoir deux fois la même référence est extrêmement faible. Un contrôle est fait en colonne dans la zone D1:E3.

Deux noms dynamiques ont été créés:
  • LesREF =DECALER(RefID!$A$1;0;0;NBVAL(RefID!$A:$A);1)
  • LesID =DECALER(LesREF;0;1)

La méthode utilisée rend le calcul de l'ID indépendant de la référence puisqu'il n'utilise pas les caractères de la référence. C'est peut-être un inconvénient. L'avantage est qu'on peut modifier l'intitulé de la référence (si on s'est trompé dans l'orthographe par exemple) tout en conservant le même ID. l'ID devient en quelque sorte une clef d’enregistrement de base de donnée.
 

Pièces jointes

  • yml-ID unique v1.xlsx
    10.6 KB · Affichages: 43
  • yml-ID unique v1.xlsm
    17.2 KB · Affichages: 71
Dernière édition:

R@chid

XLDnaute Barbatruc
Re : Fonction pour convertir une chaine en un numerique unique.

Bonsoir @ tous,
Salut David, salut mapomme,
@ CISCO,
Avec ma formule il y a un problème avec par exemple "VRD" et "DRV" ce dernier qui est corrigé sur la 2ème formule de notre ami David..

Par-contre pour MoreFunc, ça passe bien avec 2010, je l'ai installé depuis pas mal de temps, et cette formule matricielle donne bien le résultat de la formule classique de notre ami Patrick,
Code:
=MCONCAT(CODE(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1)))
@ valider par Ctrl+Shift+Enter

@ + +
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 239
Membres
103 497
dernier inscrit
JP9231