[REGLE] Coder des références

  • Initiateur de la discussion Initiateur de la discussion eric57
  • Date de début Date de début

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 !

eric57

XLDnaute Occasionnel
Bonjour le forum

Je souhaiterais pouvoir coder des références qu'on rentrerai dans une case, pour obtenir une nouvelle référence "Codé" mais inversement pouvoir retrouver la référence d'origine si je met la réf codé.

J'ai mis un petit tableau Excel qui contient le type de référence d'origines qu'on pourra saisir, ainsi que le format de la référence "codée" qu on devrait obtenir

Merci pour votre aide
 
Dernière édition:
Re : Coder des références

Merci Bebere mais non ce n'est pas du tout ca que je veux

JE veux cacher la référence d'origine fabricant, en la transformant en une référence "cryptée"

Le tableau ne comportera que 2 cellules de travail : La cellule "référence d'origine" et la cellule "référence codée"

De cette manière, un autre utilisateur possédant le même tableau que moi pourra crypté ou décrypté les références.

Plus précisement, le technicien fais une recherche pour un devis. il trouve la référence d'origine de la pièce.

Il l'indique dans la cellule "Ref d'origine" et fait apparaitre sur son devis la réf. codée . Inversement, nous avons nous la possibilité de retrouver la référence d'origine en indiquant dans la cellule "Ref Codée" la référence inscrite sur le devis.

Je sais pas si je me fait bien comprendre sur ce coup là.... j'ai peut être pas décrypté ?? 🙂)
 
Dernière édition:
Re : Coder des références

Non Bebere ce n'(est toujurs pas ca .

Les references d'origines ne sont que 5 exemples parmis les millions de références existantes.

Je voudrais plus simplement entrer dans une cellule une chaine de caracteres (chiffres et lettres) puis "crypter" cette chaine pour obtenir une nouvelle chaine "codée"

Inversement, il faudra qu'en mettant dans la cellule la nouvelle chaine codée, je puisse retouver la chaine d'origine .

Je sais pas si comme ca c'est plus clair ?
 
Re : Coder des références

Bonsoir.

Difficile de coder 12 caractères sur 7.
Deux solutions dans le fichier joint :
En Feuille 1 Codage et décodage (uniquement des 7 premiers caractères) d'après deux fonctions de Serge "Garnote".
En Feuile 2 Génération d'un code unique pour chaque référence, et recherche de la référence avec Equiv() (Nécesssite la possession de la table de correspondnce).
 

Pièces jointes

Re : Coder des références

Bonsoir Victor21

Ta solution ressemble bien à ce que je cherche a faire.

Comme ce n'etait pas vraiement une obligation pour moi de coder sur 7 chiffres, j'ai apporté une petite modif sur la formule.

J'ai regardé ton code "coder" mais là j'ai pas compris grand chose.

J'ai amélioré le tableau pour se rapprocher de la version finale, est il juste possible que la référence codée ne comporte que des chiifres ( en plus CY9 en début) ?

Si ce n'est pas possible, il faudrait surtout ne pas avoir de caractères autres que l'alphabet "classique" et des chifffres
 

Pièces jointes

Dernière édition:
Re : Coder des références

Bonsour®

sourire confus...
selon spécifications :

1- le plus grand nombre décimal que l'on puisse coder sur 7 positions (mélangeant chiffres et lettres)
c'est à dire base 36 (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)
est le nombre décimal : 78364164096 qui ne comporte que 11 chiffres

il sera donc impossible de coder une référence numérique
WHIRLPOOL 481 236 018 125 Toujours 12 chiffres

2- certaines références non codées comporte déja des lettres ce qui laisse à supposer quelles utilisent déja une base alphanumérique c-a-d > base 10...
comme il apparait :
FAGOR 51X3654 toujours 2 chiffres , un X et 4 chiffres
cette base serait au minimum base 34...

mathématiquement parlant, en terme de bijection réciproque il n'y aurai pas de solution !!!

il me semble donc qu'un codage par changement de base ne soit pas la solution,
sauf a envisager peut etre un base supérieure à 36
en d'autre terme un base utilisant chiffres + lettres majuscules + signes
un base 40 pourrait convenir : chiffres + lettres majuscules +"&#!$" par exemple...

