[Catégorie modifiée .Net --> VBA] Excel : algorithme pour coder une chaîne de ca

Barbados16 Messages postés 5 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 18 mai 2010 - 18 mai 2010 à 14:49
Barbados16 Messages postés 5 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 18 mai 2010 - 18 mai 2010 à 19:00
bonjour à tous,

malgré plusieurs recherches sur le net, je n'ai pas trouvé de solutions simples à mon problème. voici ce cque je veux faire :

je pars d'une liste de chaines de caractères (40maxi) que je voudrais transformer en un code unique de 20 caractères maxi pour chaque chaîne.

Vu la quantité à traiter je ne peux pas le faire manuellement.

Je souhaite qu'une chaine me génère toujours le même code :

exple : 6202-ELC-L01-L01-PPF94112 donnera toujours 09778UIR883 par exemple.


Mes connaissances en vba sont assez limités, et je ne sais pas trop comment prendre le problème.

Je pensais par exemple faire la somme des codes ASCII d'une chaîne, mais n'y a-t-il pas plus simple ? (en plus par un méchant hasard on pourrait avoir 2 fois le même numéro...).

Merci par avance de votre aide ou même de vos idées.



ci-joint des exemples des chaines de caractères pour illustrer :

Chaine de caractères : Code unique généré en auto
6202 ==> ZZZZxxxxxxxxx
6202-ELC ==> xxxxxxxxxxxYYYY
6202-ELC-L01
6202-ELC-L02
6202-ELC-L01-L01
6202-ELC-L02-L02
6202-ELC-L01-L01-PPF94112
6202-ELC-L02-L02-PPF85226
6202-ELC-L01-L01-PPF94102
6202-ELC-L01-L01-PPF07129

1 réponse

Barbados16 Messages postés 5 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 18 mai 2010
18 mai 2010 à 19:00
j'ai "bidouillé" quelque chose qui à l'air de fonctionner par une macro VBA Excel.

J'ajoute le code ASCII de chaque caractère de la chaîne (et en option j'ajoute un préfixe).

Merci de vos retours / conseils car je pense qu'il y a plus "propre" comme manière de faire.

Sub char()

Dim a As String

finB = Range("B65536").End(xlUp).Row
debC = Range("C65536").End(xlUp).Row + 1
CodeUs = Range("B2")
D = 0

For j = debC To finB

a = Range("B" & j)
b = Len(a)

   For i = 1 To b

   c = Mid(a, i, b)

   D = D + Asc(c)

   Next i

Range("C" & j) = CodeUs & "-" & D
D = 0
Next j

End Sub
0
Rejoignez-nous