la méthode serait alors pour le cryptage :
considérer la reférence fournisseur en base36
conversion en base10 pour passage en base40
ajouter les 0 necessaire devant pour avoir 7 caracteres
puis le prefixe "CY9"

pour le decriptage :
omettre les 3 premiers caractères "CY9"
conversion base40 vers base10
puis conversion vers base36
avec effacement des "0" non-significatifs.

---------------------------------------------

autre façon d'aborder le probleme :
utilisation d'un Hash-Code, mais il faut savoir que dans ce cas il n'y a pas unicité codage/cryptage.
un même cryptage pouvant etre identique pour plusieurs codes...(bijection non réciproque)

sourire...
c'est le cas de la protection des feuilles Excel
 
Re : Coder des références

Bonjour

Comme je l'indiquais dans le dernier message, je ne suis pas obligé de rester sur 7 chiffres. La solution de Victor21 me conviendrait si on pouvait avoir une référence codée avec uniquement chiffres et lettres. Le code s'adaptant au nombres de caractères du code d'origine comme dans le tableau ref-codé2.
 
Re : Coder des références

Bonsour® Patrick

sourire...
j'avais commencé un vrai cryptage Base36 < > base42, mais je bute sur une longueur de chaîne initiale limitée à 11 caractères
que je n'arrive pas à élucider ...


voici 2 fonctions perso : RotCod)Cible, Cle) et RotDec(Cible, Cle)
en m'inspirant de ton exemple précédent :
ce n'est pas un cryptage, mais un codage par permutation
ça ne gagne aucun caractère par rapport à la chaîne à coder
ça rajoute 3 caractères en plus "CY9" (cf. la demande initiale)

Cible est la cellule à coder
Clé est une chaine composée de chiffres et lettre uniquement et sans doublon !!!(vérification non incluse)

Code:
Function RotCod(Target As String, Clef As String) As String
Dim B36Set As String, B36Rot As String
Dim i As Integer
B36Set = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
B36Rot = B36Set
RotCod = "CY9"
'---------------------chaine codage
For i = 1 To Len(Clef)
        B36Rot = Application.Substitute(B36Rot, Mid(Clef, i, 1), "")
Next
B36Rot = UCase(Clef) & B36Rot
'---------------------codage
For i = 1 To Len(Target)
        RotCod = RotCod & Mid(B36Rot, InStr(B36Set, Mid(Target, i, 1)), 1)
Next
End Function
Code:
Function RotDec(Target As String, Clef As String) As String
Dim B36Set As String, B36Rot As String
Dim i As Integer, Cible As String
B36Set = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
B36Rot = B36Set
RotDec = ""
'----- troncature CY9
Cible = Mid(Target, 4, 12)
'---------------------chaine codage
For i = 1 To Len(Clef)
        B36Rot = Application.Substitute(B36Rot, Mid(Clef, i, 1), "")
Next
B36Rot = UCase(Clef) & B36Rot
'---------------------decodage
For i = 1 To Len(Cible)
        RotDec = RotDec & Mid(B36Set, InStr(B36Rot, Mid(Cible, i, 1)), 1)
Next
End Function
 
Re : Coder des références

Merci a vous pour le mal que vous vous donnez.

Finalement je vais retenir la méthode de Modeste Geedee. J'ai modifié un peu le code pour obtenir un meilleur résultat visuel et en cas ou une référence d'origine venait a dépasser les 12 caractères. Je vous met en pièce jointe les derniers essais que j'ai réalisé.

Pour fonctionner sans erreur, la clé ne dois pas avoir + de 9 caractères sinon on obtient un décryptage erroné.
 

Pièces jointes

Dernière édition:
Re : Coder des références

Bonsour® eric57

sourire...
un petit coup de Service Aprés Vente ...
modifications des 2 fonctions personnalisée précédentes :
  • saisie de références(initiale ou codée) insensible à la casse(majuscule/minuscule)
  • Clef de codage passée en paramétre insensible à la casse(majuscule/minuscule)
  • Préfixe passé en parametre : longueur possible=0
  • prise en compte des erreurs de saisie : lettres non accentuées et autres caractères non alphanumériques
  • résultat codage ou décodage en Majuscule

@+
 

Pièces jointes

- 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
Retour